1.はじめに
SQL は Structured Query Language の略である。 リレーショナルデータベースを定義したり操作したりする言語である。
2. SQL の特徴
2.1 言語としての SQL
SQL はデータベースに特化した言語である。プログラミング言語としては異端で、非手続型言語である。 手続型言語は言語の文法に従ってひとつひとつ処理をしていくが、 非手続型言語は、条件を指定すればその条件をあった処理を一度にする行なうことに特徴がある。そのため、 手続型言語に慣れたプログラマは、SQL では発想の切り替えが必要になる。
2.2 SQL の実装
SQL は通常、データベースマネジメントシステム(DBMS)の一部として実装されている。 DBMS には企業が提供しているもの(多くは有償)と、有志が提供しているもの(多くはソースが公開されていて無償)がある。有志提供の SQL には次のものがある。
- MySQL
- PostgresQL
- SQLite3
3. SQL の側面
SQL の側面として、データを操作することと、データを定義することがある。
いったん SQL を離れて、集合の要素の操作を考えよう。集合内の要素の操作は次のように分類できる。
- 生成:要素を作る : Create
- 参照:要素を読む : Read
- 更新:要素を変える : Update
- 削除:要素を除く : Delete
システム設計一般では、この 4 種類を称して CRUD (クラッド) という。
4. データ操作命令
SQL では、一つのテーブルに関する行の操作に関して、CRUD は次のようになる。
- 追加:行を追加する : Insert
- 検索:行を検索する : Select
- 更新:行を更新する : Update
- 削除:行を削除する : Delete
このうちもっとも使われる操作は Select である。単なる参照ではなく、検索となっていることに注意してほしい。
5. データ定義命令
データの各種状態を定義する場合の CRUD はどうか。データベースのさまざまな属性を抽象的にオブジェクトと呼び、仮に XXX と表す。
- 作成:オブジェクトを作成する : CREATE XXX
- 検索:オブジェクトを(参照|検索)する : -
- 更新:オブジェクトの属性を更新する : ALTER XXX
- 削除:オブジェクトを削除する : DROP XXX
ここで、オブジェクトを(参照|検索)する命令がないことに注意。
オブジェクトとして抽象化した単位としてはたとえば、TABLE(表)、INDEX(インデックス)などがある。
6. 情報処理技術者における SQL
IPA のページ https://www.jitec.ipa.go.jp/1_13download/shiken_yougo_ver3_1.pdf では、SQL について次のように定義されている。
4.データベース言語 試験で使用するデータベース言語は,次の仕様に従う。 SQL :JIS X 3005 規格群
この JIS X 3005 規格群はとにかく幅広い。枝番が 1, 2, 3, 4, 9, 10, 13, 14 とある。
実際には JIS X 3005-2:2010 基本機能だけを知ればよいだろうが、それ「だけ」でも大変だ。目次を挙げる。 なお、第5章は JIS では「語い」と表記されている。
- 適用範囲
- 引用規格
- 定義、表記法及び規約
- 概念
- 語彙要素
- スカラ式
- 問合せ式
- 述語
- その他の共通規則
- その他の共通要素
- スキーマ定義及びスキーマ操作
- アクセス制御
- SQL クライアントモジュール
- データ操作
- その他のデータ操作規則
- 制御文
- トランザクション管理
- コネクション管理
- セション管理
- 動的 SQL
- 埋め込み SQL
- SQL の直接起動
- 診断管理
- 状態管理
- 適合性