SQL
SQL (構造化照会言語) は、データの定義、照会、変更、制御を可能にするリレーショナル データベースと通信する方法です。 SQL 構文を使用することで、指定した条件を満たすレコードを抽出するステートメントを構築できます。
Note
この情報は、MFC ODBC クラスに該当します。 MFC DAO クラスを使用している場合、DAO Help の「Comparison of Microsoft Jet Database Engine SQL and ANSI SQL」 (Microsoft Jet Database Engine SQL と ANSI SQL の比較) というトピックを参照してください。
SQL ステートメントは、CREATE や SELECT など、キーワード動詞から始まります。 SQL は非常に強力な言語であり、1 つのステートメントがテーブル全体に影響を与えることがあります。
SQL にはさまざまなバージョンが存在します。いずれも特定の DBMS を念頭に開発されています。 MFC データベース クラスでは、X/Open と SQL Access Group Common Applications Environment (CAE) SQL ドラフト仕様 (1991) に対応する一連の SQL ステートメントが認識されます。 これらのステートメントの構文については、「ODBC プログラマーズ リファレンス」ドキュメントの「付録 C」を参照してください。
このトピックでは、次の内容について説明します。
ODBC (Open Database Connectivity)
データベース クラスは ODBC で実装されます。ODBC では、コードに SQL コマンドを埋め込むのではなく、呼び出しレベルのインターフェイスで SQL が使用されます。 ODBC では、ODBC ドライバー経由でデータ ソースと通信する際、SQL が使用されます。 このようなドライバーでは、SQL が解釈され、必要に応じて、Microsoft Access など、特定のデータベース形式で使用する目的で変換されます。 ODBC による SQL の使用の詳細については、ODBC に関するページと「ODBC プログラマーズ リファレンス」ドキュメントを参照してください。
データベース クラス
Note
MFC ODBC コンシューマー ウィザードは、Visual Studio 2019 以降では利用できません。 引き続き、コンシューマーを手動で作成することはできます。
データベース クラスは、既存のデータ ソースでデータを操作し、更新できるように設計されています。 MFC アプリケーション ウィザード、MFC ODBC コンシューマー ウィザード ([クラスの追加] 経由でアクセス)、データベース クラスでは、ほとんどの SQL ステートメントが自動的に構築されます。
データベース クラスでは、データ操作言語 (DML) と呼ばれる SQL の一部が使用されます。 これらのコマンドでは、データ ソースの全部または一部を使用したり、新しいレコードを追加、編集、削除したりできます。 次の表は、最も一般的な SQL キーワードとデータベース クラスによるその使用方法をまとめたものです。
一般的な SQL キーワード
SQL キーワード | ウィザードとデータベース クラスでそれを使用する目的 |
---|---|
SELECT | データ ソースの中から使用されるテーブルと列を特定する |
WHERE | 選択を絞り込むフィルターを適用する |
ORDER BY | レコードセットに並べ替え順序を適用する |
INSERT | レコードセットに新しいレコードを追加する |
DELETE | レコードセットから新しいレコードを削除する |
UPDATE | レコードのフィールドを変更する |
また、データベース クラスでは、ODBC CALL ステートメントが認識されます。このステートメントを利用し、事前定義されたクエリ (またはストアド プロシージャ) を一部のデータ ソースで呼び出すことができます。 ODBC データベース ドライバーではこれらのステートメントが解釈され、各 DBMS に適したコマンドが代用されます。
Note
一部の DBMS では CALL ステートメントがサポートされていません。
クラスで CRecordset::Open
のユーザー指定のステートメントを認識できない場合、テーブル名として解釈されます。
フレームワークを使って SQL ステートメントを構築する方法の説明については、「レコードセット: レコード選択のしくみ (ODBC)」と「SQL: レコードセットの SQL ステートメントのカスタマイズ (ODBC)」を参照してください。
SQL データベースでは、C と C++ で使用されるものに似たデータ型が使用されます。 これらの類似点の詳細については、「SQL: SQL と C++ のデータ型 (ODBC)」を参照してください。
サポートされている SQL ステートメントの一覧、データ型、SQL の主要な文法、SQL に関するお勧めの発行物一覧など、SQL の詳細については、Microsoft SQL ドキュメントを参照してください。
データベース クラスで SQL を使用する方法
データベース クラスから派生されたレコードセットでは、データ ソースと通信するために ODBC が使用されます。ODBC では、SQL ステートメントを送信することでデータ ソースからレコードが取得されます。 このトピックでは、データベース クラスと SQL の関係について説明します。
レコードセットでは、SQL ステートメントの断片を集めて CString
を組み立てることで SQL ステートメントが作られます。 文字列は SELECT ステートメントとして構築されます。このステートメントからは一連のレコードが返されます。
SQL ステートメントをデータ ソースに送信する目的でレコードセットにより ODBC が呼び出されるとき、ODBC Driver Manager によってステートメントが ODBC ドライバーに渡され、ドライバーによってそれが基礎 DBMS に送信されます。 DBMS によってレコードの結果セットが返され、ODBC ドライバーによってアプリケーションにレコードが返されます。 データベース クラスによって、CRecordset
から誘導されたタイプ セーフな C++ クラスの結果セットにプログラムはアクセスできます。
次のトピックでは、データベース クラスによって SQL が使用されるしくみについて説明します。