文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  ...  /  資料庫字元集與校對

12.3.3 資料庫字元集與校對

每個資料庫都有資料庫字元集和資料庫校對。 CREATE DATABASEALTER 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 SETCOLLATE 子句可以讓您在同一 MySQL 伺服器上建立具有不同字元集和校對的資料庫。

資料庫選項會儲存在資料字典中,並且可以透過檢查 Information Schema SCHEMATA 資料表來檢視。

範例

CREATE DATABASE db_name CHARACTER SET latin1 COLLATE latin1_swedish_ci;

MySQL 會以以下方式選擇資料庫字元集和資料庫校對:

  • 如果同時指定 CHARACTER SET charset_nameCOLLATE collation_name,則會使用字元集 charset_name 和校對 collation_name

  • 如果指定了 CHARACTER SET charset_name 但未指定 COLLATE,則會使用字元集 charset_name 及其預設校對。若要檢視每個字元集的預設校對,請使用 SHOW CHARACTER SET 陳述式或查詢 INFORMATION_SCHEMA CHARACTER_SETS 資料表。

  • 如果指定了 COLLATE collation_name 但未指定 CHARACTER SET,則會使用與 collation_name 相關聯的字元集和校對 collation_name

  • 否則 (未指定 CHARACTER SETCOLLATE),則會使用伺服器字元集和伺服器校對。

預設資料庫的字元集和校對可以從系統變數 character_set_databasecollation_database 的值中決定。當預設資料庫變更時,伺服器會設定這些變數。如果沒有預設資料庫,則這些變數的值會與對應的伺服器層級系統變數 character_set_servercollation_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 SETCOLLATE 資料表選項。

  • 對於不包含 CHARACTER SET 子句的 LOAD DATA 陳述式,伺服器會使用系統變數 character_set_database 指示的字元集來解譯檔案中的資訊。若要覆寫此行為,請提供明確的 CHARACTER SET 子句。

  • 對於預存常式 (程序和函數),在常式建立時生效的資料庫字元集和校對會用作字元資料參數的字元集和校對,這些參數的宣告不包含 CHARACTER SETCOLLATE 屬性。若要覆寫此行為,請明確提供 CHARACTER SETCOLLATE