第6回札幌MySQL勉強会参画

第6回目となる「札幌MySQL勉強会」に参加してきました。
第5回も参加していたので、2度続けての参加となります。前回は2年半も前だけど(笑)。
atnd.org


f:id:sakaik:20160130183510j:plain

メニューはこんな感じ:

・@nobuhatanoさんの、「Mroonga を3年つかってみた」
・@yukiconExさんの、「ボトムアップで憶えるMySQL Nested Loop Join」
・やちさんの、PostgreSQL 9.5最新情報 
・坂井の、雑多な話(MySQL 5.7の最新情報とか新機能とかを中心に)

 これまで札幌には7,8回訪問していますが、一度も雪が降っているのを見たことがない。8回も行って一度もないということは、確率的に見て、これはもう「札幌に雪が降るというのはウソである!誰かの陰謀で作り上げられた虚像である!」と考えて良いでしょう。*1
 それを確かめるために、今回札幌にまた行ってみることにしました。

雪、ありました! なにやら形になっています! 札幌の雪、すごい!!
f:id:sakaik:20160130130727j:plain


 さて、勉強会の話に戻って、、、、
土曜日にも関わらず、10人くらいの方が参加されていました。富良野の勉強会とも繋いで、ご覧いただいていたのですが、あまりコミュニケーションが双方向でなく、せっかくなのにちょっと物足りなかったですね。一緒にやっている感を、次回ある時にはもうちょっと工夫してみたいところです。っていうか、中継じゃなくて、富良野、行きたい。

 私のお話は、
・自己紹介がてら、地元千葉県の紹介とかも
・「外に出よう」なご提案。「最先端じゃない情報も発信しよう!」なお話も。
MySQLの情報源や、MySQL5.7のお話

 の3つの部で構成させていただきました。
「外に出よう」なお話。自分の地元以外の場所での出逢いから、楽しいことが広がることも多いのですよ、という事をお伝えしたかったのですが、直前にバッサリ内容削った事もあって、ちょっと「伝わった感」が薄かったのが残念でした。コンパクトにぐぐっと伝えるテクニックが欲しい。。
 それから、MySQLを試して自分なりの発見があったとき、ブログ等に「自分なりの」気づきをどんどん書いて欲しいなぁと、常日頃から思っています。最先端の情報は今も盛んに投稿/更新されているのですが、そうでない部分の情報が「こんなの今更自分が書かなくてもいいよな」とか「みんな知ってるよね」などと勝手に判断して、書かない人が多いことでしょう。でも、「あなたよりも知らない人は、その情報を知らない」のです。あなたが、自分の前を行く人達の情報に助けてもらったように、あたなは、あなたの後ろから来る人のために道しるべを残して欲しい。そんなお話をさせていただきました。これ、ここ数十ヶ月(=数年)の私のテーマでもあるので、いずれ、もうちょっとまとまった形で整理したいなぁ。

 MySQL5.7については、要するに、速くなって、安全になって、いろいろ機能も増えた、という言葉がすべてです(笑)。新機能の中でも、今ちょっぴり spatial(空間情報)型に注目しているという紹介と、世間を騒がせた「パスワード360日問題」で次のマイナーバージョンではパスワード有効期限のデフォルトがゼロに変更されるよ、yoku0825さん++」というお話などをさせていただきました。
 資料公開しようと思ったけど、口頭補助を前提に作った資料だったので、見てわかるようにするのに手を加える必要がありそうです(あとまわしになっています。。)


 懇親会は、当然ジンギスカン。そしてその後は〆にラーメンを食べに行って、アタマもオナカも満足した札幌訪問でした。またやりましょう!

*1:種明かしすると、毎年ほぼ6月、たまに9月や11月に行っているのです

オープンソースカンファレンス(OSC)2015-Hamanako参加

 オープンソースカンファレンス2016浜名湖(OSC2016-Hamanako)に参加してきました。
