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

32
SQLの奥深さに触れよう セルコ 『プログラマのためのSQL4版』 の歩き方 2013/09/13 日本MySQLユーザ会 坂井 5回札幌MySQL勉強会

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

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

SQLの奥深さに触れようセルコ

『プログラマのためのSQL第4版』の歩き方

2013/09/13日本MySQLユーザ会

坂井 恵

第5回札幌MySQL勉強会

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

今日は

の話をします。

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

自己紹介

• 坂井 恵(さかいけい) @sakaik

• 茨城県稲敷郡出身

• 千葉県我孫子市在住

■好き (参考)

ラーメン パズル 将棋(見るだけ)

自転車ロード(見るだけ) 音楽 歌舞伎(見るだけ)

仕事と関係ないことを知ること 初めての街歩き

Facebook, twitter, gmailなど。

興味関心の合う方、おしゃべりしましょう!

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

自己紹介

性格

基本的に、貧乏性。

「もったいない」

→遠出するなら、フルに周辺含めて楽しむ! いろんな用事を詰め込みたい!

OSC-fukuoka の例とか、shimane の例とかたいがい、行きと帰りでルートが違

う。なるべく「1日多く」滞在する

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

ことの発端

梶山さんのご紹介で、つながった!

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

なんか上手に乗せられて

結局来ることに。

その他もろもろ、

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

今回の勉強会

『今回は数多くのMySQL書籍を執筆されている坂井恵氏(@sakaik)をゲストとしてお招きし』

・・・・数多く。。。。?

勉強会案内サイトでの、紹介文。

かどうかは、わかりませんが、、、

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

数多く?

こんな本の制作に関わってきました。

キホンは共著。人と一緒にモノを作り上げるのが、好き。

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

前置きはこれくらいにして・・・

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

セルコ!

今日のテーマ

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

セルコ『プログラマのためのSQL』第4版

• 発売日: 2013/05/23

• 著者: セルコ

• 監訳: ミック

• ページ数: 約800ページ

• 厚さ: 約4cm

• 価格:¥4,830

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

その前の日本語版

(2001年)

第2版 日本語版

第3版は、日本語に翻訳されず

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

JoeCelko

12年の沈黙を破り、

第4版の日本版

待望の出来!

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

セルコ『プログラマのためのSQL』第4版

• 発売日: 2013/05/23

• 著者: セルコ

• 監訳: ミック

• ページ数: 約800ページ

• 厚さ: 約4cm

• 価格:¥4,830

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

なんの本なのか?

• 主に「SQL」について、

• ジョー・セルコが

• 気をつける点や、興味深い使い方などを

• 気が向くままに語ってくれている本

イメージとして・・・・・

「語り出すと止まらないジョー・セルコさんが、

飲み屋でSQLの話を始めてしまい、

もう誰も止められない状態。

(マイクを離さない状態)」⇒でも、持っている知識と経験が膨大だから、おもしろ

い!

ここ、今日のポイント!この雰囲気さえ掴んでくれたら

あとは、気楽にこの本を楽しんでもらいたいです。

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

セルコの本は

• 網羅性を高めた学習書(学術書)じゃないけれども、結果として、網羅的!

• 読者として、とにかく自分の経験したことのない世界を見ることができる。

しかも結構それらは「本質的」

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

厚さ比較 (2版vs4版)

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

セルコ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の最適化

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

翻訳したのは• ミックさん!

こんな本を書いたり翻訳したりされています(セルコの既刊本もあります)。

※一部関係ない本も画像中には含まれています。

こんなお名前ですが、日本語もお上手な、ふつうの日本人です。

いや、、ふつうかどうかのとらえ方には、個人差があります。個人の感想です。

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

ミックさん

• 『SQLパズル』などの翻訳

• 『達人に学ぶSQL/DB設計』等の執筆

• 膨大なDB知識と経験

• 現実的な解法とのバランス感覚

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

今回私は

• ご縁があって、本書の査読にて、お手伝いをさせていただきました。

2012年7月 翻訳中であることを知る

お手伝いを申し出、尐し作業を開始するも、タイミング合わずに

ほとんどお役には立てず m(_ _)m

