tl;dr
SQL苦手な人にこの本めちゃくちゃオススメです。特に手を動かさないと頭に入らない人向け。 すごく凝ったことはできるようにならないかもしれないけど、少なくともSQLへの苦手意識は払拭されます。
僕とRDBMSとの関わり
↓のような感じの仕事歴で、前半はRDBMSにほとんど接する機会がありませんでした。
- CADっぽいデータを扱うWindows上でMFCアプリケーション(4年)
- 簡易なiOSアプリやらWin上の変換プログラムやら、一部Railsやら(3年)
- Rails中心(3年)
Winアプリケーションの頃はデータの保存はバイナリをシリアライズしたりXMLっぽいテキスト形式だったり。基本ファイルへの保存。
後半になってからRailsを触りだしたのでそこで初めてDBと関わることになりました。Railsには通常ActiveRecordがいるのであまり意識することなくDBを扱えてしまいます。
サービスの立ち上げがメインの仕事なので、複雑なデータや大量のデータは現れにくいというのがこれまでの個人的な感覚です。大体はActiveRecordの範囲で割となんとかなってしまいます。SQLを学ぼうとしても実感が沸かないという壁があって、なかなか学習を進められませんでした。
ここが難しいのは、割となんとかなっているという感覚は知らないからなんとかなっていると思っていただけかもしれないということ。実はもっと効率の良いクエリが書けるとか、そもそももっと良い設計があったとか、そんな場面は多々あったのだと思います。
最近は開発しているアプリケーションで扱うデータ複雑になってきたこともあり、SQLに苦手意識があることをなんとかしたいなと課題に思っていました。
ちなみにDB関連ではだいぶ易しいと思われる、
を読んだこともありましたが、「うんうんわかったそれで?」という感じで実感は相変わらず伴いません。読めないこともないけど、書けないという感じ。
という流れから冒頭の本に出会ったわけです。
どんな本か
ドリル形式
ドリルと名がつくだけあって、例題に沿って進む形式です。回答用のJAVAアプリケーションが入っていて、問題の解になるSQLを書いてポチッとすると正誤判定をしてくれます。採点が自動なのは便利です。
逆に言うと、SELECTとは何で〜、みたいな細かい説明はありません。とりあえず書こうぜという感じです。人によりますが、僕はこちらの形式がとても好きです。
全編を通して共通のデータベースを利用していて、「上司」から降ってくる様々な要望を満たすデータを提出するという仕事を課せられているという設定です。あれこれテーブルをJOINしてGROUP BYして欲しいデータを返してあげるみたいなことを繰り返すので、データの集計に慣れます。
書き方重視
クエリの書き順を重視しています。書き順を重視することは、イコール、クエリがどのように実行されていくのか、データの固まりがどうなっているかを意識することにつながります。ここを徹底させられるので知らず知らずのうちに書けるようになります。
脱力系の猫がかわいい
かわいいです。
一通り終えて
多段JOINのあるクエリなどをスラスラ書けるようになったという実感があり、苦手意識は払拭されました。少なくとも読んで理解しようという気が起きるように(w)なりました。
また、↑にも書きましたが、データの集計に慣れるっていう感覚はSQLを直接書いてみたいとわからない感覚だったな、と思っています。ドリル前は元データと欲しいデータがうまく繋がっていなかったです。
今後のモデリングやデータベースの設計に明らかに役に立ちそうなので、やってよかったです。3〜4時間もあれば終わるはずなので、時間もかからないし超オススメです。