MySQL 排序规则
1. MySQL 排序规则
1.1. 什么是排序规则
在新建 MySQL 数据库或表的时候经常会选择字符集和排序规则。数据库用的字符集大家都知道是怎么回事, 那排序规则是什么呢?
排序规则: 是指对指定字符集下不同字符的比较规则。其特征有以下几点:
- 两个不同的字符集不能有相同的排序规则
- 两个字符集有一个默认的排序规则
- 有一些常用的命名规则。如
_ci
结尾表示大小写不敏感 (caseinsensitive),_cs
表示大小写敏感 (case sensitive),_bin
表示二进制的比较 (binary).
utf-8 有默认的排序规则:
命令: SHOW CHARSET LIKE 'utf8%';
区别:
utf8_general_ci
不区分大小写, 这个你在注册用户名和邮箱的时候就要使用。utf8_general_cs
区分大小写, 如果用户名和邮箱用这个 就会照成不良后果utf8_bin
: 字符串每个字符串用二进制数据编译存储。 区分大小写, 而且可以存二进制的内容utf8_general_ci
校对速度快, 但准确度稍差。utf8_unicode_ci
准确度高, 但校对速度稍慢。
1.2. 对比
utf8_general_ci
不区分大小写,utf8_general_cs
区分大小写utf8_bin
:compare strings by the binary value of each character in the string
将字符串每个字符串用二进制数据编译存储, 区分大小写, 而且可以存二进制的内容。utf8_unicode_ci
校对规则仅部分支持 Unicode 校对规则算法, 一些字符还是不能支持;utf8_unicode_ci
不能完全支持组合的记号。
说明: ci
是 case insensitive, 即 “大小写不敏感”, a
和 A
会在字符判断中会被当做一样的。bin
是二进制, a
和 A
会别区别对待。例如你运行: SELECT * FROM table WHERE txt = 'a'
, 那么在 utf8_bin
中你就找不到 txt = 'A'
的那一行, 而 utf8_general_ci
则可以。utf8_general_ci
是一个遗留的 校对规则, 不支持扩展, 它仅能够在字符之间进行逐个比较。这意味着 utf8_general_ci
校对规则进行的比较速度很快, 但是与使用 utf8_unicode_ci
的校对规则相比, 比较正确性较差。
1.3. 应用上的差别
- 对于一种语言仅当使用
utf8_unicode_ci
排序做的不好时, 才执行与具体语言相关的utf8
字符集校对规则。例如, 对于德语和法语,utf8_unicode_ci
工作的很好, 因此不再需要为这两种语言创建特殊的utf8
校对规则。 utf8_general_ci
也适用与德语和法语, 除了?
等于s
, 而不是ss
之外。如果你的应用能够接受这些, 那么应该使用utf8_general_ci
, 因为它速度快。否则, 使用utf8_unicode_ci
, 因为它比较准确。
1.4. 使用
utf8_unicode_ci
比较准确, utf8_general_ci
速度比较快。通常情况下, 新建数据库时一般选用 utf8_general_ci
就可以了。
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhfjiihe
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01