スッキリわかるSQL入門 第4版 感想記事
こんにちは。Web開発の学習の一環で「スッキリわかるSQL入門 第4版」を読み、付属のドリルにも取り込んだので、こちらの感想をまとめたいと思います。
この書籍は「SQL入門」と名前がついておりますが、SQLの文法について学ぶだけではなく、テーブルの正規化や、ER図の作図等、最終的にデータベースの設計の部分までカバーしております。
また、章末、巻末には練習問題のドリルが付属しております。
練習問題を解く際は、「dokoQL」という専用のWebアプリを用いて実際に練習用のデータベースに対してSQL文を投げることができるのも特徴です。
学習カリキュラム、練習問題、総じてボリュームが多く、本全ての内容に取り組もうとすると結構気合が必要な内容となっております・・・!
以下、本書の特によかった点を簡単にまとめます。
この本の良かった点
1. SQL入門と言いつつ、データベース設計のノウハウまでカバー
まず、この本の主題はもちろんSQLであるため、SQLって何?という方でも、基本的な要素から学習できるようになっています。
筆者はSQLの基本的な文法は覚えていましたが、各種関数(LENGTH,TRIM,SUBSTRING,COALESCE等々…)や、結合(JOIN)の活用に関する知識は怪しかったので、これを機に理解を深めることができました。
また、トランザクション、インデックス作成、バックアップなどデータベースの運用に欠かせない知識についても、知らないポイントが多かったため、本書を一通り学習したことで重要な点を抑えることができました。
そして、chapter12ではSQLの枠を超えて、テーブル設計の手法についてしっかり触れています。
顧客の要件を整理するところから始め、概念設計、論理設計、物理設計を経てDDLやDBMSの各種設定に落とし込む手順やコツについて本書は触れており、理解を深めることができました。
「家計簿アプリの制作」を題材に、要件を整理して設計する流れをイラストを交えて紹介されていたので、初心者の私でもわかりやすい内容になっておりました。
私の現職は社内情シスですが、顧客の要望をヒアリングした上でシステムの要件を検討する機会もあるため、本書で紹介されていた論理設計の考え方は今の業務にも活かせそうです。
論理設計を検討する際の考え方として、「顧客の理想・要件を起点とする設計の流れ」に注目する「トップダウン・アプローチ」と「顧客の今の現実(現在運用しているデータ)を起点とする設計の流れ」に注目する「ボトムアップ・アプローチ」の両者を本書では紹介されていました。
今後は、この両方の視点を忘れずに要件の整理を実践してみたいと思いました!
2. 実践webアプリ付きドリルでしっかり鍛えられる (尚かなり大変)
前述の通り、本書専用のwebアプリ「dokoQL」を使って、実際のテーブルを対象にSQLを使用する練習ができます。
巻末のドリルでは、3つのシチュエーションのDBを対象に設問の指示内容のSQLを記述する問題集が用意されているのですが、なんと、合計で215問あります。
正直全てをこなすのはきつかったです!!
しかし、本書で紹介されているDMLのほぼ全てを活用することになるので、嫌でもSQL記述に慣れることになります笑
かなりの時間はかかりましたが、progateで以前学習した時の比にならないくらいSQLを書きまくったので、SQLの理解は深まったのではないかと思います。
dokoQLにてSQL記述にミスがある場合は当然エラーが起きるのですが、そのエラーに対する対処も含めて、良い勉強になりました。
また、終盤は正規化の練習や、要件をもとにER図を書く練習問題も多数用意されています。
私はER図の作成は未経験で、テーブルの正規化の考え方やリレーションシップの多重度の検討は難しく感じました。しかしデータベース設計はシステムの根幹にあたる要素なので、念入りに学習をしました。
以上のように、ただの読み物では終わらず実践形式の練習問題も多数用意されており、とても鍛えられる内容となっております。
余談ですがER図の作図は、draw.ioを活用しました。
ER図用のテンプレートがあらかじめ用意されている上に、githubと簡単に連携ができるので、作図が捗りました。今後もこれは活用したいと思います。

この本の惜しかった点
ボリュームが絶大で分かりやすく、練習問題も充実している本書ですが、惜しいと感じた点もあるので触れておきます。
先ほど紹介したDokoQLは、一つのテーブルに対してSQLの上限実行数が100回まで設定されています。これを超えるとSQL実行履歴の全リセットが必要です。
巻末のドリルは一つの題材につき70-75問問題が用意されているのですが、難しい問題で試行錯誤をしていると終盤どうしても100回の上限に到達してしまいます。
問題の途中にはUPDATE文やINSERT文も用意されており、後半の問題には更新されたデータの抽出を前提とする問題も含まれているため、100回到達後にリセットされた場合、過去に更新したSQLももう一度実行が必要になります。
(抽出結果を気にしなければ無視しても進めることはできますが)
少々手間だったので、上限数200回くらいに伸ばして欲しいなと思いました。
とはいえ、無料特典で用意されているアプリなので、提供されているだけでもありがたいとは思います!
まとめ
とにかく練習問題の物量が大変でしたが、SQLからデータベース設計までしっかりと学習ができる本でした!
付録として、各DBMS製品の機能互換性についても本書では紹介されています。
今後もデータベースの運用で困ったときに読み返す本になりそうです。