浜松での開催で、初回(OSC-Hamamatsuと称していた時)以来の久々の参加です。
前の週と翌週とに別件の遠出の予定が入っていたので、今回のOSC-Hamanakoも参加しない予定だったのですが、昨年末の OSC2015-Tokushima でこちらの実行委員長さんに会ってしまい、「来てよ」と言われれば、行かないわけにはいきませんよね(笑)。
 http://www.ospn.jp/osc2016-hamanako/

f:id:sakaik:20160123093116j:plain


 OSCへの参加は、前夜祭が命! 濃い話も熱い話も満載となることが多いので、毎度楽しみにしています。今回も、金曜日の都内での用事を済ませた後に新幹線で浜松入り。マインシュロスというオシャレなビアホールでした。地ビールを売りにしているだけあって、ビールがおいしかったですね。その後は、有志で浜松餃子を食べに。すでにお腹は満足していたので、4人で3人前の餃子を頼んだのですが、あまりにおいしくて、更に4人前を追加しました。写真は4人前。
f:id:sakaik:20160122214919j:plain:h330 f:id:sakaik:20160122224205j:plain:w330


 とても良い、OSC2016-Hamamatsu 参加でした!!






・・・・と言いたくなるくらい、前夜祭で満足(笑)。

 当日は、出世大名家康くんも来てくれました。MySQLのマスコットであるイルカ(サキラ)とパチリ。f:id:sakaik:20160123101532j:plain:h300
比較的まったりとした会だったので、少し他のブースでお話を聞いたり、久々の知人らにご挨拶をしたりしながら、大部分の時間を自ブースでお喋りして過ごしました。いろんな事を教えてもらって、ついでにこの時間内に bugs.mysql にひとつ報告を揚げたりして、有意義でした^^
はじめて具体的に「MySQL 5.8」という文字を目にすることができたのも、大きな収穫。


 懇親会後、21:59の電車で帰路。通常の懇親会(1次会)を慌ただしくもなく最後まで居る事ができて、駅でおみやげ買う時間も十分にある状態で、帰宅できるというのは、新幹線やっぱりすごいですね。日本がぐっと狭くなる。土曜日の最終の東京に向かうひかり車内は、こんな感じ。
f:id:sakaik:20160123215847j:plain:w330

MySQL の "0000-00-00" は NULL?

数日前に、とみたまさひろさんのこんなツイートがありました。

MySQL :: MySQL 5.6 リファレンスマニュアル :: 12.3.2 比較関数と演算子
"NOT NULL として宣言された DATE および DATETIME カラムでは、次のようなステートメントを使用することで、特殊な日付 '0000-00-00' を検索できます"

その後の twitter でのとみたさんとのやりとりも含め、なんじゃそりゃな仕様に興味を持ったので、自分でも試してみました。


テーブルを作ります。

mysql> CREATE TABLE dtsample (id integer, dt date);

データを入れます。一応中身も見てみる。

mysql> INSERT INTO dtsample values (1, null), (2, "0000-00-00"), (3, "0000-00-00"), (4, "2015-03-10"), (5, "2014-11-05"),(6,"2016-01-01");
mysql> SELECT * FROM dtsample;
+------+------------+
| id   | dt         |
+------+------------+
|    1 | NULL       |
|    2 | 0000-00-00 |
|    3 | 0000-00-00 |
|    4 | 2015-03-10 |
|    5 | 2014-11-05 |
|    6 | 2016-01-01 |
+------+------------+


このテーブルから、NULLのものと、NOT NULL のものを検索してみます。

mysql> SELECT * FROM dtsample WHERE dt IS NULL;           
+------+------+
| id   | dt   |
+------+------+
|    1 | NULL |
+------+------+

mysql> SELECT * FROM dtsample WHERE dt IS NOT NULL;
+------+------------+
| id   | dt         |
+------+------------+
|    2 | 0000-00-00 |
|    3 | 0000-00-00 |
|    4 | 2015-03-10 |
|    5 | 2014-11-05 |
|    6 | 2016-01-01 |
+------+------------+


