MySQL - テーブル
ナビゲーションに移動
検索に移動
概要
照合順序
照合順序とは
MySQLにおいて、照合順序(Collation)はテーブルや列ごとに設定することができる。
照合順序は、文字列の比較やソートの際に使用され、異なる言語や地域に合わせてテキストの比較を行うために重要である。
MySQLでは、様々な照合順序が提供されている。
例えば、大文字小文字を区別やアクセントを考慮するかどうか等の違いがある。
- utf8mb4_general_ci
- 大文字小文字を区別せず、アクセントを区別しない。
- 通常の比較の場合には適しているが、文字の並び順は一般的な場合に従う。
- utf8mb4_bin
- バイナリ比較を行う。
- 大文字小文字やアクセント等を区別して、バイト単位で比較する。
- これは厳密なバイナリ比較が必要な場合に使用される。
- utf8_general_ci
- utf8mb4と同様、大文字小文字を区別せず、アクセントを区別しない。
- ただし、utf8mb4よりも少ない文字セットを使用する。
- latin1_swedish_ci
- ラテン1文字セットに基づいた照合順序であり、スウェーデンの標準に従う。
- 大文字小文字を区別せず、アクセントを区別しない。
照合順序の詳細を知りたい場合は、MySQLの公式ドキュメントを参照すること。
テーブル作成時における照合順序の指定
以下の例では、データベースの作成時において、照合順序をutf8mb4_unicode_ciに指定している。
CREATE TABLE <テーブル名> (
<カラム名 1> VARCHAR(255) COLLATE utf8mb4_unicode_ci,
<カラム名 2> INT
);
CREATE TABLE <テーブル名> (
<カラム名 1> VARCHAR(255) COLLATE utf8_general_ci,
<カラム名 2> INT,
<カラム名 3> TEXT COLLATE utf8_unicode_ci
);
※注意
テーブル全体に対する照合順序を一括で指定する方法は提供されていないことに注意する。
既存のテーブルや列の照合順序の変更
既存のテーブルや列の照合順序を変更することも可能である。
以下の例では、テーブルの該当カラムの照合順序をutf8mb4_unicode_ci
に変更している。
ALTER TABLE <テーブル名> MODIFY <カラム名> <カラムの型名> COLLATE utf8mb4_unicode_ci;
-- 例
ALTER TABLE <テーブル名> MODIFY hoge_col VARCHAR(255) COLLATE utf8mb4_unicode_ci;
デフォルトの照合順序
テーブルにおけるデフォルトの照合順序を確認する場合、
テーブル自体に照合順序が指定されていない場合、テーブルはデータベースのデフォルトの照合順序を継承する。
デフォルトのテーブル照合順序を確認する。
SHOW TABLE STATUS LIKE '<テーブル名>';
これは、テーブルのステータス情報を表示する。
出力結果において、Collation
カラムの値がテーブルの照合順序である。
もし、テーブルに照合順序が指定されていない場合、データベースのデフォルトの照合順序が表示される。