MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

【MySQL】照合順序を1行のALTER文でutf8_binに変更する方法

照合順序を1行で変更する基本構文

MySQLでテーブルの照合順序(COLLATION)を変更したい場合は、ALTER TABLEコマンドを使用します。特別な設定は不要で、たった1行のコマンドを実行するだけで完了します。基本の構文は以下の通りです。

ALTER TABLE テーブル名 COLLATE utf8_bin;

サンプルテーブルを作成する

それでは、実際にコマンドの動きを確認していきましょう。まずは動作確認用のサンプルテーブルを作成します。テーブル作成のクエリは以下の通りです。

mysql> create table CollateDemo
    -> (
    -> Id int NOT NULL AUTO_INCREMENT,
    -> Name varchar(20),
    -> Age int,
    -> PRIMARY KEY(Id)
    -> );
Query OK, 0 rows affected (0.98 sec)

変更前のDDLを確認する

テーブルの定義内容(DDL)を確認するには、SHOW CREATE TABLE文を使用します。構文は以下の通りです。

SHOW CREATE TABLE テーブル名;

作成したテーブルのDDLを実際に表示してみましょう。

mysql> show create table CollateDemo;

実行結果は以下の通りです。

+-------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table       | Create Table                                                                                                                                                                                                                  |
+-------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| CollateDemo | CREATE TABLE `collatedemo` (`Id` int(11) NOT NULL AUTO_INCREMENT, `Name` varchar(20) DEFAULT NULL, `Age` int(11) DEFAULT NULL, PRIMARY KEY (`Id`) ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci    |
+-------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

この時点では、テーブルのデフォルト文字セットが「utf8mb4」、照合順序が「utf8mb4_0900_ai_ci」に設定されていることがわかります。

ALTER TABLEで照合順序をutf8_binに変更する

続いて、ALTER TABLEコマンドを実行して、照合順序をutf8_binへ変更します。必要なクエリは以下の1行だけです。

mysql> alter table CollateDemo collate utf8_bin;
Query OK, 0 rows affected (0.39 sec)
Records: 0 Duplicates: 0 Warnings: 0

変更後のDDLを確認する

最後に、もう一度DDLを表示して、変更が正しく反映されているかを確認しましょう。

mysql> show create table CollateDemo;

実行結果:

+--------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table        | Create Table                                                                                                                                                                                                                                      |
+--------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| CollateDemo | CREATE TABLE `collatedemo` (`Id` int(11) NOT NULL AUTO_INCREMENT, `Name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL, `Age` int(11) DEFAULT NULL, PRIMARY KEY (`Id`) ) ENGINE = InnoDB DEFAULT CHARSET = utf8 COLLATE = utf8_bin |
+--------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

テーブルレベルの設定が「DEFAULT CHARSET = utf8」「COLLATE = utf8_bin」に変わっていることが確認できます。utf8_binはutf8(utf8mb3)に属する照合順序のため、文字セットも自動的にutf8へ切り替わる点に注意してください。

また、既存の「Name」カラムには個別に「CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci」が明示的に付与されています。これは、テーブルレベルの照合順序を変更しても、すでに存在するカラムの設定までは自動的に書き換わらないことを意味します。カラム単位で照合順序を変更したい場合は、MODIFY句を使って各カラムを個別に変更する必要があります。

補足:utf8_binとその他の照合順序の違い

utf8_binは、文字をバイナリ(バイト列)として比較する照合順序です。大文字と小文字が厳密に区別されるため、「ABC」と「abc」は別の値として扱われます。一方、「utf8_general_ci」のように末尾に「_ci」(case insensitive)が付く照合順序では、大文字小文字の違いは無視されます。

照合順序の選択は、検索結果やソート順、インデックスの挙動に直接影響します。パスワードのハッシュ値や識別子など、厳密な一致が求められるカラムにはutf8_binが適しており、日本語の全文検索などでは用途に応じた照合順序を選ぶことが重要です。

  1. MySQLで単一テーブルをバックアップする方法【mysqldumpの使い方を解説】

    MySQLデータベースから特定のテーブルだけをバックアップしたい場合、標準で付属しているダンプユーティリティ「mysqldump」を使うのが最も確実で一般的な方法です。なお、古いMySQL(バージョン5.0およびそれ以前)ではBACKUP TABLEステートメントによるテーブルバックアップも可能でしたが、この構文はすでに廃止されており、現行バージョンでは利用できません。本記事では、mysqldumpを使って単一テーブルのバックアップファイル(.sql形式)を作成する具体的な手順を解説します。ステップ1:コマンドプロンプトを起動するまず、ショートカットキーでコマンドプロンプト(cmd)を開きます

  2. Microsoft Wordで行間隔を変更する方法|ダブルスペースやカスタム設定も解説

    文書を作成する際、読みやすさは非常に重要な要素です。行と行の間のスペース(行間隔)が狭すぎると文章が読みにくくなり、逆に広すぎると視線が散漫になってしまいます。新聞を読んだことがある方なら、オンライン記事と比べて新聞の行間がかなり狭いことに気づいたはずです。新聞は紙面コストの関係上、スペースの節約が不可欠ですが、オンライン閲覧ではそこまで厳しい制約はありません。この記事では、Microsoft Wordで行間隔を変更する方法を詳しく解説します。 ダブルスペースとは? 行間を広げる方法のひとつとして人気なのが「ダブルスペース」です。これは文書内の行間を一瞬で2倍に広げる設定で、簡単に言えば、各行