あんなにツラかったデスマがあっという間に解決しました!理由はこれ→SQL書き方ドリル

すらすらと手が動くようになるSQL書き方ドリル

すらすらと手が動くようになるSQL書き方ドリル

・・・とサブリミナルに協力してみる(w
さて、ちゃんと手を動かすことなくぱらぱらとめくってみただけですが(爆)、うん、いいですよ、これ。SQLに関する本って、リファレンス系か学術的っぽい内容かで開発にすぐに活かせるものがなかなか見つかりません。超初心者を中級者の手前くらいまで押し上げるような本がないんですよ。僕が新人の頃に探していた趣向の本がやった出たなという感じです。
簡単なSQLはリファレンス等をみればすぐ書けるようになりますが、ちょっと難しくなるとお手上げです。何をどうすればよいか、「How」が全く分からないのです。結局、保守・運用時代に大量のSQLをメンテナンスする機会があったお陰でなんとなーくできるようになっていました。また、ORACLE MASTERの試験勉強を通じてSQL実行時にどんなことをやっているかRDBMS内部の動きも理解したのも結構有効だったと思います(ここが理解できないとパフォーマンスを無視したSQLを書きまくることになる)。
ちなみに個人的にやっているクエリーの書き順はこんな感じ。

  • 対象となるエンティティを特定する(FROM句)
  • 特定したエンティティの中で取得するカラムを確認する(SELECT句)
  • エンティティを関連づけるカラムを確認し、結合条件を考える(WHERE句)
  • その他の絞り込み条件の記述方法を決める(WHERE句)
  • ソート順を決める(ORDER BY句)

今でも、複雑なクエリーを書く場合は、対象となるエンティティの部分だけでERDっぽい絵を描いてそれからSQLを書き始めます。後輩に教えるときも効果抜群です。

あと、SQL文のインデントも重要ですね。綺麗なコードを書くのが重要なように、綺麗なSQLを書くこともすごく大切です。長いSQLを書いていくと、1行1カラムってのがメンテナンスしやすいんですよね。特にカラムを複数個記述する場合は、カラムの先頭にカンマをつけるのがポイントです。これだけでSQL実行時のエラーがかなり防げます。

最後にこの本への要望としては、改訂版が出るときには、付録として超長くて複雑なSQLの穴埋め形式で解答させるような問題も載せて欲しいです。