字符集(Charset)
ASCII
基於拉丁字母的計算機編碼,通用單字節編碼,1個字節代表1個字符。主要針對英語和西歐語言。漢子爲多字節數據,ASCII是無法編碼中文漢子的。
GB2312
國標編碼,由中國製定編碼字符集,一般用2個字節代表一個字符,GB2312對中文進行分區分級編碼,共收錄7000多個。
Unicode
爲了統一各種語言編碼規則而生,又被稱爲 統一編碼。統一使用2個字節代表1個字符,特殊字符采用4字節。
UTF-8
爲了解決Unicode編碼的一些缺陷,比如英文及符號屬於單字節字符,採用2字節編碼,浪費空間。UTF-8字符屬於動態編碼字符集,是在Unicode基礎上進行改進的一種編碼規則。根據不同數字大小進行編碼爲1-6個字節,英文及符號:1字節,中文:3字節,生僻字:4-6字節。
排序方式(Collation)
collation 用於指定數據集的排序規則,以及字符集的比對規則,當我們在進行order by 時,mysql服務器會按照設置的collation進行比對數據。
分類
- < character set> _ <language/other> _ <ci/cs>
如:utf8_general_ci , 表示字符集爲utf-8,不區分大小寫(ci, case insensitive), utf-8沒有cs(case sensitive)。
同一個字符集的不同collation的區別在於 排序,比對精確度以及性能三方面。
精準度:utf8_unicode_ci > utf8_general_ci
性能:utf8_general_ci > utf8_unicode_ci
在ci情況下,比如使用like “%ab%” , 那麼將匹配出 ab, aB, Ab, AB 相關的信息。
- < character set>_bin
utf8_bin: 將字符串中每一個字符用二進制數據存儲,區分大小寫。