II-22-4. リレーショナルデータベースとSQL

関係データベースをアクセスするための基本的な技術であるStructured Query Language (SQL)の構造、原理、動作仕様、種類、特徴などについて解説する。またSQLの標準化といった関連情報も紹介する。

【学習の要点】

* SQLはRDBのデータ定義や操作を行うために開発された非手続き型のデータ言語である。

* SQLにはデータ定義、問合せ、データ更新、埋め込み型SQLなどがある。

* ANSI及びISOで言語仕様の標準化が行われており、制定年によりSQL92、SQL99、SQL2003などがある。

図II-22-4.SQL製品と標準化規格の発展

【解説】

1) SQLとは

SQLとは、Structured Query Language の頭文字を取ったもので、RDBのデータ定義や操作を行うために開発された非手続き型のデータ言語である。RDBMSのほとんどが、データ操作言語としてSQLを採用している。

SQLは、E.F.Codd氏の論文をもとに、IBMのSanJose研究所で開発されたデータベースシステムSystem Rに実装されたSEQUELという言語を発展させたものといわれている。SQLは、使いやすさに優れていたため、それに倣ったRDMBS製品が多数リリースされるようになった。

SQLは各RDBMS間で記述方法の共通点は多いものの、独自拡張などの異なる点も多くあるため、互換性向上を目的としてSQL92、SQL99などの標準化規格が制定されている。オープンソースRDBMSでもこれらの仕様の一部が取り入れられている。

最新の規格はSQL2003で、デーブルXMLのデータに変換するXML連携等の仕様が追加されている。この仕様の一部を取り入れたオープンソースRDBMSも存在する。

2) SQLの命令の種類

主なSQL命令にはデータ定義命令(DDL)、データ操作命令(DML)、データ制御命令(DCL)の三種類に分類できる。

* データ定義命令(DDL)

データベースやテーブルの削除、登録、変更等、データベースの構造や整合性制約を定義する。

- CREATE データベースやテーブルを作成する

- DROP データベースやテーブルを削除する

- ALTER データベースやテーブルを変更する

* データ操作命令(DML)

データ行の削除、登録、変更等、データの操作を行う。

- SELECT テーブルからデータ行を取得する

- INSERT テーブルにデータ行を追加する

- DELETE テーブルからデータ行を削除する

- UPDATE テーブルの既存データ行を更新する

* データ制御命令(DCL)

データベースのユーザ権限の管理やデータのトランザクション処理を行う。

- GRANT 権限を付加する

- REVOKE 権限を剥奪する

- COMMIT 変更内容を確定する

- ROLLBACK 変更内容を取消する

3) 埋め込みSQL

プログラミング言語でSQLを用いるための方法の一つとして、親となるプログラム中にSQL(DML)を直接記述して使用できる、埋め込み型SQLがある。

OSS Course Naviのコンテンツは IPA OSS モデルカリキュラムを基としています。