SQLは、一般にデータベース内のテーブルを操作する言語と捉えられがちですが、その対象はテーブルだけではありません。テーブルの生成や削除、テーブル同士の関連付け(リレーションの設定)、トランザクションの管理・制御などなど、データベース全体を制御・管理するための命令体系です。SQLでどのような制御や管理ができるのかは、回を追って、具体的な例と共に紹介していきます。ここでは、SQLの持つ大きな2つの特徴を見ておきましょう。
- データベースの共通言語 -
SQLの大きな特徴は、様々なデータベースに対する共通言語であることです。
SQL Server、Oracle、SQL Anywhere、PostgreSQLなどなどたくさんのRDBMSが流通し、それらはそれぞれ独自のデータベース制御機構――データベース・エンジンを搭載しています。このデータベース・エンジンが、実質的にデータベースに対する操作を担当するわけですが、その構造は(当然のことながら)RDBMSごとに異なっています。
RDBMSはエンドユーザーが直接操作するものではなく、アプリケーションのユーザーインターフェイスを介して扱います。つまりアプリケーションの中に、データベースを操作するための処理を記述しなければなりません。データベースに対する命令手段がRDBMSごとに異なっていては、作成したアプリケーションは対象となるRDBMS専用ということになり、RDBMSを入れ替えるたびにアプリケーションまで作り直さなければならなくなります。
SQLという共通言語を用いることで、この問題は解決します。アプリケーションを開発するための言語が何であれ、その中からデータベースを制御するための命令は、すべて同じ命令体系と文法でまかなえるのです。
- 単純なテキスト命令 -
SQLのもう一つの特徴は、SQLによる命令文が「テキストで記述できる単純な構造」であることです。
SQLは、プログラムの中から発行されるデータベース制御言語です。そのため、アプリケーションのソースコード中にデータベースを制御するための命令をSQLで記述しなければなりません。
ソースコードの中に記述できるためには、ソースコードと同じテキスト形式の命令体系でなければなりません。これによって、どのようなプログラミング言語からでも、同じ形式でデータベースの制御処理を記述できるのです。
現在主流となっているコンポーネント・プログラミングでは、たとえばADO(ActiveX Data Objects)コントロールのようなビジュアル・コンポーネントをフォームに貼り付け、GUIによる設定でデータベースの制御処理を組み立てられます。しかし最終的には、すべてSQLによるテキストとしてRDBMSに送られます。プログラマーからはそれが見えないだけなのです。
- 動的な処理を記述できる -
SQLがテキスト――つまり文字列による命令文であることは、開発するプログラムに大きな柔軟性を与えてくれます。ほとんどのプログラミング言語は、文字列処理命令を持っています。そのため、データベースに対する命令を、プログラムのそのときの状況に合わせて、動的に切り替えることができるのです。
例えば、
「商品」テーブルから「商品番号=100132」の商品のレコードを抽出せよ
という命令を文字列定数としてしまうと、他の商品を抽出する命令を別に記述しなければならなくなります。そこでプログラム中に変数xを用意し
「商品」テーブルから「商品番号=x」の商品のレコードを抽出せよ
という命令を作っておけば、変数xに代入された商品番号に該当するレコードを抽出できるようになります。具体例は回を追って紹介しますが、これにプログラミング言語の持つ文字列の連結や置換命令を加えれば、SQLによるデータベース制御は状況に合わせて変幻自在に切り替わります。
SQLの正式名は“SQL”
よく「Structured Query Language(構造化照会言語)」の略称だと言われますが、現在では「SQL」が正式名称です。SQLの元々の機能は、テーブル内のレコードを並べ替えたり、特定の条件を満たすレコードを抽出したりするなど、もっぱらテーブルの操作に重点が置かれており、「構造化照会言語」という名称にふさわしいものでした。
しかし現在のSQLは、単なる「データベースへの問い合わせ用言語」ではなく、既に説明したように、データベースの管理や制御を含む包括的な「データベース制御言語」となっています。
SQLは、時代に合わせてその使用を進化させてきました。1989年と1992年に相次いで行われた改訂で、データベースの管理機能(整合性の制御、データ管理、データ定義など)が追加されました。また、ODBC(Open Database Connectivity)仕様に準拠したDBMS(データベース管理機構)が、ODBCドライバを介することで共通のSQLを扱えるようにもなりました。後にはJDBC(Java Database Connectivity)も策定され、JavaプログラムからもSQLでデータベースを制御できるようになりました。
1992年に策定されたSQLの仕様がいわゆる「SQL2」と呼ばれるもので、現在最も普及している仕様です。
その後1999年には「SQL3(SQL-99)」と呼ばれる仕様が策定され、そこではオブジェクト指向の概念が取り入れられ、知識ベースのサポート、再帰クエリ、ユーザー定義型など様々な機能強化が施されています。
ただ、オブジェクト指向データベースは学術・研究分野で分子式や人工知能など複雑な処理を構築するためには有効ですが、現在の一般的な業務アプリケーションには適していないため、現在のところあまり広まっていません。 |
|
|
|