Mysql 字符集及排序規則

Mysql 字符集及排序規則
一、字符集
字符集:就是用來定義字符在數據庫中的編碼的集合。
常見的字符集:utf8、Unicode、GBK、GB2312(支持中文)、ASCCI(不支持中文)

二、字符集排序規則

作者本人用的是utf8_general_ci
後綴ci (case insensitive)意味不區分大小寫(大小寫不敏感),後綴cs (case sensitive)區分大小寫(大小寫敏感)

utf8_bin 規定每個字符串用二進制編碼存儲,區分大小寫,可以直接存儲二進制的內容

如ci情況下:select name,age from userinfo; 等價於SELECT NAME,AgE FROM userinfo; 大小寫字符判斷是一樣的

而在cs情況下:假設字段名嚴格爲name, age,表名:UserInfo。那麼就必須:select name,age from UserInfo; 大小寫字符判斷有區分

而bin意思是二進制,所以小寫u和大寫U會被區別
例如你運行:
SELECT name FROM UserInfo WHERE name = ‘Lina’
那麼在utf8_bin中你就找不到 name = ‘lina’ 的那一行, 在utf8_general_ci 下可以.

  1. utf8_general_ci 不區分大小寫,這個你在註冊用戶名和郵箱的時候就要使用。

  2. utf8_general_cs 區分大小寫,如果用戶名和郵箱用這個 就會照成不良後果

  3. utf8_bin:字符串每個字符串用二進制數據編譯存儲。 區分大小寫,而且可以存二進制的內容

utf8_unicode_ci和utf8_general_ci對中、英文來說沒有實質的差別。
utf8_general_ci校對速度快,但準確度稍差。
utf8_unicode_ci準確度高,但校對速度稍慢。
utf8_unicode_ci比較準確,utf8_general_ci速度比較快。通常情況下 utf8_general_ci的準確性就夠我們用的了,在我看過很多程序源碼後,發現它們大多數也用的是utf8_general_ci,所以新建數據 庫時一般選用utf8_general_ci就可以了

總結:
排序規則,就是指字符比較時是否區分大小寫,以及是按照字符編碼進行比較還是直接用二進制數據比較。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章