各データベースにはデータベースキャラクタセットとデータベース照合順序があります。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
とX
COLLATE
の両方を指定した場合は、キャラクタセットY
X
と照合順序Y
。
CHARACTER SET
を指定し、X
COLLATE
を指定しなかった場合は、キャラクタセットX
とそのデフォルト照合順序。
COLLATE
を指定し、Y
CHARACTER
SET
を指定しなかった場合は、Y
関連のキャラクタセットと照合順序Y
。
その他の場合は、サーバキャラクタセットとサーバ照合順序。
テーブルのキャラクタセットと照合順序がCREATE
TABLE
ステートメントに指定されていない場合、データベースのキャラクタセットと照合順序はデフォルト値として使用されます。これらに他の用途はありません。
デフォルトのデータベースに対するキャラクタセットと照合順序は、character_set_database
およびcollation_database
のシステム変数値によって決定されます。デフォルトのデータベースが変わるたびに、サーバはこれらの変数を設定します。デフォルトのデータベースがない場合、変数は、character_set_server
およびcollation_server
といったサーバレベルのシステム変数と同値になります。