What is it, naokirin?

Effective SQL を読んだ

Effective SQL

Effective SQL

三連休を利用してEffective SQLを読んだので、読後の感想を書いておきます。

個人的には概ね楽しく最後まで読み進められました。

対象読者について

書籍の最初に対象読者は特に明確には書かれていません。
読んでみた感想としては以下のような人が対象とされているかなという印象です。

  • ISO標準のSQLを理解した上での実用的なSQLの利用について理解したい
  • 基本的なCRUDだけの利用から一歩進んだSQLを利用できるようになりたい

ですが、この本自体はSQLやリレーショナルデータベース(以下RDB)の入門書ではないため、読んだ限りでは以下は最低限できなければ読み進めるのが難しいかもしれません。

  • 最低限のCRUDを行うSQLを読み書きできる
  • RDBにおける基本的な用語を理解できる(テーブル、インデックスなど)

また以下はこの本では対象外になるかと思います。

  • RDB自体の理論や設計の応用的な内容
  • 特定のRDBMSに特化した情報(特有の最適化手法など)

とはいえ、ちょっとSQLをかじったくらいの知識でも概ね理解できる内容だと思います。
中級者以上はより深い理解や知識の再確認のために、初心者であればSQLの練習も兼ねてGitHubのデータを利用してじっくり取り組むのもありかと思います。

感想

他の書籍との違い

これまで読んでみたいくつかのSQLに関する本との違いとしては以下があげられると思います。

  1. ISO標準のSQLを基礎として、実際の各RDBMSではどのように書けるかを示している
  2. 練習より実用性を重視した内容にしている

とくに1.が非常にしっかりしており、SQL Server, IBM DB2, Oracle, MySQL, PostgreSQL については違いがある場合には、その旨が記載されています。そのためどのRDBMSを利用していても役に立つ内容になっています。

2.に関してはどちらかと言えばというくらいですが、GitHubにサンプルで利用されているデータベースも用意されており、練習用に用意された簡易のものより実用に向けた内容となっているかと思います。

書籍自体について

  1. 項目でまとまっており理解しやすい
  2. 包括的に内容が書かれているため、全体で1つの内容となっている
  3. 300ページ未満であり、最初から全部読んでもそれほど苦労しない

1.に関しては、Effectiveシリーズに通じて言えることかもしれません。
項目ごとにまとまっていて、最後にポイントが書かれているので理解しやすいです。

2.は項目ごとでありながら、全体を通して利用されている内容があると言ったことが挙げられます。
その際に参照先が明記されているので、気になった場合は都度その項目を参照しながら読み進めることができます。

詳細な内容

詳細な内容についてはすでにすごく良い書評がすでにあるようなので、こちらを参照していただくほうが良さそうです(他人任せ)

qiita.com

ただしこちらは原著の書評のようなので、訳書のほうについての内容を書かせてもらおうと思います。

  • 日本語として読みやすい
  • 適度に訳注が入れられている
  • 理解しやすさのために例示を原著から一部変更している
  • カラーではない

全体的に読みにくいということはなく、スラスラと読み進められました。

この本を読んで全体的に今までアプリケーションで解決しようとする部分が多かったことが、SQLでも解決できるということを改めて認識しました。とくにORマッパーを利用する機会が増えるとこのあたりを忘れがちなので、この本を通して原点に立ち返ることができたかなと思います。

個人的にはタリーテーブルというのを初めてしっかりとした内容で読んだので、この部分は学ぶことが多かったです。またあまり複雑なSQLを書く機会が少ないので、サブクエリの章は理解していないこともあり、じっくり読みました。それと仕事ではMySQLがメインで利用することが多かったので、CTEなどの特定のRDBMSでは利用できない機能について知る機会にもなりました。

時間があれば、実際に実行してみながら進めてみようかなと思います。