さまざまなデータベース照合により、さまざまなタイプの文字をデータベースに格納できます。デフォルトでは、MySQLにはlatin1_swedish_ci照合を使用したlatin1文字セットがあります。ただし、特定のテーブル、すべてのテーブル、またはデータベース全体のMySQL照合を簡単に変更できます。 MySQLで照合を変更する方法は次のとおりです。
MySQLのすべてのテーブルの照合を変更する方法
MySQLで照合を変更する手順を見ていきます。
1つのMySQLテーブルの照合を変更するSQLクエリは次のとおりです
ALTER TABLE tbl_name
[[DEFAULT] CHARACTER SET charset_name]
[COLLATE collation_name]
上記のクエリでは、テーブル名 tbl_nameを指定する必要があります 。オプションで、文字セット charset_nameを指定することもできます。 および照合collation_name 。
ボーナスリード:フォローするトップデータベースブログ
データベースのすべてのテーブルの照合をutf8_general_ciに変更する例を次に示します。 database_nameを置き換えます およびtable_name 以下にデータベース名とフィールド名をそれぞれ記載します。
alter table database_name.table_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
データベース内のすべてのテーブルの照合を変更する場合は、テーブルごとに上記のクエリを個別に実行する必要があります。
これは非常に面倒な場合があるため、データベース内のテーブルごとにALTERテーブルステートメントを生成するSELECTクエリを作成します。まず、データベース内のすべてのテーブル関連の詳細を返すSELECTクエリを次に示します。
SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA="database_name"
AND TABLE_TYPE="BASE TABLE";
ボーナスリード:MySQLWorkbenchの上位の代替案
上記のSELECTクエリを変更して、データベース内のテーブルごとにALTERTABLEステートメントを作成します。
これが、データベース内のすべてのテーブルのSQLクエリを生成するselectクエリです。 database_nameを置き換えます およびcollation_name 以下にデータベースと照合名を入力し、それを実行してSQLクエリを生成し、データベース内のすべてのテーブルの照合を変更します。
SELECT CONCAT("ALTER TABLE ", TABLE_SCHEMA, '.', TABLE_NAME," COLLATE collation_name;") AS ExecuteTheString FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA="database_name" AND TABLE_TYPE="BASE TABLE";
ボーナスリード:MySQLで遅いクエリログを有効にする方法
すべてのテーブルの照合をutf8に変更する別のSQLクエリを次に示します。
SELECT CONCAT('ALTER TABLE ', tbl.TABLE_SCHEMA, '.', tbl.TABLE_NAME, ' CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;') FROM information_schema.TABLES tbl WHERE tbl.TABLE_SCHEMA = 'database_name'
各テーブルのALTERTABLEクエリのリストを取得したら、それらをコピーして貼り付けて実行し、すべてのテーブルの照合を変更できます。
上記の記事が、MySQLのデータベース内のすべてのテーブルの照合を変更するのに役立つことを願っています。