字符集(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: 将字符串中每一个字符用二进制数据存储,区分大小写。