『達人に学ぶ SQL 徹底指南書』で SQL の可能性を知る
本書は SQL 初心者から中級者への架け橋となる本です (達人に学ぶ SQL 徹底指南書 第 2 版 初級者で終わりたくないあなたへ (翔泳社)). 本書の目玉となる case 式やウィンドウ関数を始めとした便利な道具を使いこなすための説明 + 練習問題に加え, SQL の理論的なバックグラウンドや歴史的経緯にも触れて, SQL がなぜそうなっているのかの疑問にも答えます (なぜループや変数がないのか, なぜ NULL 関係の動作が非直感的で複雑なのかなど). 基本的な構文は一通り分かったけど, 更に脱初心者を目指して学びを深めたい方におすすめです. 本記事では本書で挙げられた便利な道具について触れていきます. case 式 case 式は条件分岐を記述するための構文です. 1 2 3 4 CASE WHEN [predicate] THEN [value] WHEN [predicate] THEN [value] ELSE [value] END 例を見ると分かりやすいです. テスト用にテーブルを作ります. ヤギのデータです. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 create table goats ( id int PRIMARY KEY, weight INT UNSIGNED, birthday DATE, color VARCHAR(1), name VARCHAR(10)); insert into goats values(1, 63, '2016-03-02', 'W', 'Alice'); insert into goats values(2, 79, '2012-06-25', 'W', 'Bob'); insert into goats values(3, 76, '2020-02-01', 'W', 'Carl'); insert into goats values(4, 75, '2022-11-27', 'W', 'Dan'); insert into goats values(5, 70, '2014-08-29', 'B', 'Elie'); insert into goats values(6, 69, '2013-06-07', 'B', 'Fai'); insert into goats values(7, 67, '2013-01-16', 'B', 'Gabi'); insert into goats values(8, 63, '2014-05-14', 'B', 'Helen'); 1 2 3 4 5 6 7 8 9 10 11 12 13 select * from goats; +----+--------+------------+-------+-------+ | id | weight | birthday | color | name | +----+--------+------------+-------+-------+ | 1 | 63 | 2016-03-02 | W | Alice | | 2 | 79 | 2012-06-25 | W | Bob | | 3 | 76 | 2020-02-01 | W | Carl | | 4 | 75 | 2022-11-27 | W | Dan | | 5 | 70 | 2014-08-29 | B | Elie | | 6 | 69 | 2013-06-07 | B | Fai | | 7 | 67 | 2013-01-16 | B | Gabi | | 8 | 63 | 2014-05-14 | B | Helen | +----+--------+------------+-------+-------+ ヤギの体重が基準値に収まっているかどうかを調べることを考えます. 以下の基準を満たしている場合は ‘OK’, 満たしていない場合は ‘NG’ と表示することにします. ...