SQL(エスキューエル)は、リレーショナルデータベースマネージメントシステム (RDBMS) において、データの操作や定義を行うためのデータベース言語(問い合わせ言語)である。リレーショナルデータベースの関係モデルにおける演算体系である、関係代数と関係論理(関係計算)にある程度基づいている。 データベース言語としてのSQLは何かの略語ではない[1]。
SQLは、シークェル [?si?kw?l] と読まれることもある。これは、SQLの元となったデータベース言語が、IBM社が開発したRDBMSの実験実装である System R の操作言語「SEQUEL(Structured English Query Language)」であったことが由来である。
SQLに対しては、関係代数と関係論理に忠実に準拠していないとして批判する意見がある。
目次
1 標準SQL規格
2 SQLとオンライン処理
3 SQLとバッチ処理
4 Javaとデータベース
5 SQLの対話的実行
6 SQL文法
6.1 コマンド種別
6.2 コマンド文法
6.2.1 データ定義言語
6.2.2 データ操作言語
6.2.3 データ制御言語
6.2.4 カーソル定義・操作
6.2.5 動的SQL
6.2.6 埋め込みSQL
6.2.7 3値論理
7 主な商用SQLサーバ製品
8 関連項目
9 脚注
//
当初は特に統一標準規格が存在しない状況で、各リレーショナルデータベースマネージメントシステム (RDBMS) ベンダーごとに様々な拡張がなされてきた。 近年になってANSI、後にISOで言語仕様の標準化が行われており、制定された年ごとにSQL86、SQL89、SQL92、SQL:1999、SQL:2003 などの規格があるが、対応の程度はベンダーごとにバラバラなのが実情である。これは標準SQL策定に時間がかかりすぎたことにより、ビジネスの現状から早期の機能拡張が迫られたベンダーの都合と、独自構文を頻繁に利用していたユーザに対し、互換性保持を保障する必要もあったためである。
SQL規格は非常に多くの改正が行われた。制定年度順に代表的な規格を以下に挙げる。
年規格名称別称説明
1986SQL86SQL87ANSIによって最初に発表された最初の規約。1987年にISOによって批准された。
データ操作言語 (DML) 仕様策定: COBOL、FORTRAN、PL/Iなど、親言語(母言語、ホスト言語とも言う)への埋込みSQL文仕様策定
1989SQL89 マイナーバージョン。
データ定義言語 (DDL) 仕様策定 (CREATE TABLE文、CREATE VIEW文、GRANT文。ただし、DROP文、ALTER文、REVOKE文はなし)
制約および整合性機能を追加 (DEFAULT、UNIQUE制約、NOT NULL制約、PRIMARY KEY制約、CHECK制約、参照整合性制約)
C言語への埋込みSQL文仕様の追加
1992SQL92SQL2メジャーバージョン
直交性の改善 (表式)
データ型の拡張 (可変長文字列、ビット、文字集合、日付・時刻・時間間隔 (DATE, TIME, TIMESTAMP))
外部結合 (OUTER JOIN)
定義域 (DOMAIN)
表明 (ASSERTION)
一時表 (TEMPORARY TABLE: 永続化しないデータを格納)
DDL仕様追加 (DROP文、ALTER文)
動的SQL仕様
前方・後方スクロール可能なカーソルサポート
クライアント/サーバシステムのためのCONNECT/DISCONNECT文
1995SQL/CLI コールレベルインターフェース (Call Level Interface)
業界標準になった ODBC API のインタフェースに相当する機能を国際標準化した規格
1996SQL/PSM 永続格納モジュール (Persistent Storage Module)
一般的にストアドプロシージャと呼ばれる機能を国際標準化した規格
1999SQL:1999
(SQL99)SQL3RDBMSのための完全な言語になることを目指した仕様。[2]
正規表現による値照合再帰的クエリー
OLAP (ROLLUP、CUBE、GROUPING SETS)
ユニオン・結合経由の更新
カーソル操作の機能強化 (トランザクション完了後のオープン状態保持)・ユーザ定義権限 (ROLE)・トランザクション管理の新機能 (SAVEPOINT)