SQLの分類
SQL ( Structured Query Language ) は、RDBに対する問合せ言語です。SQLはプログラム言語の一種ですが、C言語やJava言語といった言語と異なり、RDBを操作することだけを目的とした言語です。
SQLが、C言語やJava言語と異なるのは、プログラム中に処理の方法を記述しないことです。C言語やJava言語では、データを取り出すときに、どのようにデータを取り出すかをプログラムで指定する必要があります。それに対してSQLでは、対象となるデータが何であるかは指定しますが、データを取り出す方法までは、記述する必要がありません。そのため、SQLは「非手続き言語」と呼ばれ、C言語やJava言語は「手続き言語」と呼ばれます。
SQLは、名前からするとデータ問合せだけの言語のように思えますが、データの定義、データベースの制御といったこともできます。
SQLは、RDBを操作する種類により大きく3つに分類されます。
- データ操作言語 DML ( Data Manipulation Language )
- データ定義言語 DDL ( Data Definition Language )
- データ制御言語 DCL ( Data Control Language )
この3種類の命令を組み合わせて使うことにより、RDBを効率よく操作することができます。それでは、それぞれについて解説していきます。
データ操作言語 DML
データ操作言語は、データを取得したり、データを追加したりするときに利用する言語です。主な操作言語には、次のようなものがあります。
- SELECT データの取得
- INSERT データの追加
- UPDATE データの更新
- DELETE データの削除
データ定義言語 DDL
- CREATE データベース、表、ビューなどの作成
- ALTER データベース、表の構造の変更
- DROP データベース、表、ビューなどの削除
データ制御言語 DCL
データ制御言語は、データベースを制御するときに利用する言語です。次のようなものがあります。
- GRANT ユーザーに対しての権限の付与
- REVOKE ユーザーからの権限の剥奪
- COMMIT データ変更の確定
- ROLLBACK データ変更の取り消し
SQLの利用の仕方
SQLはRDBを操作する標準言語であるため、さまざまな製品でサポートされ、それぞれの製品から利用することが可能となっています。SQLをどのように使うかを大まかに分類すると、次のように分けることができます。
- 直接問合せ
- 埋め込み
- モジュール呼び出し
直接問合せ
直接問合せは、RDBに対して直接SQLを実行することを意味します。直接SQLを実行するにはRDBMS製品に付属しているSQLの問合せツールを使います。ORACLEではSQL*Plus、MS-SQL Serverではクエリアナライザになります。
直接問合せは、簡単な問合せを行うには便利ですが、複雑な問合せを行うのには向きません。そのため、管理者、開発者がちょっとした問合せを行うときに使うことが多いでしょう。
埋め込み
データベースへの問合せはさまざまなプログラムにより行われるので、SQLはさまざまなプログラム言語中で使われることになります。SQLを埋め込むプログラム言語のことをホスト言語と呼びます。
ホスト言語では、通常SQL言語を直接解釈することができません。そのため、SQLをプリコンパイルし、ホスト言語が解釈できる形に変換して使っています。
埋め込みSQLは、問合せに用いる引数を変更しながら問合せを行うことができますが、SQLの問合せ自体を変更しながら問合せることはできません。そのため、この方法を「静的SQL」と呼ぶこともあります。
なお、静的SQLの逆となる動的SQLは、定型のSQLに対してパラメータを渡すのではなく、ホスト言語の問合せごとにSQL自体を生成するものです。
モジュール呼び出し
SQLで記述されたモジュールをプログラムから呼び出すことにより、データベースへの問合せを行うのが、モジュール呼び出しです。モジュールはRDBMS製品により呼び方が異なるので、マニュアルなどで名前を確認してください。関数やストアドプロシージャと呼ばれることもあります。
モジュールへは、呼び出しのときに引数としてパラメータを渡すことができます。そして、戻り値として問合せの結果を取得することができます。
また、モジュール呼び出しを行うにはモジュールを呼び出す機能がホスト言語に実装されている必要があります。
次の章に進む
この第1章は概要であり、後でまた詳しく説明する内容が多いので、次の章に進みましょう。第2章からは、より実践的な内容となります。