文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


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

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