nekoTheShadow’s diary

IT業界の片隅でひっそり生きるシステムエンジニアです(´・ω・`)

『 SQLクックブック 第2版: データベースエキスパート、データサイエンティストのための実践レシピ集』を読んだ

honto.jp

仕事でSQLで向き合う機会が減っていて、SQL力が落ちているなと感じているところに、休日の本屋散策で発見して購入。ブランクをとりつつ、すべての問題を自力で回答しました。気合いでやり切った感がありますが、正直なところ、まあまあという感じでした(´・ω・`) 万人におすすめできるというものではないです。

本書では14個のテーマに分けられた約160個のクイズ・レシピが紹介されています。すごいところは、そのほとんどのクイズ・レシピに対して、MySQLPostgreSQLDb2OracleSQLServerではそれぞれどのように解くかが示されているところでしょうか? 問題のレベルとしては、単にSELECT文やINSERT文を書いてみましょうというものから、複雑な日付計算やレポート生成を求めるものまで、かなり振れ幅があります。個人的にはそこが中途半端だと感じていて、簡単な内容であれば初心者向けの教習本がいくらでもありますし、もう少し高難易度のものを求めるのであれば『SQLパズル』などがお勧めです。

もっともまったく役にたたなかったというわけではありません。個人的には「5章 メタデータクエリ」「12章 レポート作成と形状変換」などは結構よかったと思います。前者はinfomation_schema系のレシピがまとめられているのですが、これがまとめられているのは珍しい気がします。また後者は名前の通り、レポート作成のお話で、これもやはりまとまっているのは珍しいかと思います。もっともこれらの章を読むために買うほどかといわれると、うーむと言葉がつまっちゃいます。まあ初心者向けの本ではないですね。ある程度SQLを書けるという人で、気になるところをつまんで読む、読んだ後は書庫にしまっておいて困ったときに取り出すという使い方がよいかと思います。

個人的にこの本の評価を下げているのが2つあって、まずはJOINの書き方。本書では原則INNER JOINを以下のように記載します。

SELECT *
FROM A, B
WHERE A.id = B.id

こういう書き方があることを紹介するのはよいと思うのですが、全編これというのはちょっとどうかなと。普通にJOINを使ったほうが一般的というか、わかりやすくないですかね?

あと文字列操作系については、基本的にTRANSLATEを使うのですが、これもそれ以外の選択肢を紹介してほしいなという印象でした。さまざまな文字列関数や正規表現などはほとんど紹介されず、TRANSLATE一本やりで押すのもよい印象を受けなかったです。ほかにもJSONに関する話がまったくないなど、いいだしたらきりがないですね…。まあよほど関心がある人、もしくは会社などの補助で安くオライリー本を手に入れられる人であれば、買って読むのも悪くないかと思います。