MySQL常用排序规则(Collation)完整分类

MySQL 常用排序规则(Collation)完整分类

一、命名规则

格式:字符集_语言_类型,例 utf8mb4_unicode_ci

  1. 字符集utf8mb4(推荐)/ utf8 / latin1

  2. 语言基准

    • general:通用简易排序,无严格 Unicode 标准
    • unicode:遵循官方 Unicode UCA 标准,多国语言友好
    • gbk/gb2312:中文专用拼音排序
    • bin:二进制逐字节对比,区分大小写
  3. 后缀标识(核心区分)

    后缀含义特点
    ciCase Insensitive不区分大小写,A=aAB=ab(业务最常用)
    csCase Sensitive区分大小写,A≠a
    binBinary二进制比对,区分大小写、全半角,无语义排序

二、utf8mb4 主流排序规则(你的业务使用)

1. utf8mb4_general_ci

  • 优点:计算速度快,逻辑简单
  • 缺点:中文拼音排序错乱,德语、法语、多音字排序不标准
  • 适用:仅存储 ID 编码、无需文本排序的老旧项目

2. utf8mb4_unicode_ci(新项目推荐)

  • 遵循 Unicode 国际排序标准,中文、少数民族文字、外文排序正常
  • 性能损耗极小,业务完全无感知
  • 适配人员姓名、支部名称、台账类系统

3. utf8mb4_unicode_520_ci

基于 Unicode 5.2 版本标准,比 unicode_ci 修正更多生僻字符排序,生僻字多的场景用。

4. utf8mb4_bin

二进制排序:Aa 不相等,区分大小写、空格、符号

适用场景:密码、验证码、大小写敏感编码存储,绝对不能用于外键关联。

5. utf8mb4_general_cs / utf8mb4_unicode_cs

区分大小写的通用 / Unicode 规则,极少业务使用。

6. utf8mb4_zh_0900_as_ci(MySQL8.0+ 中文拼音专用)

纯中文拼音精准排序,对汉字姓名排序效果最优,仅 8.0 及以上版本支持。


三、中文专用排序规则(GBK 字符集)

仅表字符集为 gbk/gb2312 时使用:

  1. gbk_chinese_ci:GBK 中文拼音排序,不区分大小写
  2. gb2312_chinese_ci:老国标中文排序,兼容性差,不推荐新项目

注意:现代项目统一使用 utf8mb4_unicode_ci,不再使用 GBK 字符集。


四、其他小众字符集规则(了解即可)

  1. latin1_swedish_ci:MySQL 历史默认字符集,仅西欧语言,不支持中文
  2. utf8_general_ci:旧 utf8(3 字节,不支持 emoji),已淘汰,统一替换 utf8mb4

五、快速查询当前数据库支持的全部排序规则

1
SHOW COLLATION;

筛选 utf8mb4 相关规则:

1
SHOW COLLATION LIKE 'utf8mb4%';

六、选型结论

  1. 人员姓名,名称、展示文本:utf8mb4_unicode_ci(统一全库所有关联字段)
  2. 外键关联 ID:统一为 utf8mb4_unicode_ci,混用会报 1215/1267 错误
  3. 密码、大小写敏感编码:单独字段使用 utf8mb4_bin,且不要用来 JOIN / 外键关联
  4. MySQL8.0 以上,大量中文姓名展示:可升级为 utf8mb4_zh_0900_as_ci
打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2018-2026 Outsrkem
  • 访问人数: | 浏览次数:

      请我喝杯咖啡吧~

      支付宝
      微信