51
45

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[エンジニア大学] やっすんAdvent Calendar 2020

Day 10

MySQLがバージョン5から8に飛んだ謎、意外と知らないCharset、Collationのこと

Last updated at Posted at 2020-10-06

はじめに

今回はMySQL 8.0について以下の内容を紹介します。

  • なぜ、バージョン5から8に一気に上がったのか
  • Charsetとは何か
  • Collationとは何か

Youtubeでも解説しているので、ぜひ確認してみてください。
【YouTube動画】MySQL8.0
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を扱うので、ぜひ楽しみにしてください!

twitteryoutubeでのコメントもお待ちしています!

51
45
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
51
45

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?