SQL
更新 : 2007 年 11 月
SQL (Structured Query Language) は、リレーショナル データベースに対して定義、クエリ、更新などのデータ操作を行うための言語です。SQL 構文でステートメントを記述すると、条件を指定してレコードを抽出できます。
メモ : |
---|
この内容は、MFC ODBC クラスに該当します。MFC DAO クラスを使用している場合は、DAO ヘルプの「Comparison of Microsoft Jet Database Engine SQL and ANSI SQL」を参照してください。 |
SQL ステートメントの先頭には必ず CREATE や SELECT などのキーワードとなる動詞を記述します。SQL は、単一のステートメントでテーブル全体を操作できる強力な言語です。
SQL には多くのバージョンがあり、それぞれ特定の DBMS を対象に開発されています。MFC データベース クラスは、X/Open と SQL Access Group の CAE (Common Applications Environment) SQL ドラフト仕様 (1991) に準拠した SQL ステートメントを認識します。これらのステートメントの構文については、MSDN ライブラリ CD の『ODBC Programmer's Reference』の「Appendix C: SQL Grammar」を参照してください。
このトピックでは、次の内容について説明します。
ODBC (Open Database Connectivity)
データベース クラス
データベース クラスが SQL を利用するしくみ
ODBC (Open Database Connectivity)
データベース クラスには ODBC が実装されています。ODBC では、呼び出しレベルのインターフェイスで SQL を使用するので、SQL コマンドをコードに埋め込みません。ODBC は、SQL を使用し、ODBC ドライバを通じてデータ ソースとデータをやり取りします。ODBC ドライバは、SQL を解釈し、必要に応じて、特定のデータベース形式 (Microsoft Access 形式など) に変換します。ODBC での SQL の使用方法の詳細については、「ODBC の基礎」および MSDN ライブラリ CD の『ODBC Programmer's Reference』を参照してください。
データベース クラス
データベース クラスは、既存のデータ ソースのデータを操作および更新できるようにデザインされています。ほとんどの SQL ステートメントは、MFC のアプリケーション ウィザード、MFC ODBC コンシューマ ウィザード (クラスの追加から使用)、およびデータベース クラスによって自動的に生成されます。
データベース クラスは、SQL 内の DML (Data Manipulation Language) と呼ばれる部分を使用します。DML のコマンドで、データ ソースの一部または全体を操作することも、レコードを新規作成、編集、削除することもできます。次の表に、主な SQL キーワードとデータベース クラスでの使い方を示します。
主要な SQL キーワード
SQL キーワード |
ウィザードとデータベース クラスにおける使い方 |
---|---|
SELECT |
データ ソース内のテーブルと列を選択する。 |
WHERE |
選択範囲を限定するフィルタを指定する。 |
ORDER BY |
レコードセットの並べ替え順序を指定する。 |
INSERT |
レコードセットに新規レコードを挿入する。 |
DELETE |
レコードセットからレコードを削除する。 |
UPDATE |
レコードのフィールド値を変更する。 |
データベース クラスは、ODBC ステートメント CALL も認識します。このステートメントでは、一部のデータ ソースに対して定義済みクエリ (ストアド プロシージャ) を呼び出すことができます。ODBC データベース ドライバは、これらのステートメントを解釈し、各 DBMS 向けのコマンドに変換します。
メモ : |
---|
CALL ステートメントをサポートしない DBMS もあります。 |
ユーザーが CRecordset::Open で指定したステートメントをデータベース クラスが認識できないと、そのステートメントはテーブル名と見なされます。
フレームワークでの SQL ステートメントの作成方法については、「レコードセット : レコード選択のしくみ (ODBC)」および「SQL : レコードセットの SQL ステートメントのカスタマイズ (ODBC)」を参照してください。
SQL データベースで使用するデータ型は、C および C++ のデータ型に似ています。詳細については、「SQL : SQL と C++ のデータ型 (ODBC)」を参照してください。
SQL の詳細については、MSDN ライブラリ CD の『ODBC Programmer's Reference』を参照してください。使用できる SQL ステートメントおよびデータ型の一覧、SQL 文法の詳細、SQL の関連資料などがわかります。
データベース クラスが SQL を利用するしくみ
データベース クラスから派生したレコードセット クラスでは、ODBC を使ってデータ ソースとやり取りします。ODBC は、SQL ステートメントを送出してデータ ソースのレコードを取得します。このトピックでは、データベース クラスと SQL の関係について説明します。
レコードセットは、SQL ステートメントの要素を 1 つの CString 文字列にまとめることによって、SQL ステートメントを構築します。この文字列は、SELECT ステートメントとして構築され、一連のレコードを抽出します。
レコードセットが ODBC を呼び出してデータ ソースに SQL ステートメントを送ると、ODBC ドライバ マネージャは、ステートメントを ODBC ドライバに渡します。ODBC ドライバは、このステートメントを DBMS に渡します。DBMS が抽出したレコードを返すと、ODBC ドライバは、このレコードをアプリケーションに返します。アプリケーションのデータベース クラスは、レコードの値を CRecordset から派生したタイプ セーフな C++ クラスに保存するので、プログラムからこれらの値にアクセスできます。
データベース クラスでの SQL の使用方法の詳細については、次のトピックを参照してください。