2013年1月 初校開始。全力で読み、検証、調査、指摘etcその後、2校も含め、前章読破(一部パスイチあり)

査読の効果 ⇒ 図書費がかからなくなった

普段、読書にあてている時間のほぼすべてを、本書の査読に充てたため、他の本を全然買わなかったのです、この期間。

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

査読のススメ

査読をすると・・・・(著者/訳者さんとの相性もありますが)

• 真剣に読む(何か言わなきゃいけないから)

• わざと誤解しながら読む(理解度がわかる)

• 著者への無限質問権つき!知人が本を書いていることを知ったら「なにかお手伝いできることはありませんか」と申し出てみよう!!

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

とにかく今回のセルコは、すごい!

• 原書の誤り修正

• 原書のわかりにくい部分の再構成

• すべてのクエリをOracleで動作するよう書き換え

• 脚注の充実。洒落っ気。

• (なるべく)隅々まで行き届いた、わかりやすい表現

英語版よりもていねいで正確。もはや「日本語版」ではなく「日本版」

いま、セルコの第4版をもっとも良い状態で読むことができるのは、日本人だけ!

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

http://d.hatena.ne.jp/sakaik/20130519/celko4ja

ということで、本書は英訳されて、全世界の人々に読んでもらうべき!!

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

ここで一応セルコの(私の中での位置づけ)

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

データベース界の三神

•E.F.Codd -日本語で読める

文献は殆どない

•C.J.Date

•J.Celko

RDBMSの発明者

NULL嫌い

本日の話題の主役

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

Chris. J.Date

Amazonで \69,999 で入手可能 こちらも絶版?

電子化されて入手可能だそうです。今回の札幌MySQL勉強会参加の方に教えていただきました!

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

話題をいくつか紹介

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

MySQLに関する話題

• 知ってた? WHERE句のIN節に書けるもの

• 左から処理するMySQL(15章)

• ソート順で、NULLは前?あと?(7章)

その他の話題• クラーク・ケントの例の「意義と意味」(4章)

• 原書の盛り上がりを地に落とす脚注(5章)

• アラビア語のUTF-8表現

• 400年問題

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

以下、前ページの各項目やその他の項目について、ライブでお話をさせていただきました。

資料はありません。

そのかわり、次ページ以降に、本公開資料用に、メモを作成しました。

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

(補足)ざっとメモ程度ですが各項目について概要だけ追記しておきます(公開資料

用)• 知ってた? WHERE句のIN節に書けるもの

– INの左側に書けるのはカラム名だけとは限らない。

– 左側に値、右辺の括弧内にカラムを並べてもいいんだよ。

• 左から処理するMySQL(15章)– セルコ第4版では、選択クエリの列名羅列部分に記述されたもの

は「同時に」処理される、とあるが、MySQLでは左から順に評価されていく。他のDBMSと異なるので、注意が必要。

• ソート順で、NULLは前?あと?(7章)– NULLが含まれる可能性のある列でソートを行う場合、NULLを先

頭にもってきたい場合と、最後にしたい場合がある。

– MySQLのデフォルトでは、NULLは前(もっとも小さい)。

– クエリの書き方を工夫により、どちらにも対応可能

(オプション設定ではなく)

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

(補足)ざっとメモ程度ですが各項目について概要だけ追記しておきます(公開資料

用)• クラーク・ケントの例の「意義と意味」(4章)

– いやぁ、ミックさんは、幅広い分野のことをご存じで、哲学にも造詣が深いんですよ、というお話。

– セルコが、さらっと書いている話題には哲学的な前提知識を要するものがあって、それを丁重に説明していただきました。一部は脚注にも反映されています。

• 原書の盛り上がりを地に落とす脚注(5章)– とても現実的な「ミック節」炸裂。ぜひ読んでみてください。

• アラビア語のUTF-8表現– コレーション問題の例としてセルコがあげているアラビア語の、頭

字、中字、尾字。実はUTF-8での表現はみんな一緒なのです、という話。たぶんセルコの勘違い!?

• 400年問題– 最後のほうの章に出てきた「400年ひとくみ」の話題。原書での

言っている内容がよくわからず、最後の最後まで頭を悩まされました。