MySQL 最新情報と、
データベースのお勉強のスス
メ
@sakaik
2013/05/27
第 68 回 PHP 勉強会
@sakaik
@sakaik
• 足場は、「データベース」
            (主に
MySQL )
• 日本 MySQL ユーザ会
• PHP は最近、ご縁が少なめ
• 最近(趣味では)改めて Delphi
とか
一応「副代表」をやってます
。
よくできたツール ( 環境 + 言語 )
ですよ。
iPhone 向開発もできるし。
本日のメニュー
• MySQL の概要と最新バージョンの紹介
• MySQL よりももっと大切なこと。
  「データベース」のお勉強のススメ 
      --セルコ『プログラマのための SQL 第4版 
日本版』
豪華2本建て!!
私の立脚点
• みんなが最先端を追う必要はない
• 自分に必要な部分だけを使えばいいじゃ
ない
最先端の話題は、わくわくするし、格好良
くて憧れるけど、それが自分に必要なもの
とは限らない。
情報に振り回されずに、「自分に必要なこ
とを実現するために」道具を使いましょう
。
MySQL の基礎知識
• RDBMS (リレーショナル・データベー
ス管理システム) です。
• RDBMS とは、データの安全な格納、高速
な取り出しを基本とし、その他便利な機
能をいっぱいつけたものです。
• 「ストレージエンジン」レイヤの分離が
特徴
M y SQL のバージョン番号
• MySQL のバージョン番号は X.Y.Z 形式。
X.Y の部分がメジャーバージョンです。
 (バージョン X.Y シリーズ、という言い
方をする)
• 各メジャーバージョンでは、
– Alpha 、 Beta 、 RC または、
– Milestone 、 RC
5.1 シリーズとか、 5.6 シリーズとか
。
5.1.28 とか、そういう感じ
バージョン番号の後ろに、 m4 とか m5 と
かついているのが「マイルストンリリース」
です。ほぼベータレベル。
MySQL のメジャーバージョン
• MySQL 3.23 (2001) みんなが使い始めた
• MySQL 4.0 (2003) 使いやすくなってき
た
• MySQL 4.1 (2004) ノーコメント
• MySQL 5.0 (2005) 大きな進化
• MySQL 5.1 (2008) 更に大きな進化
• MySQL 5.5 (2010)Oracle 後初のメ
ジャー
• MySQL 5.6 (2013) 現在の最新バージョ
ン
MyNA (日本 MySQL ユーザ会)
■ 略歴
1997年 とみたまさひろ氏が日本語化パッチ
作成
1998年 メーリングリスト( ML )開始
2000年 「日本 MySQL ユーザ会 (MyNA) 」
 
       として発足
現在に至る MyNA: MySQL Nippon Association
参考: M y SQL の歴史
• 1995年 TcX が初バージョン公開
– 1997年 Ver.3.20 が stable に
• 1998年 日本語パッチが採用される
• 2000年 MySQL AB 設立
– 2001年 Ver. 3.23 が stable に
– 2003年 Ver. 4.0 が stable に
– 2004年 Ver. 4.1 が stable に
– 2005年 Ver. 5.0 が stable に
• 2005年 Oracle が InnoBase を買収
• 2006年 MySQL KK 設立
• 2008年 Sun Microsystems が買収
– 2008年 Ver. 5.1 が stable に
• 2010年 Oracle が買収
– 2010年 Ver. 5.5 が stable に
ユーザ会の歴史と見比べてみ
てください。
MyNA (日本 MySQL ユーザ
会)
■ 目的
– 日本での MySQL の普及を図る
– ユーザ間のコミュニケーションを図る
– MySQL の日本語化の検証/開発を行う
参考: 
 「 MySQL ユーザ会のこれまでとこれから」@デ
ブサミ 2011
     http://www.slideshare.net/tmtm/mysql-
6956074
必見!
閑話休題
MySQL 最新情報(再掲)
• MySQL 5.5 (2010)Oracle 後初のメ
ジャー
• MySQL 5.6 (2013) 現在の最新バージョ
ン
• MySQL 5.7 開発中 (milestone)
MySQL 5.5 ちょっとだけ
• utf8mb4 対応
   http://www.mysql.gr.jp/frame/modules/bwiki/index.php?cmd=read&page=utf8_4
• PERFORMANCE_SCHEMA 登場
• mysqld オプションの default-character-
set 廃止 > character-set-server に。
           http://d.hatena.ne.jp/sakaik/20100414/mysql533obsol
