SQL パズル

エスキューエル パズル

プログラミングが変わる書き方 / 考え方

SQL パズルの表紙
アプリケーション
著者:
ジョー・セルコ / ミック(セルコ, ジョー / ミック)
出版社:
翔泳社
出版日:
2007年11月
ISBN:
9784798114132
在庫:
在庫あり
3.4(5 件 / 楽天ブックス)
上級者向け
SQLアプリケーションプログラミングデータベース集合演算実務向け問題解決データ分析SQL パズル高度な SQLRDB

なぜ注目されているか

言及数
49位
総合523位 ↑ 4 ランクアップ 言及 44 件・うち記事 41 件を掲載
0112120222023202420252026

書籍紹介

本書では、“ほかに類を見ない”高度な 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 件)

この本に興味がある方におすすめ

関連する本

ジョー・セルコ の他の書籍

関連記事

関連用語

共有: