この項目では、データベース言語について説明しています。マーケティング活動の文脈での利用については「潜在顧客#リードの品質認定」をご覧ください。
SQLパラダイム宣言型
登場時期1974年
設計者レイモンド・F・ボイス
SQL(Structured Query Language)(エスキューエル[2][3][??s kju? ??l] ( 音声ファイル)、シークェル[2][?si?kw?l] ( 音声ファイル)、シーケル[4])は、関係データベース管理システム (RDBMS) において、データの操作や定義を行うためのデータベース言語(問い合わせ言語)、ドメイン固有言語である。プログラミングにおいてデータベースへのアクセスのために、他のプログラミング言語と併用される。
SQLが使われるRDBは「エドガー・F・コッドによって考案された関係データベースの関係モデルにおける演算体系である、関係代数と関係論理(関係計算)に基づいている」と宣伝されていることが多い。しかし、SQLについては、そのコッド自身をはじめ他からも、関係代数と関係論理にきちんと準拠していないとして批判されてはいる(The Third Manifesto - クリス・デイト、ヒュー・ダーウェン)。 SQL規格は1986年に統一標準規格が発表されるまでは、その統一標準規格が存在しない状況であった。そのため、各関係データベース管理システム (RDBMS) ベンダーごとにさまざまな拡張がなされてきた。 近年になってANSI、後にISOで言語仕様の標準化が行われており、制定された年ごとにSQL86、SQL89、SQL92、SQL:1999
標準SQL規格
そして1986年に統一標準規格が発表されて以来非常に多くの改正が行われた。制定年度順に代表的な規格を以下に挙げる。
年通称別称説明規格
1986年SQL86SQL87ANSIによって発表された最初の規約。1987年にISOによって批准された。
データ操作言語 (DML) 仕様策定: COBOL、FORTRAN、PL/Iなど、親言語(母言語、ホスト言語とも言う)への埋込みSQL文仕様策定
ANSI X3.135-1986
ISO 9075:1987[注釈 1]JIS X 3005:1987
1989年SQL89 マイナーバージョン。
データ定義言語 (DDL) 仕様策定 (CREATE TABLE文、CREATE VIEW文、GRANT文。ただし、DROP文、ALTER文、REVOKE文はなし)
制約および整合性機能を追加 (DEFAULT、UNIQUE制約、NOT NULL制約、PRIMARY KEY制約、CHECK制約、参照整合性制約)
C言語への埋込みSQL文仕様の追加
ISO 9075:1989
ANSI X3.135-1989 [注釈 2]JIS X 3005:1990
1992年SQL92(英語版)SQL2メジャーバージョン
直交性の改善 (表式)
データ型の拡張 (可変長文字列、ビット、文字集合、日付・時刻・時間間隔 (DATE、TIME、TIMESTAMP、INTERVAL))
外部結合 (OUTER JOIN)
定義域 (DOMAIN)
表明 (ASSERTION)
一時表 (TEMPORARY TABLE: 永続化しないデータを格納)
DDL仕様追加 (DROP文、ALTER文)
動的SQL仕様
前方・後方スクロール可能なカーソルサポート
クライアント/サーバシステムのためのCONNECT/DISCONNECT文
ISO/IEC 9075:1992
ANSI X3.135-1992[注釈 1]JIS X 3005:1995
1995年SQL/CLI コールレベルインターフェース (Call Level Interface)
業界標準になった ODBC API のインタフェースに相当する機能を国際標準化した規格
1996年SQL/PSM 永続格納モジュール (Persistent Storage Module)
一般的にストアドプロシージャと呼ばれる機能を国際標準化した規格
1999年SQL:1999(英語版)
(SQL99)SQL3RDBMSのための完全な言語になることを目指した仕様[注釈 3]。
正規表現による値照合
共通表式(WITH句)
再帰クエリ
OLAP (ROLLUP、CUBE、GROUPING SETS)
ユニオン (UNION)・結合経由の更新
カーソル操作の機能強化 (トランザクション完了後のオープン状態保持)・ユーザ定義権限 (ROLE)・トランザクション管理の新機能 (SAVEPOINT)
SQL/PSM強化 (制御構文 (IF、WHILEなど) サポートなど)
SQLJ (Javaを親言語とする埋め込みSQL規格)
データベーストリガ
ユーザ定義関数 (ストアドファンクション)
非スカラー型の新しいデータ型: 真理値 (BOOLEAN) 型と配列 (ARRAY) 型、LOB (Large Object)、ユーザ定義型、構造型
上位表と下位表 (スーパーテーブルとサブテーブル)
オブジェクト指向の考え方を取り入れたオブジェクト関係データベース技術 (ORDB)。配列型やユーザ定義型、ユーザ定義関数と上位表/下位表仕様により実現されている。
ISO/IEC 9075:1999
JIS X 3005-1:2002、JIS X 3005-2:2002
2003年SQL:2003(英語版)
SQL/MM (マルチメディア: フレームワーク、全文検索、空間データ (Spatial)、静止画像)
SQL/MED (外部データ管理: 非関係データ (順編成ファイルや階層型データベースなど) や他社の関係データをSQLでアクセスするための規格)
SQL/OLB (オブジェクト言語バインディング: SQLJを標準化する。Javaプログラムに埋め込むSQL文)
XML関連の機能
ウィンドウ関数
順序(シーケンス)の標準化と識別キー列に対する値の自動生成を行う列仕様の導入 (ID型)
(See Eisenberg et al.: SQL:2003 Has Been Published.) SQLはその性質上、「宣言型」の言語である。 プログラムから関係データベースを操作するための方法として、SQLが関係するものや関係しないものがあり、以下にそれらを述べる。 手続き型プログラミング言語、あるいは手続き型ではないプログラミング言語から関係データベースを操作するため、ソースコード中にSQLを埋め込み、プリプロセッサによってSQL部分を変換してデータベースアプリケーションを開発する方式がある。
2008年SQL:2008(英語版)
INSTEAD OF トリガ
TRUNCATE TABLE ステートメント
配列型の集約と展開 (array_agg, unnest) [5]
ISO/IEC 9075-2:2008
JIS X 3005-1:2014
2011年SQL:2011(英語版) ISO/IEC 9075-2:2011
JIS X 3005-2:2015
2016年SQL:2016(英語版) ISO/IEC 9075-2:2016
2023年SQL:2023(英語版)ISO/IEC 9075-2:2023
SQLとオンライン処理
SQLとプログラミング言語