背景
- 業務で現行の機能内のSELECT文の改修を任せていただいた際、先輩から教えていただいた知識を備忘録として残そうと思う
SQLの"句ごとの評価順"とは
- 例えば以下のクエリがあったとする
SELECT * FROM t_sample WHERE sample_id=4946;
このとき評価順=文章内のどこからコンピュータが読むのか は
このクエリはSELECT, FROM, WHERE の3つの句で構成される
句ごとの評価順は FROM➡WHERE➡SELECT になる
SQLの句ごとの評価順まとめ
順位 | 句 | 役割 |
---|---|---|
1 | FROM | テーブルの決定,結合処理 |
2 | ON | テーブルの結合条件の指定 |
3 | JOIN | テーブルの結合処理 |
4 | WHERE | 条件によるデータの絞り込み |
5 | GROUP BY | データのグループ化 |
6 | WITH CUBE, WITH ROLLUP | リレーショナルデータベースの操作 |
7 | HAVING | 集積結果の絞り込み |
8 | SELECT | 必要なカラムの選択 |
9 | DISTINCT | 必要なカラムの重複を除外 |
10 | ORDER BY | 並び替え |
11 | LIMIT, TOP | 取得行数の制限 |
参考
終わりに
あくまで私の腹落ちさせた方法として、クエリを日本語で書き直してみるとわかりやすかったのでこれも備忘として残す
日本語で解釈すると、以下のように解釈できるはずだ
t_sample から sample_id=4946 のレコード全部を取得する
日本語で読むと必ずしも前から並んでいる順に評価されているわけではないのがわかるだろう(必ずしも日本語に直してたものと等しくはならないので注意)
またデータベースによって同時に使えない場合もあるそうなので、その辺りも調べたらまとめようと思う