あれれ? 普通ですね。6件のうち、IS NULLが1件、IS NOT NULLが5件。
もう一度マニュアルをよく読んでみましょう。

NOT NULL として宣言された DATE および DATETIME カラムでは、次のようなステートメントを使用することで、特殊な日付 '0000-00-00' を検索できます。

カラム定義として、NOT NULL 制約が必要だったようです。
やりなおおし。

mysql> CREATE TABLE dtsample2 (id integer, dt date NOT NULL);

mysql> INSERT INTO dtsample2 values (11, null), (12, "0000-00-00"), (13, "0000-00-00"), (14, "2015-03-10"), (15, "2014-11-05"),(16,"2016-01-01");
ERROR 1048 (23000): Column 'dt' cannot be null

mysql> INSERT INTO dtsample2 values (12, "0000-00-00"), (13, "0000-00-00"), (14, "2015-03-10"), (15, "2014-11-05"),(16,"2016-01-01");
Records: 5  Duplicates: 0  Warnings: 0

mysql> SELECT * FROM dtsample2 WHERE dt IS NOT NULL;      
+------+------------+
| id   | dt         |
+------+------------+
|   12 | 0000-00-00 |
|   13 | 0000-00-00 |
|   14 | 2015-03-10 |
|   15 | 2014-11-05 |
|   16 | 2016-01-01 |
+------+------------+

 先ほどと同じデータを登録しようとしたら、カラムの NOT NULL 制約のために id=11 のデータが登録できなかったので、除外して登録しました。


 さて、ショータイムっ!

NULL のものと NOT NULL のものを、見てみましょう。まず IS NOT NULL。

mysql> SELECT * FROM dtsample2 WHERE dt IS NOT NULL;      
+------+------------+
| id   | dt         |
+------+------------+
|   12 | 0000-00-00 |
|   13 | 0000-00-00 |
|   14 | 2015-03-10 |
|   15 | 2014-11-05 |
|   16 | 2016-01-01 |
+------+------------+

 うん。NOT NULL なんだから、この5件が出ますよね。問題ない。
次に IS NULL。

mysql> SELECT * FROM dtsample2 WHERE dt IS NULL; 
+------+------------+
| id   | dt         |
+------+------------+
|   12 | 0000-00-00 |
|   13 | 0000-00-00 |
+------+------------+

 2件が出てきました。へんなの。
これは、マニュアルにも書いてあるとおり、バグではなく狙ってこのような仕様になっているとのことです。

ODBC では '0000-00-00' 日付値がサポートされていないため、一部の ODBC アプリケーションを取得する際に、これが必要になります。


 カウントも取ってみましょうか。

mysql> SELECT COUNT(*) FROM dtsample2 WHERE dt IS NULL;
+----------+
| COUNT(*) |
+----------+
|        2 |
+----------+

mysql> SELECT COUNT(*) FROM dtsample2 WHERE dt IS NOT NULL;
+----------+
| COUNT(*) |
+----------+
|        5 |
+----------+

 髪結新三もびっくり。大家さんもびっくり。
「上が十両、下が五両。十両と五両で十五りょ、、、、、りょりょりょ????」まぁ新三のお話の場合は十両と五両で18両くらいになったりするわけで両者ハッピーでしょうけど、RDBMSではこれは困ります。というか気持ち悪い。エチケット袋が必要です。


 更に、この NULL 判定については、微妙に半端な対応になっているようで、CASE文の中の判定では、"0000-00-00" も NULL とは判定されません。

mysql> SELECT id,
    ->        CASE WHEN dt IS NULL THEN 1 ELSE 0 END is_null, 
    ->        CASE WHEN dt IS NOT NULL THEN 1 ELSE 0 END is_not_null
    ->   FROM dtsample2;
