每個資料庫都有資料庫字元集和資料庫校對。 CREATE DATABASE 和 ALTER DATABASE 陳述式具有可選子句,用於指定資料庫字元集和校對。
CREATE DATABASE db_name
[[DEFAULT] CHARACTER SET charset_name]
[[DEFAULT] COLLATE collation_name]
ALTER DATABASE db_name
[[DEFAULT] CHARACTER SET charset_name]
[[DEFAULT] COLLATE collation_name]關鍵字 SCHEMA 可以代替 DATABASE 使用。
CHARACTER SET 和 COLLATE 子句可以讓您在同一 MySQL 伺服器上建立具有不同字元集和校對的資料庫。
資料庫選項會儲存在資料字典中,並且可以透過檢查 Information Schema SCHEMATA 資料表來檢視。
範例
CREATE DATABASE db_name CHARACTER SET latin1 COLLATE latin1_swedish_ci;MySQL 會以以下方式選擇資料庫字元集和資料庫校對:
如果同時指定
CHARACTER SET和charset_nameCOLLATE,則會使用字元集collation_namecharset_name和校對collation_name。如果指定了
CHARACTER SET但未指定charset_nameCOLLATE,則會使用字元集charset_name及其預設校對。若要檢視每個字元集的預設校對,請使用SHOW CHARACTER SET陳述式或查詢INFORMATION_SCHEMACHARACTER_SETS資料表。如果指定了
COLLATE但未指定collation_nameCHARACTER SET,則會使用與collation_name相關聯的字元集和校對collation_name。否則 (未指定
CHARACTER SET或COLLATE),則會使用伺服器字元集和伺服器校對。
預設資料庫的字元集和校對可以從系統變數 character_set_database 和 collation_database 的值中決定。當預設資料庫變更時,伺服器會設定這些變數。如果沒有預設資料庫,則這些變數的值會與對應的伺服器層級系統變數 character_set_server 和 collation_server 的值相同。
若要檢視指定資料庫的預設字元集和校對,請使用以下陳述式:
USE db_name;
SELECT @@character_set_database, @@collation_database;或者,若要在不變更預設資料庫的情況下顯示值:
SELECT DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME
FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'db_name';資料庫字元集和校對會影響伺服器運作的以下方面:
對於
CREATE TABLE陳述式,如果未指定資料表字元集和校對,則會使用資料庫字元集和校對作為資料表定義的預設值。若要覆寫此行為,請提供明確的CHARACTER SET和COLLATE資料表選項。對於不包含
CHARACTER SET子句的LOAD DATA陳述式,伺服器會使用系統變數character_set_database指示的字元集來解譯檔案中的資訊。若要覆寫此行為,請提供明確的CHARACTER SET子句。對於預存常式 (程序和函數),在常式建立時生效的資料庫字元集和校對會用作字元資料參數的字元集和校對,這些參數的宣告不包含
CHARACTER SET或COLLATE屬性。若要覆寫此行為,請明確提供CHARACTER SET和COLLATE。