« SQL側でのデータ編集処理について | トップページ | SQLにおけるnullの扱いについて »

2007年2月19日 (月)

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側でのデータ編集処理について | トップページ | SQLにおけるnullの扱いについて »

コメント

私もsql select文 極めるでたどり着きました。とても良いサイトに出会えて嬉しいです。貴重な情報ありがとうございます。

投稿: | 2012年10月19日 (金) 23時38分

sql select文 極める
と、検索したらヒットしました

ただいまオラクルマスターの勉強中です

なんて〆たらいいのかわかりませんが

頑張ります^^

投稿: 落花生 | 2009年9月24日 (木) 09時54分

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック


この記事へのトラックバック一覧です: SQLの魔術:

« SQL側でのデータ編集処理について | トップページ | SQLにおけるnullの扱いについて »