+------+---------+-------------+
| id   | is_null | is_not_null |
+------+---------+-------------+
|   12 |       0 |           1 |
|   13 |       0 |           1 |
|   14 |       0 |           1 |
|   15 |       0 |           1 |
|   16 |       0 |           1 |
+------+---------+-------------+

 ID IN (12,13) のところでは is_null にも is_not_null にも 両方に 1 が立つことを期待していたのですが、そうはなりませんでした。WHERE dt IS NULL の COUNT(*) が2件もあったのにねぇ。


 こんな感じで、とみたまさひろさんの発見(発掘?)した、MySQL の新しい楽しみ方を紹介しました。みなさまよいお年を!

2015年12月:アドヴェントカレンダー「MySQLマニュアルを読む」記録(リンク集)

おそらく一生で最初で最後の「ひとりアドヴェントカレンダー」を完走した記念に、自分の日記のところでもカレンダー形式のリンク集を作って見ました、、、、、が、単純にはてな記法するだけだと崩れまくりです(^^; まぁいいや。

完走記念(というわけではありませんが)1月半ばに福岡で sakaikを囲む会(通称さかいかい)やります。福岡のみなさん、あそびましょ!呑むだけですが。

2015年12月:アドヴェントカレンダー「MySQLマニュアルを読む」

30 1MySQLのリファレンスマニュアルを読もう 2MySQLリファレンスマニュアルのURL 3MySQLマニュアルの「チュートリアル」 4MySQLの数値数学関数いろいろ 5MySQLマニュアルより「制限事項」 6MySQLマニュアルから「型」いろいろ
7MySQLの文字列関数はこんなにある 8MySQLで使うファイルフォーマットも書かれているマニュアル! 9MySQLのサンプルデータベースはココにある 10MySQLの構文をマニュアルでしっかり確認してみよう 11MySQL 5.7で一瞬だけ入ったSELECT構文内の句 12MySQLマニュアルの「Topic」での一覧表示 13MySQLの公式yumリポジトリでのメジャーバージョン更新方法
14MySQLメジャーバージョンアップ後に必要なスクリプト 15マニュアル以外にもあるMySQLの最新情報源 16MySQLマニュアルはダウンロードして手元にも! 17MySQLの様々な拡張方法を知る 18MySQLマニュアルの「INFOR MATION _SCHEMA」を読む 19MySQLの新しい「sys」スキーマ 20MySQLマニュアルでのバージョン番号の説明とか
21MySQLマニュアル、5.6と5.7の違い(Level 1) 22MySQLマニュアル、5.6と5.7の違い(Level 2) 23MySQL Workbench のマニュアルは本体とは別にあった 24MySQLサーバの複数立ち上げ 25MySQLマニュアル(html)に章番号とかが欲しい 26 27


qiita.com


■その他のMySQL関連(MySQLまたはMySQLな人)アドベントカレンダー2015
qiita.com
qiita.com
qiita.com
qiita.com

MySQLマニュアル(html)に章番号とかが欲しい

この記事は、2015年「MySQLマニュアルを読む」アドベントカレンダーの最終日25日目です.


 かつてないほど(当社比)にMySQLのマニュアルに触れた25日間も今日が最終日。毎日面白いこと探しのためにマニュアルを眺めていると、不便に感じることがあります。それは、「htmlマニュアルの左側のブロックにあるインデックス(もくじ)に章などの番号がないこと」です。

f:id:sakaik:20151225214915j:plain

 クリックしてマニュアル本体を表示させれば、そちら側には番号があるのですが、第何章を見たいと思った時に、なかなか一発で希望の章に到達できませんし、やはり章番号のついていない目次は、のっぺりとしていて高さの壁を一層つらく感じてしまいます。

 ということで、おそるおそる希望を出してみました。bugs に書くのは、もしかしたら初めてなのかも。(昔なにかを書いた気がするのは、別アカウントだったからなのか記憶違いなのか、とにかく履歴には出てこないので。。)
 こんな感じでよかったのでしょうか。>諸先輩方

https://bugs.mysql.com/bug.php?id=79769

シビアさS4で出しちゃったからか、まだ誰も相手にしてくれませんが、たぶんちょっとしたことだと思うので、対応してくれたらいいなぁと願っています。



それから、MySQL 5.6 の日本語マニュアルには PDF でのダウンロードが提供されていません。きっとPDF作成時のフォントの問題だと思うのですが、PDFでも欲しいですよね。たぶん非ネイティブにはふぉんとに難しい問題なのかもしれませんが。。これも bugs に上げていい話題なのかしらん。。


 ということで、なんとか書き切った「ひとりアドヴェントカレンダー」。苦し紛れの日もあり、心から書きたかった話題を書いた日もあり、ひとつくらいは読んで下さった方のお役に立てたことがあれば嬉しいです。


私にとっては、マニュアル読むぞと大騒ぎした結果、yoku0825さんの血豆の滲むような、この努力の話を聞けたこと*1が、大きな収穫でした。このマニュアル(しかもバージョン5.1の、日本語への翻訳が必要な日本語マニュアル)を3度も読んだというのが、今のyokuさんのベースになっているのだと、納得しました。 やっぱり yokuさんはよく読んでる。

www.slideshare.net



 毎日少しマニュアルを読んで翌日はまた別の話題に移る、というのが、意外にもストレスだったので、今後は書きたい内容や情報がある程度まとまってから書きたいと思います。25日間お付き合いして下さった方がもし居たとしたら、ありがとうございました!メリークリスマス。

*1:1年半ほど前のものでしたが見落としていました

MySQLサーバの複数立ち上げ

この記事は、2015年「MySQLマニュアルを読む」アドベントカレンダーの24日目のぶんです.


 MySQLサーバは、1台のマシン(というか、ひとつのOS)の上に複数立ち上げることができます。1台でレプリケーションの実験をしたり、複数のバージョンの動作を比較してみたい時などに便利です。
原理としては、データディレクトリとポートをそれぞれの mysqld プロセスごとに用意すれば良いわけですが、このあたりのことも、その他のオプションを含め、ちゃんとマニュアルにくわしく説明されています。


MySQL :: MySQL 5.7 Reference Manual :: 5.3 Running Multiple MySQL Instances on One Machine

5.3.1 Setting Up Multiple Data Directories
5.3.2 Running Multiple MySQL Instances on Windows
    5.3.2.1 Starting Multiple MySQL Instances at the Windows Command Line
    5.3.2.2 Starting Multiple MySQL Instances as Windows Services
5.3.3 Running Multiple MySQL Instances on Unix
5.3.4 Using Client Programs in a Multiple-Server Environment

 基本的な事項の説明のほか、WindowsUNIX系 それぞれについての節が設けられています。

 この章で説明されている手順で、手作業により複数の mysqld を実行することもできますが、複数立ち上げを助けてくれる、mysqld_multiというスクリプトもあります。
これは別の章にて説明されています。
MySQL :: MySQL 5.7 Reference Manual :: 4.3.4 mysqld_multi — Manage Multiple MySQL Servers

なお、この mysqld_multi は、UNIX系のみでなく、Windows版のアーカイブにも含まれています。mysqld_multi.pl という名前で、一応中身には Windows 用のパス定義が書かれていたりするので、ちゃんと動作することを意図したものだと思われます(動かしたことがないので、わからない)。


最近こういうのを全然試せていないので、落ち着いたら*1、試してみたいところです。「積ん試したいもの」が、こうして増えていく。。。

*1:と言っているといつまでも落ち着かないので「落ち着かせて」ですね

MySQL Workbench のマニュアルは本体とは別にあった

この記事は、2015年「MySQLマニュアルを読む」アドベントカレンダーの23日目です.


 こんにちは!つらいです!
マニュアルをふわふわと眺めるだけのフェーズを過ぎて、やはり、ひとつひとつ実際に試してみたいフェーズに入ってきました。毎日数十分程度の時間じゃぁできません。。
ということで本日はライトな話題で。

 MySQLのリファレンスマニュアルには、最終章(26章)に、「MySQL Workbench」という章があります。
ただひとつの節からなるシンプルな章だなぁと思って、中身を読んだことがなかったのですが、ちゃんと見てみたら、MySQL本体マニュアルとは別に、Workbench 専用のマニュアルがあると、書かれていました。しかも、このページ内にある唯一のリンクで、すぐに気づきそうなものなのに。。。

 ちなみに、本マニュアルによると MySQL Workbenchは、MySQL 5.1以上に対応。5.0でも動くけどいくつかの機能がサポートされない、4.x シリーズはサポートされない、とのことです。


 さて、その MySQL Workbench のマニュアルは、こちら。
http://dev.mysql.com/doc/workbench/en/

 バージョン番号が含まれないのですね。ここで現在公開されているのは、MySQL Workbench 6 (6.0~6.3) のマニュアルとなります。


MySQL Workbench の全もくじを以下に掲載します。
みんなだいすき「Extending」の説明もありますよ!

MySQL Workbench Table of Contents

1 General Information
    1.1 What Is New in MySQL Workbench 6
        1.1.1 New in MySQL Workbench 6.3
        1.1.2 New in MySQL Workbench 6.2
        1.1.3 New in MySQL Workbench 6.1
        1.1.4 New in MySQL Workbench 6.0
    1.2 MySQL Workbench Editions
2 Installation
    2.1 System Requirements
    2.2 Command-line options
    2.3 MySQL Workbench on Windows
        2.3.1 Installing
        2.3.2 Launching
        2.3.3 Uninstalling
    2.4 MySQL Workbench on Linux
        2.4.1 Installing
        2.4.2 Launching
        2.4.3 Uninstalling
    2.5 MySQL Workbench on OS X
        2.5.1 Installing
        2.5.2 Launching
        2.5.3 Uninstalling
3 Configuration
    3.1 User Accessibility Options
    3.2 Workbench Preferences
        3.2.1 General Editors Preferences
        3.2.2 SQL Editor Preferences
        3.2.3 Administration Preferences
        3.2.4 Modeling Preferences
        3.2.5 Fonts and Colors Preferences
        3.2.6 Other Preferences
    3.3 MySQL Workbench Settings and Log Files
    3.4 Tutorial: Add a Custom Link to the Home Page
    3.5 Common Preferences and Configurations
4 The Home Screen
5 MySQL Connections
    5.1 Creating A New MySQL Connection (Simple)
    5.2 Creating A New MySQL Connection (Tutorial)
    5.3 Manage Server Connections
        5.3.1 Standard TCP/IP Connection Method
        5.3.2 Local Socket/Pipe Connection Method
        5.3.3 Standard TCP/IP over SSH Connection Method
        5.3.4 SSL Wizard  (Certificates)
        5.3.5 System Profile
        5.3.6 Configure Server Management Wizard
        5.3.7 The Password Storage Vault
    5.4 MySQL Fabric Integration
    5.5 Client Connections
6 Administrative Tasks
    6.1 Server Management
        6.1.1 MySQL Connection Navigator
        6.1.2 Server Logs
        6.1.3 Service Control
        6.1.4 Configuration  (options file)
    6.2 Users and Privileges
    6.3 Server Status
    6.4 Status and System Variables
    6.5 Data Export and Import
        6.5.1 Table Data Export and Import Wizard
        6.5.2 SQL Data Export and Import Wizard
        6.5.3 Result Data Export and Import
    6.6 MySQL Audit Inspector Interface
    6.7 MySQL Enterprise Backup Interface
        6.7.1 General Requirements
        6.7.2 Online Backup
        6.7.3 Backup Recovery
    6.8 MySQL Enterprise Firewall Interface
    6.9 The wbcopytables Tool
7 Performance Tools
    7.1 Performance Dashboard
    7.2 Performance Schema Reports
    7.3 Visual Explain Plan
    7.4 Query Statistics
    7.5 Tutorial: Using Visual Explain to improve query performance
8 Database Development
    8.1 Visual SQL Editor
        8.1.1 SQL Query Window
        8.1.2 SQL Query Window Toolbar
        8.1.3 Query and Edit Menus
        8.1.4 Results Window
        8.1.5 SQL Snippets tab
        8.1.6 Context Sensitive Help
        8.1.7 Output History Panel
        8.1.8 Table Data Search Panel
        8.1.9 Export  /  Import a Table
        8.1.10 Tutorial:  Adding Data
        8.1.11 The MySQL Table Editor
        8.1.12 Code Generation Overview
    8.2 Object Management
        8.2.1 Object Browser and Editor Navigator
        8.2.2 Session and Object Information Panel
        8.2.3 Schema and Table Inspector
9 Database Design  /  Modeling
    9.1 Modeling Interface
        9.1.1 Model Editor
        9.1.2 EER Diagram Editor
        9.1.3 Creating Tables
        9.1.4 Creating Foreign Key Relationships
        9.1.5 Creating Views
        9.1.6 Creating Routines and Routine Groups
        9.1.7 Creating Layers
        9.1.8 Creating Notes
        9.1.9 Creating Text Objects
        9.1.10 Creating Images
    9.2 Additional Modeling Tools
        9.2.1 Printing Diagrams
        9.2.2 DBDoc Model Reporting
        9.2.3 Schema Validation Plugins
    9.3 Modeling Tutorials
        9.3.1 Creating a Model
        9.3.2 Basic Modeling
        9.3.3 Importing a Data Definition SQL Script
        9.3.4 Using the Default Schema
        9.3.5 Documenting the sakila Database
    9.4 Forward and Reverse Engineering
        9.4.1 Forward Engineering
        9.4.2 Reverse Engineering
    9.5 Schema Synchronization and Comparison
        9.5.1 Database Synchronization
        9.5.2 Compare and Report Differences in Catalogs
    9.6 Table Templates
    9.7 Customizing DBDoc Model Reporting Templates
        9.7.1 Supported Template Markers
        9.7.2 Creating a Custom Template
10 Database Migration Wizard
    10.1 General installation requirements
        10.1.1 ODBC Libraries
        10.1.2 ODBC Drivers
    10.2 Migration Overview
        10.2.1 A visual guide to performing a database migration
        10.2.2 Migrating from supported databases
        10.2.3 Migrating from unsupported (generic) databases
    10.3 Conceptual DBMS equivalents
    10.4 Microsoft Access Migration
    10.5 Microsoft SQL Server migration
        10.5.1 Preparations
        10.5.2 Drivers
        10.5.3 Connection Setup
        10.5.4 Microsoft SQL Server Type Mapping
    10.6 PostgreSQL migration
        10.6.1 Preparations
        10.6.2 Drivers
        10.6.3 Connection Setup
        10.6.4 PostgreSQL Type Mapping
    10.7 MySQL migration
    10.8 Using the MySQL Workbench Migration Wizard
        10.8.1 Connecting to the databases
        10.8.2 Schemata Retrieval and Selection
        10.8.3 Reverse Engineering
        10.8.4 Object Selection
        10.8.5 Migration
        10.8.6 Manual Editing
        10.8.7 Target Creation Options
        10.8.8 Schema Creation
        10.8.9 Create Target Results
        10.8.10 Data Transfer and Migration Setup
        10.8.11 Bulk Data Transfer
        10.8.12 Migration Report
    10.9 MySQL Workbench Migration Wizard FAQ
    
A MySQL Workbench Frequently Asked Questions
B Keyboard Shortcuts
C Extending Workbench
 C.1 GRT and Workbench Data Organization
 C.2 Modules
 C.3 Plugins  /  Tools
 C.4 Adding a GUI to a Plugin Using MForms
 C.5 The Workbench Scripting Shell
  C.5.1 Exploring the Workbench Scripting Shell
  C.5.2 The Shell Window
  C.5.3 The Files, Globals, Classes, Modules, and Notifications Tabs
 C.6 Tutorial:  Writing Plugins
D How To Report Bugs or Problems
E MySQL Enterprise Features
F MySQL Utilities
G Third Party Licenses
 G.1  .NET Flat TabControl License
 G.2 ANTLR ECMA Grammar License
 G.3 ANTLR License
 G.4 Bitstream Vera License
 G.5 Boost Library License
 G.6 Cairo License
 G.7 CTemplate (Google Template System) License
 G.8 cURL  (libcurl)  License
 G.9 DockPanel Suite License
 G.10 Dojo Toolkit v1.7.0b1 License
 G.11 FreeTDS License
 G.12 GDAL/OGR License
 G.13 GLib License (for MySQL Workbench)
 G.14 Glitz License
 G.15 GNU Lesser General Public License Version 2.1, February 1999
 G.16 HtmlRenderer (System.Drawing.Html)
 G.17 iODBC License
 G.18 Libiconv License
 G.19 Libintl License
 G.20 libpng License
 G.21 Libxml2 License
 G.22 Libzip License
 G.23 Lua  (liblua)  License
 G.24 Paramiko License
 G.25 PCRE License
 G.26 Pixman License
 G.27 PROJ.4 License
 G.28 PyCrypto  2.6 License
 G.29 PyODBC License
 G.30 PySQLite License
 G.31 Python License
 G.32 Python-ecdsa License
 G.33 Scintilla License
 G.34 ScintillaNET License
 G.35 SQLCipher License
 G.36 TinyXML License
 G.37 TreeViewAdv for .NET License
 G.38 VSQLite++  License
 G.39 zlib License


少し見通しが悪いので、レベル2までのもくじも載せておきます。

MySQL Workbench Table of Contents

1 General Information
    1.1 What Is New in MySQL Workbench 6
    1.2 MySQL Workbench Editions
2 Installation
    2.1 System Requirements
    2.2 Command-line options
    2.3 MySQL Workbench on Windows
    2.4 MySQL Workbench on Linux
    2.5 MySQL Workbench on OS X
3 Configuration
    3.1 User Accessibility Options
    3.2 Workbench Preferences
    3.3 MySQL Workbench Settings and Log Files
    3.4 Tutorial: Add a Custom Link to the Home Page
    3.5 Common Preferences and Configurations
4 The Home Screen
5 MySQL Connections
    5.1 Creating A New MySQL Connection (Simple)
    5.2 Creating A New MySQL Connection (Tutorial)
    5.3 Manage Server Connections
    5.4 MySQL Fabric Integration
    5.5 Client Connections
6 Administrative Tasks
    6.1 Server Management
    6.2 Users and Privileges
    6.3 Server Status
    6.4 Status and System Variables
    6.5 Data Export and Import
    6.6 MySQL Audit Inspector Interface
    6.7 MySQL Enterprise Backup Interface
    6.8 MySQL Enterprise Firewall Interface
    6.9 The wbcopytables Tool
7 Performance Tools
    7.1 Performance Dashboard
    7.2 Performance Schema Reports
    7.3 Visual Explain Plan
    7.4 Query Statistics
    7.5 Tutorial: Using Visual Explain to improve query performance
8 Database Development
    8.1 Visual SQL Editor
    8.2 Object Management
9 Database Design  /  Modeling
    9.1 Modeling Interface
    9.2 Additional Modeling Tools
    9.3 Modeling Tutorials
    9.4 Forward and Reverse Engineering
    9.5 Schema Synchronization and Comparison
    9.6 Table Templates
    9.7 Customizing DBDoc Model Reporting Templates
10 Database Migration Wizard
    10.1 General installation requirements
    10.2 Migration Overview
    10.3 Conceptual DBMS equivalents
    10.4 Microsoft Access Migration
    10.5 Microsoft SQL Server migration
    10.6 PostgreSQL migration
    10.7 MySQL migration
    10.8 Using the MySQL Workbench Migration Wizard
    10.9 MySQL Workbench Migration Wizard FAQ
    
A MySQL Workbench Frequently Asked Questions
B Keyboard Shortcuts
C Extending Workbench
D How To Report Bugs or Problems
E MySQL Enterprise Features
F MySQL Utilities
G Third Party Licenses