mysql_塗抹筆記--第六章 字符,還有個集
第六章 字符,還有個集
字符集就是各種字符編碼的一個集合 字符集就是指符號和字符編碼的集合
UTF8MB4:支持UTF8能夠支持的字符,它全部支持,UTF8字符集不支持, 它也支持。 mysql5.5之後才有的字符集
查看當前數據庫支持的字符集
show character set;
顯示字符集的校對規則可以使用 show collation
show collation like ‘latin%‘;
創建一個數據庫指定字符集,以及排列順序
create database test2 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
校對規則的名稱也有規則,通常開頭的字符是校對規則所屬的字符集,而後是其所屬語言, 最後則是校對規則類型的簡單形式,有以下3種格式
_ci:全稱為 case insensitive, 表示這個大小寫不敏感的規則
_cs: 全稱為 case sensitive, 表示這個對大小寫敏感的規則
_bin: 及binary, 表示這是一個二元校對規則, 二元校對規則也一定是大小寫敏感規則
字符集和校對規則的設定, 從大的維度來說。有2個層次:
1)首先是連接數據庫, 執行操作時使用的字符集
2) 其次保存數據時所使用的字符集
服務端設置默認字符集
字符集這麽重要的屬性, 當然不會等到我們實際存儲數據時才進行指定。 mysql服務啟動過程中,字符集的設定就已經生效,系統會確認默認所使用的字符集和校對規則。並且在啟動時指定的字符集和校對規則,對整個mysql服務的全局有效,也就是說如果沒有更新的粒度對字符集和校對規則進行設置,那麽接下來的所有操作,其字符集的設定都會繼承全局粒度所設定的默認字符集和校對規則
mysql中指定字符集的方式臺靈活了比如有:
1)在編譯安裝mysql(僅限源碼安裝方式)時指定
2)啟動mysql服務是通過參數指定
3)在參數文件配置,啟動mysql服務時加載參數文件的方式使之生效
4)在mysql服務運行期間實時修改
1)我們在編譯安裝mysql軟件時, 就設置過字符集:
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci\
這連個參數決定本機所運行的mysql服務, 在沒有做任何其他字符集相關設定的情況下默認是的字符集和校對規則, 是在沒有其他設定的情況下。。
編譯時候指定默認的字符集和校對規則 通過default_charset 和 default_collation兩個編譯參數
2)在啟動mysql服務時指定
啟動mysql數據庫服務時(mysqld命令或mysqld_safe命令)有一堆的參數可以設定,其中與字符集相關的是下面兩項系統參數:
--character_set_server: 指定全局粒度的默認字符集
--collation_server: 指定全局粒度的默認校對規則
啟動時候沒有發現這2個參數,它們是有默認值得,它們的默認值會繼承編譯mysql軟件時 DEFAULT_CHARSET和 DEFAULT_COLLATION 這兩個參數所指定的值,如果mysql數據庫不是源碼編譯安裝, 它們的默認值就會是latinl字符集和latinl_swedish_ci校對規則(也不是絕對的)
3)參數文件配置
mysql服務在啟動時, 可以通過指定一個參數文件的形式(也就是my.cnf文件)來簡化啟動命令中指定的選項,那麽, 通訊員可以將字符集和校對規則的參數設置放在參數文件中。這兩項參數放到參數文件中時,參數名與命令行的選項名相同, 不過指定參數時不需要"--"字符了, 例如:
character_set_server=utf8
collation_server=utf8_general_ci
4) mysql服務運行期間修改
前面3種方式均可用指定字符集和校對規則, 但若想要變更字符集設置時, 動靜就太大了, 生效需要重啟mysql服務。 實際上大可不必如此周折,這兩項參數,在mysql服務運行期間作為系統變量存在, 而系統變量在mysql服務運行期間, 多數都是可以被實時修改的,控制字符集和校對規則的系統變量就屬於被修改的那一類
mysql_塗抹筆記--第六章 字符,還有個集