开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第2天,点击查看活动详情
1.前言
我们在新建MySQL数据库的时候往往会选择编码格式和排序规则,但是我们知道这些编码代表的含义是什么吗?会对数据有什么影响吗?
2.排序规则
排序规则: 是指对指定字符集下不同字符的比较规则,_ci 结尾表示大小写不敏感 (caseinsensitive), _cs 表示大小写敏感 (case sensitive), _bin 表示二进制的比较 (binary).
我们常见的排序规则有以下区别:
utf8_general_ci 不区分大小写
utf8_general_cs 区分大小写
utf8_bin: 字符串每个字符串用二进制数据编译存储,区分大小写, 而且可以存二进制的内容
utf8_general_ci 校对速度快, 但准确度稍差。
utf8_unicode_ci 准确度高, 但校对速度稍慢。
utf8mb4_0900_ai_ci: 这个是mysql8.0之后的排序规则,0900代表Unicode 9.0的规范,ai表示accent insensitivity,也就是“不区分音调”,而ci表示case insensitivity,也就是“不区分大小写”。
3.推荐规则
根据上面的区别来看,在当前文字多样化,国际语言的大环境下面,各种特殊字符层出不穷,我们更适用于utf8_bin规则,因为他不受mysql版本的限制,而且基于二级制方式匹配特殊字符,能"正确匹配"特殊字符
4.mysql版本区别
说到这里,我们就需要说一下mysql5.7和mysql8.0的一个小小的变动,大家有没有发现,mysql8.0去掉了int、bigint类型的长度限制,而int的默认长度是10,bigint的默认长度是20,这些无论你超过多少,他最多就是10位和20位,不可能再多了。
5.总结
这次分享就到这里了,希望大家给点点关注,感谢~