私たちは、誰かに仕事をお願いするときには言葉という言語を使って仕事をお願いします。SQLとはリレーショナル・データベースに対して、仕事(処理)をお願いする為の言葉(言語)になります。SQLの具体的な使い方については次回にお話するとして、ここではSQLとはどういうものなのかをお話します。
では、そのSQLはどのような言語なのでしょうか? SQLは英語でのStructured Query Languageの頭文字をとってそう呼ばれています。SQLはリレーショナル・データベース用標準言語として、米国規格協会(ANSI)および国際標準化機構(ISO)などの標準化団体において標準化がおこなわれています。SQL92規格やSQL99規格が有名ですが、最新の規格はSQL:2003です(なぜか区切り文字にコロンがついています)。このSQLには、表1のような3つの種類があります。データを問い合わせする「データ操作」以外にも、データを格納する表を作成するための「データ定義」などがあります。
データ定義 |
|
---|---|
データ操作 |
|
データ管理 |
|
さて、言語というとC言語やJavaのようなプログラミング言語を想像しませんでしたか?プログラミング言語となると、思わず身構えてしまう読者もいらっしゃるでしょう。大丈夫です。SQLはC言語やJavaのような手続き型(何かを行うのに手続きが必要なプログラミング言語)ではなく、非手続き型(宣言型)と言われています。利用者がデータを検索したいとき、結果をどのようにして取得するかという「手続き」は記述しないのです。
例えば、利用者がデータを取得したいという場合には、「従業員表から鈴木さんのデータを取得して!」というように、「どのように取得するのか」という手続きを書くのではなく、「何をしたいのか?」を宣言するだけでよいのです。表2に、代表的なSQLの命令をまとめました。先ほどの例では、取得でしたので、「SELECT」を利用します。その他にも、データの追加であれば「INSERT」と、とても直観的でわかりやすい言語であることが想像できるかと思います。
データ定義言語 (Data Definition Language:DDL) |
|
---|---|
データ操作言語 (Data Manupulate Language:DML) |
|
データ管理言語 (Data Control Language:DCL) |
|
余談ですが、先ほどSQLはStructured Query Languageの略と言いましたが、正確に言うと標準規格のSQLについては、公式には略というものが存在しないということになっています。SQLという名前の由来は、IBMが開発したSEQUEL(Structured English Query Language)という言語の名前から(このSEQUELが他社の登録商標だったとか)生まれた名前です。標準SQLもこのSEQUELを元として標準化された言語であるのでSQLをStructured Query Languageの略として紹介する内容の書籍が多いようです(ちなみにSEQUELはシークェルと読みます。ですので、書籍の中には、SQLをエスキューエルの他にシークェルと読むとしているのもあります)。
今回から本連載の本題となるリレーショナル・データベースについて、どのように構成されているのか。そしてその構成要素がどんな役割を果たしているのかをお話しました。リレーショナル・データベースでも、商用のもの、オープンソースのもの様々ありますが、今回お話した内容はどのリレーショナル・データベースにおいても基本的な内容ですので、しっかりと覚えてくださいね。次回はSQLについて詳しくお話したいと思います。
筆者紹介
鈴木浩司(すずき こうじ)
日本オラクル株式会社 システム製品統括本部
クロスインダストリービジネス推進本部
担当製品:
Oracle Fusion Middleware
経歴:
SI企業にて、約8年システム開発に携わる。日本オラクルに営業として入社。エンジニアにコンバートされ、Java,SOA,IDM製品を担当。現在に至る。
一言:
連載もいよいよSQLの話に入ってきました。実際にSQLを実行できるようにDBMSをインストールしてみませんか? Oracleデータベースはインストールが難しいって聞いた?そんな話は過去の話です。今ではサルでもインストールできます(2003年のOrale Worldでは実際にサルのモモちゃんがOracle Database 10gをインストールしました)。
オラクルでは、こうした都市伝説を検証しています。詳しくはこちら