SQLの奥深さに触れよう
セルコ
『プログラマのためのSQL第4版』
の歩き方
2013/09/13
日本MySQLユーザ会
坂井 恵
第5回札幌MySQL勉強会
今日は
の話をします。
自己紹介
• 坂井 恵(さかい けい) @sa
kaik
• 茨城県稲敷郡出身
• 千葉県我孫子市在住
■好き (参考)
ラーメン パズル 将棋(見るだけ)
自転車ロード(見るだけ) 音楽 歌舞伎(見
るだけ)
仕事と関係ないことを知ること 初めての街歩き
Facebook, twitter, gmail
など。
興味関心の合う方、おしゃべり
しましょう!
自己紹介
性格
基本的に、貧乏性。
「もったいない」
→遠出するなら、フルに周辺含めて楽しむ! いろんな用事を詰め込
みたい!
OSC-fukuoka の例とか、shimane の例とか
たいがい、行きと帰りでルートが違
う。
なるべく「1日多く」滞在する
ことの発端
梶山さんのご紹介で、つながった!
なんか上手に乗せられて
結局来ることに。
その他もろもろ、
今回の勉強会
『今回は数多くのMySQL書籍を執筆されて
いる坂井恵氏(@sakaik)をゲストとしてお招
きし』
・・・・数多く。。。。?
勉強会案内サイトでの、紹介文。
かどうかは、わかりませんが、、、
数多く?
こんな本の制作に関わってきまし
た。
キホンは共著。人と一緒にモノを作
り上げるのが、好き。
前置きはこれくらいにし
て・・・
セルコ!
今日のテーマ
セルコ
『プログラマのためのSQL』 第4版
• 発売日: 2013/0
5/23
• 著者: セルコ
• 監訳: ミック
• ページ数: 約800ページ
• 厚さ: 約4cm
• 価格: ¥4,830
その前の日本語版
(2001年)
第2版 日本語版
第3版は、日本語に翻訳されず
Joe Celko
12年の沈黙を破
り、
第4版の日本版
待望の出来!
セルコ
『プログラマのためのSQL』 第4版
• 発売日: 2013/0
5/23
• 著者: セルコ
• 監訳: ミック
• ページ数: 約800ページ
• 厚さ: 約4cm
• 価格: ¥4,830
なんの本なのか?
• 主に「SQL」について、
• ジョー・セルコが
• 気をつける点や、興味深い使い方などを
• 気が向くままに語ってくれている本
イメージとして・・・・・
「語り出すと止まらないジョー・セルコさんが、
飲み屋でSQLの話を始めてしまい、
もう誰も止められない状態。
(マイクを離さない状態)」
⇒でも、持っている知識と経験が膨大だから、おもしろ
い!
ここ、今日のポイント!
この雰囲気さえ掴んでくれたら
あとは、気楽にこの本を楽しんでも
らいたいです。
セルコの本は
• 網羅性を高めた学習書(学術書)じゃな
いけれども、結果として、網羅的!
• 読者として、とにかく自分の経験したこ
とのない世界を見ることができる。
しかも結構それらは「本質的」
厚さ比較 (2版vs4版)
セルコ4版 もくじ(日本版)
• 第1章 データベース VS ファイルシステム
• 第2章 トランザクションと同時実行制御
• 第3章 スキーマレベルのオブジェクト
• 第4章 ロケータと特別な数
• 第5章 基底テーブルとそれに関連する要素
• 第6章 手続き型プログラミング、半手続き
型プログラミング、宣言型プログラミング
• 第7章 手続き型の遺産
• 第8章 補助テーブル
• 第9章 正規化
• 第10章 数値型
• 第11章 時間型
• 第12章 文字列型
• 第13章 NULL:SQLにおける失われたデータ
• 第14章 複数列のデータ要素
• 第15章 テーブルの操作
• 第16章 比較演算子またはシータ演算子
• 第17章 評価述語
• 第18章 CASE式
• 第19章 LIKE述語とSIMILAR TO述語
• 第20章 BETWEEN述語とOVERLAPS述語
• 第21章 [NOT] IN 述語
• 第22章 EXISTS述語
• 第23章 量化子とサブクエリ述語
• 第24章 単純なSELECT文
• 第25章 高度なSELECT
• 第26章 仮想テーブル─ビュー、導出テーブ
ル、共通表式、マテリアライズドクエリテー
ブル
• 第27章 クエリによるデータの分割
• 第28章 グルーピング演算子
• 第29章 単純な集約関数
• 第30章 高度な集約、ウィンドウ関数、OLAP
• 第31章 SQLにおける記述統計
• 第32章 SQLにおける数列の扱い
• 第33章 SQLにおける配列
• 第34章 集合演算
• 第35章 部分集合
• 第36章 SQLで木と階層構造を扱う
• 第37章 SQLにおけるグラフ
• 第38章 時間を扱うクエリ
• 第39章 SQLの最適化
翻訳したのは
• ミックさん!
こんな本を書いたり翻訳したりされ
ています(セルコの既刊本もありま
す)。
※一部関係ない本も画像中には含ま
れています。
こんなお名前です
が、日本語もお上
手な、ふつうの日
本人です。
いや、、ふつうか
どうかのとらえ方
には、個人差があ
ります。個人の感
想です。
ミックさん
• 『SQLパズル』などの翻訳
• 『達人に学ぶSQL/DB設計』等の執
筆
• 膨大なDB知識と経験
• 現実的な解法とのバランス感覚
今回私は
• ご縁があって、本書の査読にて、お手伝
いをさせていただきました。
2012年7月 翻訳中であることを知る
お手伝いを申し出、尐し作業を開始するも、タイミング
合わずに
ほとんどお役には立てず m(_ _)m
2013年1月 初校開始。全力で読み、検証、調査、指摘etc
その後、2校も含め、前章読破(一部パスイチあり)
査読の効果 ⇒ 図書費がかからなくなった
普段、読書にあてている時間のほぼすべ
てを、本書の査読に充てたため、他の本
を全然買わなかったのです、この期間。
査読のススメ
査読をすると・・・・
(著者/訳者さんとの相性もありますが)
• 真剣に読む(何か言わなきゃいけないか
ら)
• わざと誤解しながら読む(理解度がわか
る)
• 著者への無限質問権つき!知人が本を書いていることを知ったら
「なにかお手伝いできることはありませんか」
と申し出てみよう!!
とにかく今回のセルコは、すご
い!
• 原書の誤り修正
• 原書のわかりにくい部分
の再構成
• すべてのクエリをOracleで
動作するよう書き換え
• 脚注の充実。洒落っ気。
• (なるべく)隅々まで行き届い
た、わかりやすい表現
英語版よりもていねいで正確。
もはや「日本語版」ではなく「日本版」
いま、セルコの第4版をもっとも良い状態
で読むことができるのは、日本人だけ!
http://d.hatena.ne.jp/sakaik/20130519/celko4ja
ということで、本書は英訳されて、全
世界の人々に読んでもらうべき!!
ここで一応セルコの(私の中で
の位置づけ)
データベース界の三神
• E.F.Codd -日本語で読める
文献は殆どない
• C.J.Date
• J.Celko
RDBMSの発明者
NULL嫌い
本日の話題の主役
Chris. J.Date
Amazonで 69,999 で入手可能 こちらも絶版?
電子化されて入手可能だそうです。
今回の札幌MySQL勉強会参加の方に教えて
いただきました!
話題をいくつか紹介
MySQLに関する話題
• 知ってた? WHERE句のIN節に書けるもの
• 左から処理するMySQL(15章)
• ソート順で、NULLは前?あと?(7章)
その他の話題
• クラーク・ケントの例の「意義と意味」(4
章)
• 原書の盛り上がりを地に落とす脚注(5章)
• アラビア語のUTF-8表現
以下、前ページの各項目やその他の項目につ
いて、ライブでお話をさせていただきまし
た。
資料はありません。
そのかわり、次ページ以降に、本公開資料用
に、メモを作成しました。
(補足)ざっとメモ程度ですが各項目につ
いて概要だけ追記しておきます(公開資料
用)
• 知ってた? WHERE句のIN節に書けるもの
– INの左側に書けるのはカラム名だけとは限らない。
– 左側に値、右辺の括弧内にカラムを並べてもいいんだよ。
• 左から処理するMySQL(15章)
– セルコ第4版では、選択クエリの列名羅列部分に記述されたもの
は「同時に」処理される、とあるが、MySQLでは左から順に評
価されていく。他のDBMSと異なるので、注意が必要。
• ソート順で、NULLは前?あと?(7章)
– NULLが含まれる可能性のある列でソートを行う場合、NULLを先
頭にもってきたい場合と、最後にしたい場合がある。
– MySQLのデフォルトでは、NULLは前(もっとも小さい)。
– クエリの書き方を工夫により、どちらにも対応可能
(オプション設定ではなく)
(補足)ざっとメモ程度ですが各項目につ
いて概要だけ追記しておきます(公開資料
用)
• クラーク・ケントの例の「意義と意味」(4章)
– いやぁ、ミックさんは、幅広い分野のことをご存じで、哲学にも造
詣が深いんですよ、というお話。
– セルコが、さらっと書いている話題には哲学的な前提知識を要する
ものがあって、それを丁重に説明していただきました。一部は脚注
にも反映されています。
• 原書の盛り上がりを地に落とす脚注(5章)
– とても現実的な「ミック節」炸裂。ぜひ読んでみてください。
• アラビア語のUTF-8表現
– コレーション問題の例としてセルコがあげているアラビア語の、頭
字、中字、尾字。実はUTF-8での表現はみんな一緒なのです、とい
う話。たぶんセルコの勘違い!?
• 400年問題
– 最後のほうの章に出てきた「400年ひとくみ」の話題。原書での
言っている内容がよくわからず、最後の最後まで頭を悩まされまし
た。

SQLの奥深さに触れよう セルコ第4版の歩き方~第5回札幌MySQL勉強会