msksgm’s blog

msksgm’s blog

Webエンジニアです。日々の勉強記録、技術書感想、美術観賞感想を投稿します。

「わかりみSQL」感想

「わかりみ SQL 」[Kauplan, 2019]を読みました。

booth.pm

感想について記述していきます。

感想

技術同人誌の SQL 入門書のです。 技術書同人誌にしては珍しい 500 ページにもおよぶ書籍となっています。 知り合いのエンジニアが薦めていたのと、「達人に学ぶ SQL 徹底指南書 第 2 版 初級者で終わりたくないあなたへ[ミック, 2018]」を読んでいるときに自分の SQL の知識不足(特に Window 関数)を実感したため、途中で読むことをやめ、わかりみ SQL を読むことにしました。 最後の修行編と高度な関数以外はすべて読みました。

自分の実力は、研修で SQL を一通り学んだため、基本的な構文(SELECT 関連、INSERT、UPDATE、DELETE、JOIN、GROUP BY あたり?)は知っているぐらいです。 ほかには、普段の業務では、Web アプリにあらかじめ書いてある SQL を読んだり、実行結果を読み込むための SQL をたまに書いています。

よかった点と、気になった点をそれぞ述べていきます。

よかった点

よかった点は3つあります。

1つ目は、単純ですがめちゃくちゃわかりやすいです。 基本的なことから丁寧に教えてくれるので、500 ページもあるとは思えないほど、苦労せずに読み切ることができました。 特に、SQL の本質について解説しつつも初心者がなんとなく理解しておくべきことを述べてくれるので、なんとなく使えそうな状態にしてくれます。

2つ目は、case 式、with 句、window 関数について解説してくれることです。 ここら辺はしっかり解説してくれる初心者向けの本は少ない気がします。 window 関数は近年の RDBMS から追加されたからだと思いますが、case 式は比較的昔からあるのにちゃんと解説してくれる本は少ない気がします。 ここらへんは覚えておくと、活かせそうなタイミングが多そうなのと、購入した理由が window 関数を知りたかったからだったので大変満足しました。

3つ目は、最初に環境構築の解説をしてくれることです。 初心者向けの本は、とりあえず動けば良いみたいなやり方の記事が多いですが、この本はそんなことなく、その点も丁寧でした。 特に docker での環境構築のやり方解説してくれたのは助かりました。

他にもトランザクションデッドロックの実演もよかったです。

気になった点

きになった点は2つあります。

1つ目は、ところどころ複雑すぎるように見える SQL があったことです。 読めるようになりましょう程度の解説でしたが、実際に使おうとすると SQL 間違えて NULL を作ったり、読むのに時間がかかりうだなと思いました。 多少長くなっても読みやすい SQL をとりあえず優先するべきなのかな?と思いつつ、パフォーマンスを考えると書き方を知っておくのも重要なのかな?と思いました。

2つ目は、高度な関数は PostgreSQL に専用な関数が紹介されていそうなことです。 「SQL」の説明にしては、RDBMS に依存する関数を紹介するのはどうなんだろうと思います。 MySQL にも代替する関数はあると思いますが、JSON とかはそもそも使うのか?とも思いました。

まとめ

全体的にわかりやすく、段階的に説明にしてくれるので、初心者でも段階を踏んで理解できる良書だと思いました。 SQL の参考書を聞かれたらこの本を一番にあげます。 気になった2点は自分が経験不足なだけで、SQL を深く触る人は頻繁に触れる箇所だったかもしれません。