概要
構造化問合せ言語(Structured Query Language)、通称SQLは、リレーショナルデータベースシステムとやり取りするための主要な言語です。SQLは宣言的であり、利用者は欲しいデータを記述し、データベースエンジンがそれをどのように取得するかを決定します。SQL文は、スキーマの作成や変更、行の挿入や取得、アクセス制御やトランザクションの管理に使われます。背景や学習用資料については、SQLの参考資料も参照してください。
主要な構成要素
SQLは、目的ごとにいくつかの機能群に分けて扱われるのが一般的です。
- データ定義言語(DDL) — テーブル、インデックス、その他のオブジェクトに対するCREATE、ALTER、DROP。
- データ操作言語(DML) — 行を扱うためのSELECT、INSERT、UPDATE、DELETE。
- データ制御言語(DCL) — 権限管理のためのGRANTとREVOKE。
- トランザクション制御(TCL) — トランザクションの動作を管理するCOMMIT、ROLLBACK、SAVEPOINT。
一般的な機能と代表的な句
典型的なSQLクエリでは、条件抽出、結合、集計、並べ替えを行うための句や演算子を使用します。よく使われるキーワードには、SELECT、FROM、WHERE、JOIN、GROUP BY、HAVING、ORDER BYがあります。さらに、サブクエリ、ウィンドウ関数、集合演算(UNION、INTERSECT)によって表現力が広がります。データベースはまた、制約(PRIMARY KEY、FOREIGN KEY、UNIQUE)、検索を高速化するインデックス、再利用可能なクエリ定義としてのビューもサポートします。
歴史と標準化
SQLは、1970年代にE. F. コッドが提唱したリレーショナルモデルの研究から生まれました。IBMでの初期実装は、当初SEQUELと呼ばれ、のちにSQLとして標準化されました。この言語は標準化機関によって形式化されており、多くのデータベースシステムは、各ベンダー固有の拡張を加えつつ、基本的な標準動作を維持しています。
用途、例、重要性
SQLは、業務、科学、Webの分野で構造化データを管理するために、アプリケーション、分析担当者、管理者によって利用されています。例としては、集計クエリによるレポート作成、ACID特性に従うトランザクション更新、データ移行やスキーマの進化などがあります。広く普及しているため、SQLはリレーショナルデータストアを扱ううえで基礎的な技能となっています。
注目すべき違いとベストプラクティス
手続き型言語と異なり、SQLは処理手順ではなく結果に焦点を当てます。現代のシステムでは、複雑なロジックのためにSQLと手続き型拡張を組み合わせることもあります。ベストプラクティスとしては、インジェクション攻撃を避けるためにパラメータ化クエリを使うこと、適切なインデックスを定義すること、そして性能要件とのバランスを取りながら正規化されたスキーマを設計することが挙げられます。実践的なガイドや仕様については、上記の関連資料を参照してください。