各データベースにはデータベースキャラクタセットとデータベース照合順序があります。CREATE
DATABASEおよびALTER
DATABASEステートメントには、データベースのキャラクタセットと照合順序を指定するためのオプション節があります。
CREATE DATABASEdb_name[[DEFAULT] CHARACTER SETcharset_name] [[DEFAULT] COLLATEcollation_name] ALTER DATABASEdb_name[[DEFAULT] CHARACTER SETcharset_name] [[DEFAULT] COLLATEcollation_name]
SCHEMAというキーワードはDATABASEの代わりに使用できます。
すべてのデータベースオプションは、データベースディレクトリ内のdb.optというテキストファイルに保存されます。
CHARACTER
SETおよびCOLLATE節で、キャラクタセットと照合順序が異なる複数のデータベースを同一のMySQLサーバ上に作成することができます。
例:
CREATE DATABASE db_name CHARACTER SET latin1 COLLATE latin1_swedish_ci;
MySQL では、データベースキャラクタセットとデータベース照合順序が次のように選択されます。
CHARACTER SET
とXCOLLATE
の両方を指定した場合は、キャラクタセットYXと照合順序Y。
CHARACTER SET
を指定し、XCOLLATEを指定しなかった場合は、キャラクタセットXとそのデフォルト照合順序。
COLLATE
を指定し、YCHARACTER
SETを指定しなかった場合は、Y関連のキャラクタセットと照合順序Y。
その他の場合は、サーバキャラクタセットとサーバ照合順序。
テーブルのキャラクタセットと照合順序がCREATE
TABLEステートメントに指定されていない場合、データベースのキャラクタセットと照合順序はデフォルト値として使用されます。これらに他の用途はありません。
デフォルトのデータベースに対するキャラクタセットと照合順序は、character_set_databaseおよびcollation_databaseのシステム変数値によって決定されます。デフォルトのデータベースが変わるたびに、サーバはこれらの変数を設定します。デフォルトのデータベースがない場合、変数は、character_set_serverおよびcollation_serverといったサーバレベルのシステム変数と同値になります。
