はじめに
今回はMySQL 8.0について以下の内容を紹介します。
- なぜ、バージョン5から8に一気に上がったのか
- Charsetとは何か
- Collationとは何か
Youtubeでも解説しているので、ぜひ確認してみてください。
【YouTube動画】MySQL8.0
MySQLの名前の由来
MySQLは共同創設者のMichael Widenius (通称 Monty) さんの長女 Myにちなんで名付けられました。
ちなみに、MySQLをベースに、完全なGPLライセンスにしたMariaDBは、次女のMariaにちなんでいます。
[参考]
Why is the Software Called MariaDB?
MySQLがバージョンアップで5から8に上がった理由
MySQL 6.0はストレージエンジンにFalconを搭載したものを作っていたそうです。
しかし、Falconではなく、InnoDBを搭載したものの開発を進めたため、6.0は廃止になりました。
MySQL 7.0はMySQL Clusterと被るのを防ぎ、他のMySQL関連プロジェクトと数字を合わせるために、スキップしたという話です。
開発者のコメントとか特に見つからなかったので、ここら辺は眉唾程度に思ってください。
[参考]
What happened to MySQL 6 & 7?
MySQL 8.0.0 Development Milestone Release登場!!
MySQLの歴史に興味があれば、以下のQiita記事が詳しくてオススメです!
MySQLの歴史が面白い
Charsetについて
MySQLではDBに文字を保存するとき、Charset (文字コード) を指定します。
Charsetのデフォルトは、5.7まではlatin1、8.0からはutf8mb4になっています。
昨今の絵文字ブームの影響を受けてか、MySQL 8.0からは絵文字もDBに保存できます!
Charsetの確認方法
Charsetを確認するのに便利なコマンドを紹介します。
使用できるCharsetの一覧を表示する。
$ SHOW CHARSET;
データベースのデフォルトのCharsetを調べる。
$ SHOW CREATE DATABASE <db名>;
テーブルのデフォルトのCharsetを調べる。
$ SHOW CREATE TABLE <table名>;
[参考]
めちゃくちゃオススメします。浅すぎず深すぎず、MySQL 8.0について説明されています。
MySQL 徹底入門 第4版
Collationについて
DBに保存した文字をソートするときの規則としてCollationが使われます。
ただ、これだけでも説明が長くなるので、Collationの読み方だけ紹介します (Collationは別記事で紹介します!)。
Collationの例として以下があるとします。
utf8mb4_ja_0900_as_cs_ks
utf8mb4はCharset (文字コード) の種類を示します。
jaの部分は言語名を示します。中国語ならzh、ロシア語ならruです。
0900はUnicodeのバージョンを示します。
asの部分はアクセントを区別するかどうかを示します。
日本語の場合、濁音、半濁音の区別で、例えば「ぱぱ」と「はは」を区別するかどうかです。
また、アクセントの違いを区別しないときは、aiを付けます (accent insensitive)。
csの部分は大文字小文字を区別するかどうかを示します。
日本語の場合、「びよういん」と「びょういん」を区別するかどうかです。
ksの部分は平仮名、カタカナを区別するかどうかを示します。
言語名をjaにした場合のみ使用できます。
以上のことを踏まえると次のように解釈できます。
意外と読むのは簡単ですね。
utf8mb4_ja_0900_as_cs_ks
=> ルールを適用する文字は、文字コード utf8mb4、日本語かつUnicode バージョン9.00であり、濁音・半濁音・大文字・小文字・平仮名・カタカナを区別する。
まとめ
今回MySQLのメジャーナンバーの謎、Charset/Collationの意味について紹介しました。
別動画・別記事でもっと詳細にCollationを扱うので、ぜひ楽しみにしてください!