Log

いろいろ

達人に学ぶSQL徹底指南書

有名な本はとりあえず読んでみたくなります。

達人に学ぶSQL徹底指南書 第2版 初級者で終わりたくないあなたへ

達人に学ぶSQL徹底指南書 第2版 初級者で終わりたくないあなたへ

 

概要

本書のコンセプトは「中級SQLプログラミング入門」です。実務でのSQLプログラミングの経験が半年から1年くらいある方を読書に想定しています。

おぉ。すごく良いコンセプト。初級者向けの本はたくさんありますが中級者向けとなるとグッと減りますよね。ちょうど実務でSQLの経験が1年ほどあるのでドンピシャかなと。毎日触っているわけではないですが。

本書は三部構成です。

  • 第1部 魔法のSQL
  • 第2部 リレーショナルデータベースの世界
  • 第3部 付録

付録は演習問題の解答と参考文献です。

第1部 魔法のSQL

一章毎にCASE式、ウィンドウ関数、自己結合などのSQLの道具を紹介しています。CASE式から始まっているようにド素人はお呼びでないです(最初に触れているのは理由があります)各テーマが長すぎず基本的には独立しているため空き時間などにも読みやすいです。

演習問題もついていたのですがSQLのクイズって楽しいですね。『SQLパズル』という本が言及されていたので今度買ってみようかと思います。

SQLパズル 第2版~プログラミングが変わる書き方/考え方

SQLパズル 第2版~プログラミングが変わる書き方/考え方

 

二章ほど抜き出し。

3値論理とNULL

  • NULLには未知(Unknown)と適用不能(Not Applicable)がある
  • NULLは値でも変数でもなく比較述語を適用できないため「=NULL」は不可
  • 真理値のunknownとNULLのUnknown(未知)は異なる
  • AND演算unknownが含まれるとunknownかfalseになる
  • NOT INとNOT EXISTSは同値ではない

この章とんでもなく大事な気がするので読み直さないとヤバい。

EXISTS述語の使い方

  • 述語は戻り値が真理値になる関数
  • EXISTSは引数に行集合をとる(二階の述語)
  • SQL存在量化EXISTSを実装しているが全称量化子を実装していない

第2部 リレーショナルデータベースの世界

SQLのバックグラウンドが分かる話。読み物として面白い。

手続き型から宣言型・集合指向へ頭を切り替える7箇条

この章にSQL的な考え方への指針がまとまっています。

  1. IF文やCASE文は、CASE式で置き換える。SQLはむしろ関数型言語と考え方が近い
  2. ループはGROUP BY句とウィンドウ関数で置き換える
  3. テーブルの行に順序はない
  4. テーブルを集合とみなそう
  5. EXISTS述語と「量化」の概念を理解しよう
  6. HAVING句の真価を学ぶ
  7. 四角を描くな、円を描け

NULL撲滅委員会

ここに書いてあります。

mickindex.sakura.ne.jp

おわりに

今年読んだ本で一番良かった。