SQL がはじめてのひとも、ニガテなひとも - 技術評論社『これからはじめる SQL 入門』

昨年から執筆していた書籍『これからはじめる SQL 入門』(以下、本書)が 2018年5月2日に技術評論社さまより刊行されます。今回はその紹介記事を投稿します。

これからはじめる SQL入門

これからはじめる SQL入門

どんな本か

本書はいわゆる一つの SQL 入門本です。SELECT文、INSERT文、UPDATE文... にはじまり、JOIN や GROUP BY、データ型や関数などの基礎知識をひととおり解説しています。

本書では PostgreSQL 10 がサポートする SQL の構文を解説の対象としていますが、MySQLSQL Server など他の RDBMS でも通用する知識が得られるはずです。

本書はSQL の基礎知識をひととおり学ぶことを目的として書かれた一冊です。データベースとはなにか、SQLとはなにかといったことに触れつつ、SELECT文やINSERT 文などのSQL の構文を中心に解説を進めていきます。はじめてSQL を学ぶ方を対象としていますので、プログラミングやシステム開発に関する知識を前提としない内容になっています。同時に本書は、読者が本書を通読したあとに「SQL入門者」のレベルを脱していられるような情報量と難易度となっていることを狙って書かれています。

(はじめに より)

なぜ書いたのか

企画段階で編集チームよりオファーいただいたのが本書執筆のきっかけです。

また、SQL を日常的に使っているけれども苦手意識をもっているソフトウェア開発者の層が一定数いるものと認識しており、そういった方々があらためて SQL を学びなおす本があったら良いと考えたというのが動機の一つです。

ゼロから SQL を学びたいと考えている人がいるときに「これ読んでおいて」と言える本が一冊あるといいなと考えたということもありました。

本書は、筆者が初心に戻り「自分がSQL を学び始めたときにこのような解説書があればよかった」と思える一冊に仕上げようという思いで筆を執ったものです。

(はじめに より)

誰のための本か

本書は以下の方に向けて書かれています。

  • これから SQL を学ぼうとしている方
  • SQL に苦手意識をもっている方
  • 普段 O/RM に頼っていてじつは 素の SQL には自信がないという方

本書がSQL をはじめて学ぶ方の学習の手助けになること、SQL に対して苦手意識をお持ちのかたが再入門するきっかけになることを願っています。

(はじめに より)

書名のとおり初心者向けではあるものの、SQL を基礎から改めて学び直したいという方も対象としています。

こだわりポイント1 : 反復

本書を読み終えたあと、SQL が以前より肌に馴染むようになっていて欲しい、ということが本書の構成を考えるうえでこだわったポイントです。

SQL を身につけるコツとしてお勧めしている方法を本書より引用します。

筆者がSQL初心者であったころの悩みは「それぞれの意味はわからなくないけど、なかなか覚えられない」というものでした。筆者の経験を踏まえて、1 つアドバイスがあります。それはコピー& ペーストに頼らず、自分の手でタイプして体になじませるというものです。

(84ページ 章末コラムより)

具体的な方法として以下を提案しています。

  1. SQL を書き写してみる(写経)
  2. 書き写したSQL の列名や絞り込み条件を変更してみる
  3. エラーが発生することを恐れずに、期待どおりの結果がでるまで書き直す
  4. 別のSQL を書き写してみる

(84ページ 章末コラムより)

この思想にもとづき、本書では多くの SELECT文 に ORDER BY句 や LIMIT句 が付与されていたり、INSERT文 実行結果を確認するための SELECT文 を添えたりしています。

  • 解説対象外であっても ORDER BY句 や LIMIT句 を使用している例
SELECT id,
       isbn,
       user_id,
       ROUND(score)
  FROM rating
 ORDER BY id ASC
 LIMIT 3;

SQL とその実行結果を一致させるという意味においては特別な配慮ではないかも知れませんが、冗長であっても実際に頻繁に使用するであろう SQL の構文をくり返し学んだほうがよいという意図をもってサンプルコード群が構成されています。

  • INSERT文のあとに SELECT文を使用している例
INSERT INTO b2 (published_at, id, title)
VALUES ('2017-09-14', '3', 'Angular アプリケーションプログラミング');

-- INSERT文 実行後の結果を確認
SELECT *
  FROM b2
 ORDER BY id DESC;

本書では INSERT文や UPDATE文 などのテーブルに対する更新処理を行ったあと、SELECT文 で処理内容の結果を確認するようにしています。

こだわりポイント 2 : ベン図

本書では図表による解説は必要最小限にしていますが、AND句 と OR句 の解説箇所ではベン図を多用しています。

f:id:iktakahiro:20180416233438p:plain:w300
(67ページより)

f:id:iktakahiro:20180416233455p:plain:w300
(72ページより)

図解書ではないのでメインはコードと文書ですが、JOIN や WHERE句 など、初学者にとって概念が難しいと思われる部分では図説を取り入れた解説を行っています。

サポートサイト公開中

本書に関するサポートサイトとして以下のリポジトリを作成しました。本書中で利用している主要な SQL コードも公開しています。

本書中では諸般の事情により VirtualBox を使って PostgreSQL の学習環境を構築しているのですが、上記リポジトリでは Docker を利用した学習環境の構築方法を解説しています。(ここだけの話ですが、著者としては Docker 利用を推奨します...!!)

コマンドラインが苦手な方は PostgreSQL と pgweb をセットで構築できる docker-compose.yml を使ってみると幸せになれるかも知れません。

f:id:iktakahiro:20180430141529p:plain:w600
参考: pgweb を使った PostgreSQL へのアクセス

レビュー記事(随時追記)

本書のレビューにご協力いただきました @t2y さんが素敵なレビューを書いてくださっています。

t2y.hatenablog.jp