SQLの魔術
たかがSQLと思っていた。
しかし実際に作り始めてみると、されどSQLであった。
何か言いたいのかというと、SQLのSELECTを極める者はSQLを極めるということである。
単純なSQLならば問題ない。しかし複雑なSQL、特に最も必要性が高いであろう複雑なSELECT文は舐められない。
SELECTを極めることはSQLを極めることに直結する。
SELECTの深さこそがSQLの深さでもある。
SQLが興味深いのはそれが集合の理論を基にした言語であるという特徴である。
SQLの魔術、と大げさに言っているが、集合のモデルを基にした思考過程はJavaなどのC言語系の言語からみると魔術に見えるだろうということ。
・SELECTで難しい点
SELECTで難しい点を挙げると、
1.取得範囲の設定
2.取得結果の編集
この2点がSELECTで難しい点である。
特に難しいのは1の方だろう。
・SELECTの処理順序
SELECTを難しくしているのは、その処理順序と記述順序が食い違っていることにある。 SELECT A FROM B と記述順に実行されるわけではないのが、SQLの難しい点である。
しかしそれは集合的モデルを採用することでその理解は大幅に楽になると思っている。
●SELECTの処理順序
問題はどの順序でSELECT文が処理されるかである。
以下は暫定的ではあるが、SELECTの処理順序である。
これは幾つかのSQLを作成してみて蓋然的にわかったことである。
(本当はちゃんと実験しないといけないのだが。これは将来の予定)
実はこれがSELECTの最も重要な奥義といってもいいのである。
SELECTの処理順序についてはSQLの本にも意外と書いてない。
1.FROM
2.WHERE
3.GROUP BY
4.HAVING
5.SELECT
6.UNIONなどの集合演算
7.ORDER BY
8.DISTINCT
以前SQLを勉強したときは、SELECTの構文の内容はあったが、処理順序については無かったと記憶している。しかし、処理順序を知らなければSELECTは書けないのである。
ネットでもSELECTの処理順序について書かれているページは少ない。
以下は唯一見つけたページだった。重要度の割にはヒットするページが少ない。
PostgreSQL 8.1.4文書
SELECT
http://www.postgresql.jp/document/pg814doc/html/sql-select.html
以前(3年前)DBをけっこう真面目に勉強したが、そのときの自作のまとめでは、以下のようにおまけ程度に書かれていた。
--------------------------------------------
※SELECTの文節は以下の順序で処理されます。
FROM 文節
WHERE 文節
GROUP BY 文節
HAVING 文節
SELECT 文節
--------------------------------------------
これは今知りたい処理順序そのものの情報であるが、どこからコピペしたのか不明。
また、そんなに重要でもないかのようにおまけ程度にファイルの末尾に書かれていた。
このころはまだこの順序の重要性については無知だったのだろう。
| 固定リンク


コメント
sql select文 極める
と、検索したらヒットしました
ただいまオラクルマスターの勉強中です
なんて〆たらいいのかわかりませんが
頑張ります^^
投稿: 落花生 | 2009年9月24日 (木) 09時54分