MySQL資料庫字符集和排序規則有四個級別的默認設定:服務器,資料庫,表和列,
最初,服務器字符集和排序規則取決于啟動mysqld時使用的選項,可以使用 --character-set-server該字符集,同樣可以添加 --collation-server用于排序規則,這些可以在服務器啟動時在命令列或選項檔案中進行設定,并可以在運行時進行更改,
一般開發我們要求MySQL資料庫存放中文資料,所以在MySQL組態檔里面一般會指定字符集和排序規則,

我們可以執行SHOW CHARACTER SET,查看MySQL服務器支持的字符集和排序規則,

如果未指定服務器的字符集和排序規則,則默認采用latin1和latin1_swedish_ci,
同時也可以可以清晰的看出,latin1和utf-8的默認排序規則分別是latin1_swedish_ci和utf8_general_ci,同時長度分別占1個和1-3個位元組,
資料庫
創建資料庫的時候,

如果不指定資料庫的字符集和排序規則,則資料庫默認采用服務器配置的字符集和排序規則,
如果指定資料庫的字符集而未指定排序規則,則資料庫采用字符集對應默認的字符集,
如果指定資料庫的排序規則而未指定字符集,則資料庫采用排序規則歸類的字符集(即排序規則對應的字符集),
所有資料庫字符集選項都存盤在一個名為 db.opt(db代表資料庫Schema名稱,一般在資料庫檔案目錄下)可以在資料庫檔案目錄中找到,
可以這樣查看

同樣可以這樣查看

表
創建表的時候,

如果不指定表的字符集和排序規則,則表默認采用資料庫配置的字符集和排序規則,
如果指定表的字符集而未指定排序規則,則表采用字符集對應默認的字符集,
如果指定表的排序規則而未指定字符集,則表采用排序規則歸類的字符集,
列
創建列的時候,

如果不指定列的字符集和排序規則,則資料庫默認采用表所在的字符集和排序規則,
如果指定列的字符集而未指定排序規則,則列采用字符集對應默認的字符集,
如果指定列排序規則而未指定字符集,則列采用排序規則歸類的字符集,
以上文字可能看起來比較繁瑣,總結就是,我們在為各個物件創建字符集和排序規則的時候,如果我們指定了優先級高的,優先級高的會覆寫級別低的,優先級即服務器 < 資料庫 < 表 < 列,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/37895.html
標籤:MySQL
上一篇:Mysql索引失效的情況
下一篇:MySQL高可用篇之MHA集群
