每一個數據庫有一個數據庫字符集和一個數據庫校對規則,它不能夠為空。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] 例如: CREATE DATABASE db_name DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;
MySQL這樣選擇數據庫字符集和數據庫校對規則:
·如果指定了CHARACTER SET X和COLLATE Y,那麼采用字符集X和校對規則Y。
·如果指定了CHARACTER SET X而沒有指定COLLATE Y,那麼采用CHARACTER SET X和CHARACTER SET X的默認校對規則。
·否則,采用服務器字符集和服務器校對規則。
MySQL的CREATE DATABASE ... DEFAULT CHARACTER SET ...語法與標准SQL的CREATE SCHEMA ... CHARACTER SET ...語法類似。因此,可以在同一個MySQL服務器上創建使用不同字符集和 校對規則的數據庫。
如果在CREATE TABLE語句中沒有指定表字符集和校對規則,則使用數據庫字符集和校對規則作為默認值。它們沒有其它目的。
默認數據庫的字符集和校對規則可以用作character_set_database和 collation_database系統變量。無論何時默認數據庫更改了,服務器都設置這兩個變量的值。如果沒有 默認數據庫,這兩個變量與相應的服務器級別的變量(character_set_server和collation_server)具有相同的值。