やわらかテック

興味のあること。業務を通して得られた発見。個人的に試してみたことをアウトプットしています🍵

スッキリわかるSQL第3版の発売に合わせて手元PCで実行できるようになっていた

SQLの習得にはスッキリわかるSQLでしょ

私がSQLが全く分からなかった時に非常にお世話になったのがインプレスから出版されている「スッキリわかるSQL入門」という書籍です。

www.okb-shelf.work

対話形式で図やイラストが多く、SQLをほとんど全く知らなかった自分でもスラスラと読み進めることが出来ました。第2版では各章に練習問題が。最終章で練習問題が4つの大問に分けて222問も用意されており、覚えた内容を実践することが出来ます。
(※なんと第3版では問題数が256問になったみたいです)

覚えた内容を実践できるという点で非常に素晴らしい本なのですが、一点だけ問題がありました。

手元のPCで練習問題をやりづらい

スッキリわかるSQL入門の出版に合わせて、「dokoQL」というブラウザでSQLを実行できる実行環境が提供されています。各練習問題に対応するページを開くと、すでにサンプルデータが投入された状態から始まるため、自分が書いたSQLが思ったように動作しているかを視覚的に確認することが可能なため、SQLの学習にはもってこいです。

しかしながら、このdokoQLには入力文字数の制限や、改行が文字数としてカウントされている(2022年4月時)など少々、癖があります。また、各練習問題を開いた時点で、すでに入力箇所に答えが入力されてしまっているというのも「解くぞ!」という気持ちを削いでしまいます。

そして、さらなるSQLの上達を目指すのであれば、手元のPCでデータベースの構築から初めて、psql等で実際にSQLを打ち込みながら練習問題を解いていくのが重要だと僕は考えています。しかしながら、サンプルデータの配布は第2版発売時点ではされておらず、dokoSQLに登録されているものを、自分でINSERT文を書いて、構築したデータベースに投入する必要がありました。

サンプルデータを配布して良いか問い合わせてみた

そんなこともあり、自分と同じ要望を持つ方が多くいらっしゃることも知り、自分が作成したサンプルデータのINSERT文を.sqlファイル形式にしたものを配布して良いか、著作権の侵害にならないかという旨を監修されている株式会社フレアリンク様に問い合わせてみました。

すると、ありがたいことに著者の中山清喬さんから3時間ほどでお返事を頂きました。返信の内容は以下の通りでした。

同じような要望をお持ちの方が多い為、第3版の出版に合わせてsetup可能なデータを配布しております。
著者は出版契約書にて、出版社に対して「5年間、運用やサポートを維持すること」を保証しているため、個人でファイル配布を行うと、その負担が発生してしまいます。そのような負担を自分以外が負うことをおすすめできません。
そのため、配布についてはご遠慮をいただいております。

...!

何と第3版の出版に合わせてgithubにてsetupファイルが公開されていました。

github.com

これはまさに自分が求めていたものです。サンプルデータ投入のINSERTも含まれています。

sukkiri-sql3-codes/pre_quizapx1.sql at main · miyabilink/sukkiri-sql3-codes · GitHub

-- 見やすさのため改行をしています --
CREATE TABLE 口座 (  口座番号 CHAR(7), 名義 VARCHAR(40), 種別 CHAR(1), 残高 INTEGER, 更新日 DATE  );
CREATE TABLE 廃止口座 (  口座番号 CHAR(7), 名義 VARCHAR(40), 種別 CHAR(1), 解約時残高 INTEGER, 解約日 DATE  );
CREATE TABLE 取引 (  取引番号 INTEGER, 取引事由ID INTEGER, 日付 DATE, 口座番号 CHAR(7), 入金額 INTEGER, 出金額 INTEGER  );
CREATE TABLE 取引事由 (  取引事由ID INTEGER, 取引事由名 VARCHAR(20)  );
INSERT INTO 口座 ( 口座番号,名義,種別,残高,更新日 ) VALUES ( '0037651','キタムラ ユウコ',1,1341107,'2022-01-03' );
:
:

これがあれば、簡単にスッキリわかるSQL入門の練習問題を試すことが出来る環境を作ることが出来ますね!
また、中山さんには迅速かつ丁寧な回答を頂きました。対応頂きまして、ありがとうございました。

環境構築Done!

配布されている.sqlファイルを用いて、問題なく改めて手元PCで環境を構築することが出来ました。

postgres=# SELECT * FROM 口座;
 口座番号 |           名義           | 種別 |  残高   |   更新日   
----------+--------------------------+------+---------+------------
 0100807  | アキタ サトル           | 3    |   10000 | 2016-11-30
 0311240  | キムラ タエ             | 1    |   63409 | 2018-03-20
 0887132  | スギノ ノリヨ           | 1    | 3491000 | 2018-03-11
 0976410  | タムラ タカシ           | 1    |    9803 | 2016-08-30
 1016840  | オカダ トシロウ         | 2    |       0 | 2017-11-13
:
: