『達人に学ぶSQL徹底指南書』を読んだ。
これまで本当に単純なSQLしか知らなかったことがよく分かった。CASE式 (文ではない) が値を返すから、SELECT文などの中にも書けること。HAVING句は集合に対する条件を設定するという見方。他にも色々ある。
一方で、そこまでSQLでやる? と感じることもあった。そう感じるのは自分がどちらにも深入りしていないからかもしれない。できるからといって、何でもかんでもSQLでやろうとするのもよくないだろう。
でも、そういう判断を下すには、自分はSQLの表現力について知らな過ぎた。というわけで、手続き型から宣言型・集合指向へ頭を切り換える7箇条をメモしておく。
これまで本当に単純なSQLしか知らなかったことがよく分かった。CASE式 (文ではない) が値を返すから、SELECT文などの中にも書けること。HAVING句は集合に対する条件を設定するという見方。他にも色々ある。
一方で、そこまでSQLでやる? と感じることもあった。そう感じるのは自分がどちらにも深入りしていないからかもしれない。できるからといって、何でもかんでもSQLでやろうとするのもよくないだろう。
でも、そういう判断を下すには、自分はSQLの表現力について知らな過ぎた。というわけで、手続き型から宣言型・集合指向へ頭を切り換える7箇条をメモしておく。
- IF文やCASE文は、CASE式で置き換える。SQLはむしろ関数型言語と考え方が近い
- ループはGROUP BY句と相関サブクエリで置き換える
- テーブルの行に順序はない
- テーブルを集合と見なそう
- EXISTS述語と「量化」の概念を理解しよう
- HAVING句の真価を学ぶ
- 四角を描くな、円を描け