生SQLやRDBMSにあまり慣れていないエンジニアに送るおすすめ書籍

「これまでActiveRecordはわかるけどSQLは知りません」「複雑なSQLを書くのはやはり苦手そうです」とよく質問を受ける機会が増えそうなので、ここにまとめておく。
ちなみにアマゾンアソシエイトではない。

想定読者

最近エンジニアになったけど、あまり生でSQLは書く機会がこれまでなかったので慣れていない。
Railsチュートリアルとかやったけど、ORMを使わないとあんまりデータ取得とかわからんひと。

業務SQLにほとんどなれていない状態

SQL ゼロからはじめるデータベース操作

ここではとにかくSQLの文法を覚えるのが良いでしょう。
そのためには下記書籍を参考にして進めるとよいはずです。
個人としては書籍でのインプットはそこそこに、とにかくSQLを書き、実戦経験を積むのがいいと思います。複雑なSQLであっても、長いだけで基本的な文法はそうは変わらないと個人的には思います。
ここで基礎となるポイントを押さえておきましょう。
「ORMは扱える、なんとなく基本文法はわかってる人」でも、初心者向けと舐めずにまずはこういう書籍から取り組んだほうがよいと個人的には考えています。(むしろ完全に初心者より、そういった人のほうがおすすめしたい書籍です。)

少し慣れてきたら

達人に学ぶSQL徹底指南書

ここでは演習問題もあり、アプリケーションで利用するSQLを超えて「分析クエリっぽいものを書きたい」となるときに必要なるテクニックであったり、応用みたいなものが少しここから学び取ることができると思っています。
ORMを普段使っていたりすると、あまり駆使しないCASEだったり、こう使えば良いのかーみたいな発見があるのでお勧め。

データベース設計について

すこしSQLと仲良くなってきたらデータベース設計についても目を向けてみるのがよいでしょう。

失敗から学ぶRDBの正しい歩き方

アンチパターン集っぽいかんじの書籍。このあとでも紹介するSQLアンチパターンが名著的なかんじで紹介されるのだけど、
個人的にはよりこちらのほうがWebアプリケーションで使うようなパターンが多いように感じてとっつきやすさはある。
まだまだ慣れてきたばかりと感じるようであれば、SQLアンチパターンよりもこっちを先に読んだほうがいいのかなと思っている。弊社でも読書会を数年前にやったのだけど、よかったなぁという感じでした。

SQLアンチパターン

あえて「アンチパターンを踏む」という選択をするのと、「知らないで使う」は全く別物だと思っていて、
そういう意味では「べからず集」というのをきっかけに何がよいか?というのを知るのは良いことだともう。
現代のWebアプリケーションではアンチパターンのほうがよかったりするみたいなこともあるので、その辺は各位で取捨選択してみたり、先輩エンジニアだったりに聞いてみたりするのがよいと思う。
それでもやっぱり現代において役立つパターンはまだまだあると思うので、こちらも読んでおくとよい1冊だと思ってます。

最後に

この辺押さえつつ、よくわからないことは適宜ググったりすれば知識的には足りないことはなくなってくるはず。後は実践でやっていけばそつなくこなせるくらいにはなっていると思います。
サーバーサイドにおいて、大切な要素はSQLやデータベース周りにあると自分は考えているので、
そのうちそちらについても簡単に自分なりに解説したブログでも書こうと思う。