📝
技術書読書ログ「達人に学ぶ SQL徹底指南書」
概要
SQLのベースは宣言型・集合指向。
SQLには代入やループなどの手続きはない。
データもレコードではなく、もっと複合的な集合の単位で扱われる。
そこで肝心なのは、順序から集合へ思考パターンを変えること。
そのための7ヶ条が以下。
- IF文やCASE文は、CASE式で置き換える SQLはむしろ関数型言語と考え方が近い
- ループはGROUP BY句とウィンドウ関数で置き換える
- テーブルの行に順序はない
- テーブルを集合をみなそう
- EXISTS述語と「量化」の概念を理解しよう
- HAVING句の真価を学ぶ
- 四角を描くな、円を描け
個人的な学び・気付きポイント3点
ウィンドウ関数
- カーソルの機能をSQLに持ち込める
- カレントレコードを中心に、レコード集合の範囲を定義できる
- 行間比較に相関サブクエリはもう使う必要はない、ウィンドウ関数を使う
EXISTS
- 集合を引数にとり、真理値を返す関数
- 高階関数のように扱う
- NOT EXISTSを使いこなす
- 「すべての行について〜」という条件を「〜でない行が1つも存在しない」という条件に変換して表現する
HAVING
- HAVINGは集合自身の性質を調べるための道具
- WHEREは集合の要素の性質を調べるための道具
- GROUP BY が無くても使え、その場合はテーブル全体が1行に集約される
感想
"おわりに"で書いてあった
"SQLはライトな使い方にとどめてやりくりしていた"
というのが、まさに自分のことだなあと感じました。
そして、SQLをもっと使いこなすには、考え方を切り替えないといけないなとも思いました。
なので、その戒めのためにも、概要は19章の内容をそのまま持ってきました。
あとはSQLを書くときはの意識。
個人的な学び・気付きポイント3点のそれぞれの機能をもっと積極的に試してみようと思います。
Discussion