概要
SQLに初めて触る際に、分からなかった用語を自分なりに纏めています。
※勉強次第随時更新予定。
目次
- DDL
- DML
- DCL
- TCL
- サブクエリ
- 標準SQL
- スパゲッティクエリ
- N+1問題
- 分析関数 (ウィンドウ関数)
- 埋め込みSQL文
- ホスト言語
- 一時テーブル
- コネクション
- セッション
- トランザクション
- 制約
- データ・ディクショナリ
- ディクショナリビュー
DDL
「Data Definition Language」の略で、データ定義言語の意味。
データ定義言語とは、データの構造を定義する言語のこと。
例えば、
- CREATE (テーブルを作成)
- ALTER (テーブル構成を変更)
- DROP (テーブルを削除)
が、該当する。
DML
「Data Manipulation Language」の略で、データ操作言語の意味。
例えば、
- SELECT (検索)
- INSERT文 (挿入)
- UPDATE文 (更新)
- DELETE文 (削除)
が、該当する。
DCL
「Data Control Language」の略で、データ制御言語の意味。
データ制御言語とは、データを制御する言語のこと。
例えば、
- GRANT (ユーザーにアクセス権限を与える)
- REVOKE (権限を取り消す)
が、該当する。
TCL
「Transaction Control Language」の略で、トランザクション制御言語の意味。
例えば、
- COMMIT (トランザクション中の変更を確定)
- ROLLBACK (トランザクション中の変更を取り消す)
が、該当する。
サブクエリ
クエリの中で使用される別のクエリのこと。
サブクエリの中にサブクエリを記述することも可能。
標準SQL
ISOによって規格化されたSQLのこと。
1979~1980年後半まで、色々なメーカーから多くの商用RDBMSがリリースされた。
ただこの時はSQLは標準規格化されていなかったため、各RDBMSにはSQLと、その機能を向上させるための独自の機能が搭載されていることが一般的だった。
そこで1986年にISOによって、SQLが規格化された。これを「標準SQL」という。
ただ当時規格化された標準SQLの機能はとても貧弱だった。
そのため各RDBMS製品は、引き続きその機能を向上させるための独自の機能が追加され続ける。それが現代でも「方言」として残っている。
スパゲッティクエリ
複雑に絡み合っていて、難解なクエリのこと。
「スパゲティコード」のクエリ版。
SQLは色々な処理を一回のクエリで記述することが可能だが、それは読みにくくなってしまう。なので、分割したりして、読みやすいコードを書くことが重要。
N+1問題
データベースのアクセス数が多くなってしまうことを表した用語。
クエリを実行する (データベースにアクセスする) 際は、1回あたり少し時間がかかる。
なので、大量のSQLが次々に実行されると動作が重くなってしまう、という問題。
N件のデータをもったテーブルの情報読み込むためまずは1件のクエリを発行し、読み込んだテーブルに紐づいているデータを一つずつ読み込むためにN件のクエリを発行する、という意味合い。
集計関数
データを集計するための関数のこと。
SUM、MAX、MIN、AVG、COUNTなどがある。
分析関数 (ウィンドウ関数)
データを分析するための関数のこと。
OVER句を指定してクエリを記載する。
埋込みSQL文
アプリケーションのプログラムに直接記述されているSQL文のこと。
また、SQL文が記述されているプログラミング言語をホスト言語と呼ぶ。
ホスト言語
SQLからみて、SQLが記述されているプログラミング言語のこと。
一時テーブル
「TEMPORARY TABLE」とも呼ばれる。
トランザクションが終了したタイミングや、セッションが終了したタイミングでデータが削除されるテーブル。
コネクション
クライアントアプリがサーバのデータベースにアクセスするために行う接続のこと。
セッション
「コネクション」は接続のみを指すが、「セッション」は接続から切断までの1回の通信全体を指す言葉。
トランザクション
実際にDBのデータを更新する単位のこと。
複数の更新処理を連続実行して、それを1つの纏まりとして管理するための技術。
制約
テーブルにあるデータのルールのこと。
ルールを満たさないデータは格納しないようにできる。
また、制約には名前を付けることができる。(制約名)
データ・ディクショナリ
データベースに関する情報を格納している表のこと。
ディクショナリビュー
データベースに関する情報を格納している表「データ・ディクショナリ」に含まれるビューのこと。