4 バイト UTF-8
いろんな実行状態の数値情
報を見られるの。でも 5.5
では、まだ見られるものは
少ない。
以前のバージョンから 5.5 にあげた
とき、ハマるよね。
エラーになった場合、 mysqld 起動ロ
グには、ちゃんと書かれているんだ
けど、意外と見落としがち。
MySQL 5.6  ( GA)
• InnoDB の高速化、便利化
– 処理スレッドの役割見直し
– Mutex 処理の最適化
– 統計情報を再起動後も引き継ぎ可能に
– デッドロック検出をエラーログに出力可能に
• INFORMATION_SCHEMA の充実
• PERFORMANCE_SCHEMA の充実
• レプリケーションの強化
– Binlog への書込をクラッシュセーフに
– RBR (行ベースレプリケーション)のフォーマット指定可能に
– 遅延レプリケーション
見ることのできる内容が増え
てきたよ。
電源が ぶちっ と行
っても、壊れにく
く。
リレーログから、スレーブ DB
に反映するのを遅延させる。
面白い使い方が色々妄想でき
ます。
MySQL 5.7 ( milestone)
• InnoDB の更なる発展
– 主にテンポラリテーブルに対する速度向上
– 地理情報型をサポート! (前バージョンでは BLOB  型に突っ込ん
でいた)
• 診断情報の取得 (GET DIAGNOSTICS)
• mysql クライアントコマンドの進化
– ctrl-c で終わらなくなった!(笑)
– --syslog オプションの追加
– --histignore オプションの追加 ( 履歴やログに残さないものの指
定)
• mysqlbinlog で DB 名を変更しての出力を可能に
• HANDLER 文が、パーティショニングされたテーブルに
も使用可能に
実行中に、よく作ったり破
棄したりするからね。
最近の流れは「 InnoDB の高速
化」 と 「内部の情報を得る仕組
みの充実」と言えます。
これ、超重要!
「データベースを知ろう」
NEXT
すんません。
ここまでで十分に時間をオーバーして
いたらしいのですが、豪華 2 本建ての
2 本目、ここからはじまります。
MySQL よりも
たいせつなこと
MySQL の使い方を
一生懸命
覚えようとしてちゃ
ダメなんです!!
何故駄目七日
• MySQL も PostgreSQL も DB2 も
Oracle 、それぞれ「単なるソフトのひと
つ」
• これらのソフトが作られた、根底となる
考え方というものがある。
• 考え方をつかむと、ツールの理解も早
い!
データベース界の三神
• E.F.Codd -日本語で読める文献
は殆どない
• C.J.Date
• J.Celko
RDBMSの発明者
NULL嫌い
本日の話題の主役
Chris. J.Date
Amazonで  69,999 で入手可能 こちらも絶版?
セルコウクライナの昔話です
。 老犬と狼の心温まる
友情物語!
これを読んでも、
データベースに詳しく
は なりません。・・
・が 話題作りには役
立ちます。
これも、 Amazon で在
庫なしになっていました
(絶版?)
もちろん私は
持っています。
Joe Celko
2001年日本語版
12 年前に翻訳され
た本ですが、色褪
せない内容。
でも英語では、
もう第 4 版が出て
いる。。。
Joe Celko
12 年の沈黙を破り
、
第 4 版の日本版
待望の出来!
セルコ
『プログラマのためのSQL』 第
4 版
• 発売日: 2013/0
5/23
• 著者: セルコ
• 監訳: ミック
• ページ数: 約 800 ペー
ジ
• 厚さ: 約4cm
• 価格: ¥4,830
日本人
アメリカ人
あの、分厚くて重
かった第 2 版が、
可愛く見える!
セルコ
『プログラマのためのSQL』 第
4 版
• RDBMS 的考え方の基本
• 膨大な量の翻訳
• 内容の検証、修正
• ふんだんな訳注
• 隅々まで行き届く気配り
セルコ
『プログラマのためのSQL』 第
4 版
• 協力させていただきました
(査読)
• 1 月から約4ヶ月
 (翻訳が完了した後の作業だけで、これだけ
かかる!)
■ sakaikのコダワリ
• 読む人のストレスをなるべ
く軽減する 
ツメの甘い本を見るたび
に、残念に思っていまし
た。  表記上の凡ミス
、コードと説明の不一致
など、つまらないことで
読む意欲が落ちてしまう
ことは減らしたいなぁと
( 本書に限らず ) 思ってい
ます。
翻訳は一体どれくらいか
かたのか。
セルコ
『プログラマのためのSQL』 第
4 版
重要ポイント
• SQLは集合だ!手続き型(ぐるぐる)では
ない。
• NULLには十分気をつけろ ( できれば避け
る)
• あとはRDBMSやSQLの基本的な考え方
を
  しっかりと説明 ( ACID 、分離レベル、
etc )
セルコ 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 の最適化
この本は難しいです。
• これからDBMSを学ぶ人
• 今まで単に「ツールの使い
方」を覚えてきただけの人
重要事項の説明:
35 号書面
こんな人は、この本を読んでも、
最初はちんぷんかんぷんだと思い
ます。
でも、それでいいんです。 本書
の内容に触れることが大切!
sakaikの意見
• この本に書かれていること全てに同意す
る必要はない。 
• この本に書かれていること全てを理解す
る必要はない。
• スゴイ人が語ってくれる内容に触れてお
くことは、いつか、絶対に役に立つ。
「絶対に」です!
セルコ第 4 版は
難しいところも多いと思う。
でも、お手元に一冊。
12 年間色あせなかった第 2 版の実績。
最後に
• この本は、セルコ 4 版の「単なる日本語
への翻訳版」ではありません。
• 英語版よりも、より正確で、丁寧で、愛
にあふれた本になっていると思います。
• この本を 「セルコ4版の日本版」と呼
びたい
(日本語版ではなく)
http://d.hatena.ne.jp/sakaik/20130519/celko4ja
Amazon でのご購
入は、こちらから
:-)  
セルコ
『プログラマのためのSQL』 第
4 版
• 発売日: 2013/0
5/23
• 著者: セルコ
• 監訳: ミック
• ページ数: 約 800 ペー
ジ
• 厚さ: 約4cm
• 重さ: 未計測
• 価格: ¥4,830
特別プレゼントタイム
先週出たばかりの
セルコ4版を
いまこの場で
あなたの手に!
※ 翔泳社さん、ミックさん、ご提供ありがとうございます!
Amazon では今、
1 ~ 4 週間待ち!
Thank you

MySQL最新情報と、データベースのお勉強のススメ-第68回PHP勉強会