SQL パズル
エスキューエル パズル
プログラミングが変わる書き方 / 考え方
- 著者:
- ジョー・セルコ / ミック(セルコ, ジョー / ミック)
- 出版社:
- 翔泳社
- 出版日:
- 2007年11月
- ISBN:
- 9784798114132
- 在庫:
- 在庫あり
なぜ注目されているか
書籍紹介
本書では、“ほかに類を見ない”高度な SQL プログラミングテクニックを、全 75 問の楽しいパズルを通じて解説する。パズルの主な題材は販売管理や売上ランキング、財務計算といった日常業務からとられ、標準規格 SQL-89 / 92 / 99 ベースの解答 SQL 文は非常に実践的。斬新なアイデアと知的な魅力にもあふれている。また、紹介されるテクニックは RDB の本質である集合論 / 集合演算をしっかり踏まえたもので、身に付いたコーディングスキルは幅広く応用が効く。現場の DB エンジニアやアプリケーション開発者に必携の 1 冊。
技書の森解説
『SQL パズル』は、販売管理や売上ランキング、財務計算といった日常業務から取った全 75 問のパズルを通じて、SQL の高度な書き方と考え方を身に付ける問題集です。著者はジョー・セルコ (Joe Celko) 氏、訳者はミック氏で、翔泳社から 2007 年 11 月に刊行されました。副題は「プログラミングが変わる書き方/考え方」、原題は Joe Celko's SQL puzzles and answers で、国立国会図書館の書誌では版表示が第 2 版です。版元の紹介文は、紹介するテクニックが RDB の本質である集合論と集合演算を踏まえたもので、現場の DB エンジニアやアプリケーション開発者に向けた本だと説明しています。
全 75 問の題材、期間の重複から入れ子集合まで
版元の登録情報の目次には、75 問のうち 10 問の題名と各問のテーマが載っています。会計年度テーブルを題材に範囲外の日付を入力させない制約を考える問題、欠勤の記録で条件付きの UPDATE と DELETE を書く問題、忙しい麻酔医とホテルの予約で重複する期間を抽出する問題、入館証で UPDATE に相関サブクエリを使う問題などです。ほかにも、あいまい検索と正規表現検索、ファイルのバージョン管理で順序を入れ子集合として表す問題、値の範囲に応じた結果を返すプリンターの割り当て、テーブルの大きさを最小限に抑える座席の問題、連続と直近を表現する年金の問題が並びます。題名はくだけていますが、テーマの側を見ると、制約の設計、更新処理、期間の扱い、検索といった業務のデータベースで繰り返し出てくる課題が並んでいることが分かります。
手続き型の発想から集合指向の SQL へ
SQL は、結果として欲しいデータの条件を書き、どう探すかはデータベースに任せる 宣言型の問い合わせ言語 です。ところが、手続き型のプログラミング言語に慣れた開発者ほど、1 行ずつ取り出してアプリケーション側でループを回し、条件を判定して書き戻すという発想に引き寄せられます。期間の重複を例に取ると、ある予約の開始が別の予約の終了より前で、かつ別の予約の開始がその予約の終了より前であれば 2 つは重なる、という 1 つの条件を自己結合に書くだけで、すべての重なりを一度に取り出せます。組織図やカテゴリのような 木構造 を表の行と列でどう持つかも、リレーショナルデータベースの古典的な難題です。親を指す列だけで持つと深さの分からない探索が必要になる一方、各行に範囲を表す 2 つの数値を持たせて包含関係で親子を表すと、ある節の下にある行を範囲の条件だけで取り出せます。版元の紹介文が挙げる集合論と集合演算の考え方は、こうした発想の切り替えにつながるものです。
標準 SQL ベースの解答を 2007 年の前提で読む
解答の SQL 文は、版元の紹介文によれば標準規格の SQL-89、SQL-92、SQL-99 をベースにしています。特定の製品の方言に頼らない書き方を学べる反面、実際に動かす時は、使っているデータベース製品の対応状況に合わせて書き換えが要る場合があります。2007 年の刊行時点の規格と製品を前提にした本である点も踏まえておく必要があります。どの製品で動かす場合も、元の解答がどの集合演算を組み合わせて条件を表しているかを読み解いておくと、別の書き方を選ぶ根拠になります。
業務の SQL を書く DB エンジニアに向く問題集
この本が合うのは、SELECT と結合と集約は日常的に書けるものの、複雑な条件になるとアプリケーション側の処理に逃げてしまう開発者や、業務のデータベースで制約と更新の設計を任される DB エンジニアです。SQL の文法を一から学ぶ入門書ではないので、まだ基本の構文に慣れていない段階なら、先に入門書で基礎を固めてから取り組むほうが無理がありません。データベースの本をどの順で読むかは データベース本ガイド にもまとめています。1 問ずつ自分の解答を書いてから著者の解答と見比べる使い方をすれば、業務で出会う難しい問い合わせを SQL の中で解き切る力を鍛える 1 冊になります。
言及した記事 (41 件)
SQL:ユーザーごとに最新レコードが欲しい
♡ 6SQL, db2, 初心者, Database技術書 読んだ順番を振り返ってみた
♡ 6C#, SQL, 技術書非エンジニア向けSQLの基礎
♡ 6SQL, 非エンジニアSQL棋譜並べ
♡ 3MySQL, SQLSQLパズルを学習する上で工夫したこと
♡ 2SQL, 学習, SQLパズル可視化 SQL | 中央値を求める
♡ 1SQL, 中央値, メジアン可視化 SQL | パズル#9 席あいてますか?その2
♡ 1SQL, パズル可視化SQL | LIFO と FIFO
♡ 1SQL, FIFO, パズル, LIFO可視化SQL | 期間を結合する(その3)
♡ 1SQL, 時間, join, 集合, HAVING可視化SQL | 期間を結合する(その2)
♡ 1SQL, case, 時間, 集合, HAVING
この本に興味がある方におすすめ
関連する本
ジョー・セルコ の他の書籍
関連記事
IT パスポート参考書の選び方 - 完読できる 1 冊と過去問の組み合わせ
IT パスポート試験の参考書選びを「完読できるか」を軸に整理。イラスト型 / 絞り込み型 / 丁寧解説型などテキストの個性の見分け方、過去問題集との組み合わせ、年度版とシラバス対応の注意点を 2026 年 8 月時点の定番書で解説します。
あなたの「積ん読」は投資ポートフォリオである
積ん読を罪悪感の対象ではなく、知識への分散投資として捉え直す視点を提案します。積ん読の戦略的な管理方法と、必要なときに引き出す仕組みも紹介します。
Web 開発本ガイド - フロントエンドからバックエンドまで
Web 開発の全体像を学べる技術書の選び方と学習マップを紹介。フレームワーク本の賞味期限問題と公式ドキュメントとの使い分けも解説します。