MySQL數據庫字符集和排序規則有四個級別的默認設置:服務器,數據庫,表和列。 最初,服務器字符集和排序規則取決于啟動mysqld時使用的選項。可以使用 一般開發我們要求MySQL數據庫存放中文數據,所以在MySQL配置文件里面一般會指定字符集和排序規則。 我們可以執行 如果未指定服務器的字符集和排序規則,則默認采用latin1和latin1_swedish_ci。 同時也可以可以清晰的看出,latin1和utf-8的默認排序規則分別是latin1_swedish_ci和utf8_general_ci,同時長度分別占1個和1-3個字節。 數據庫 創建數據庫的時候, 如果不指定數據庫的字符集和排序規則,則數據庫默認采用服務器配置的字符集和排序規則。 如果指定數據庫的字符集而未指定排序規則,則數據庫采用字符集對應默認的字符集。 如果指定數據庫的排序規則而未指定字符集,則數據庫采用排序規則歸類的字符集(即排序規則對應的字符集)。 所有數據庫字符集選項都存儲在一個名為 可以這樣查看 同樣可以這樣查看 表 創建表的時候, 如果不指定表的字符集和排序規則,則表默認采用數據庫配置的字符集和排序規則。 如果指定表的字符集而未指定排序規則,則表采用字符集對應默認的字符集。 如果指定表的排序規則而未指定字符集,則表采用排序規則歸類的字符集。 列 創建列的時候, 如果不指定列的字符集和排序規則,則數據庫默認采用表所在的字符集和排序規則。 如果指定列的字符集而未指定排序規則,則列采用字符集對應默認的字符集。 如果指定列排序規則而未指定字符集,則列采用排序規則歸類的字符集。 以上文字可能看起來比較繁瑣,總結就是,我們在為各個對象創建字符集和排序規則的時候,如果我們指定了優先級高的,優先級高的會覆蓋級別低的。優先級即服務器 < 數據庫 < 表 < 列。
|
|