SQL ゼロからはじめるデータベース操作を読んだ
CD付 SQL ゼロからはじめるデータベース操作 (プログラミング学習シリーズ)
- 作者: ミック
- 出版社/メーカー: 翔泳社
- 発売日: 2010/06/29
- メディア: 大型本
- 購入: 39人 クリック: 484回
- この商品を含むブログ (15件) を見る
以下、改めて知ったことや良かったこと。
- つまづきやすいところが書かれてある
- WHERE句に取れる式の制限とか
- 書ける場所、書けない場所を教えてくれている
- 句の実行順序
- 上ふたつのことも、実行順序が分かっていればだいたい理屈で納得できる
- 主要なDBMSでの記法をサポートしてる
- SQL標準で書くことを推奨してる
- 例えば僕はテーブル結合でjoin句を使ってなかった
- そもそも何がSQL標準か、何がそうでないかを知らなかった
- ところどころで中級への道を示している
- EXISTS述語とIN述語の違い
- 関係除算
- NOT IN述語にNULLを取ったときの動作
これを書いてる途中でおさらいをしたんだけど、相関サブクエリの動作イメージが分かった。気がする。SQLの実行順は内側から、つまりサブクエリから展開されていくというのに捕らわれていて、相関サブクエリ内のバインドの部分を解釈できないでいた。サブクエリ単体で見ると、バインドの値が未定で表が出来上がらないから。じゃあ逆にと思って外側からレコード一行ずつ見ていくと、バインドする値は当然決まるし、そうなると相関サブクエリが返す値はひとつに絞られてWHERE句に収まることができる。すっきりした。
やっぱり分からないのは関係除算で例に出てたSQL。EXISTSと相関サブクエリの関係をよくわかってることが前提なのかな。EXCEPTで差集合を取ってるのだけど、引く側が引かれる側を内包してる(と思う)ので空集合になるのではないか、とかよく分からない。今後の課題。