mysql知识点系列-字符集和校对

本文主要基于《高性能MySQL》

字符集和校对

字符集大家都知道,就是二进制编码和字符之间的映射关系,校对是指用于某个字符集的排序规则。
mysql提供了非常丰富的字符集和校对规则。每个字符集都有一个默认的校对规则,每个校对规则都只针对某个特定的字符集。
mysql支持分别设置数据库、表、列的字符集和校对规则,而且优先级递增,也就是说在列上设置的会覆盖表和数据库上的设置。
如果mysql比较字符集不同的两个字符串,mysql会先将它们转换成同一个字符集再比较,如果字符集不兼容的话,还会抛出异常。另外字符集不同,还会造成索引失效。所以建议同一个库里面的所有表和列都使用相同的字符集和校对规则,这样不仅减少了服务器转换的性能损耗,而且还为开发人员省去了编码不一致、乱码的麻烦。
有些校对规则还有_cs、_ci或_bin的后缀,它们表示意思分别是大小写敏感、大小写不敏感、以二进制比较大小。
如果字符集使用的是UTF-8等多字节字符集,可能还会影响索引的创建。InnoDB单一索引字段最长支持767字节,如果是UTF-8编码,字段最长不能超过255个字符,如果超过了,系统会报错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值