这里写目录标题

  • 1. MySQL 排序规则
    • 1.1. 什么是排序规则
    • 1.2. 对比
    • 1.3. 应用上的差别
    • 1.4. 使用

1. MySQL 排序规则

1.1. 什么是排序规则

在新建 MySQL 数据库或表的时候经常会选择字符集和排序规则。数据库用的字符集大家都知道是怎么回事, 那排序规则是什么呢?

排序规则: 是指对指定字符集下不同字符的比较规则。其特征有以下几点:

  1. 两个不同的字符集不能有相同的排序规则
  2. 两个字符集有一个默认的排序规则
  3. 有一些常用的命名规则。如 _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. 对比

  1. utf8_general_ci 不区分大小写, utf8_general_cs 区分大小写
  2. utf8_bin: compare strings by the binary value of each character in the string 将字符串每个字符串用二进制数据编译存储, 区分大小写, 而且可以存二进制的内容。
  3. utf8_unicode_ci 校对规则仅部分支持 Unicode 校对规则算法, 一些字符还是不能支持; utf8_unicode_ci 不能完全支持组合的记号。

说明: ci 是 case insensitive, 即 “大小写不敏感”, aA 会在字符判断中会被当做一样的。bin 是二进制, aA 会别区别对待。例如你运行: SELECT * FROM table WHERE txt = 'a', 那么在 utf8_bin 中你就找不到 txt = 'A' 的那一行, 而 utf8_general_ci 则可以。utf8_general_ci 是一个遗留的 校对规则, 不支持扩展, 它仅能够在字符之间进行逐个比较。这意味着 utf8_general_ci 校对规则进行的比较速度很快, 但是与使用 utf8_unicode_ci 的校对规则相比, 比较正确性较差。

1.3. 应用上的差别

  1. 对于一种语言仅当使用 utf8_unicode_ci 排序做的不好时, 才执行与具体语言相关的 utf8 字符集校对规则。例如, 对于德语和法语, utf8_unicode_ci 工作的很好, 因此不再需要为这两种语言创建特殊的 utf8 校对规则。
  2. utf8_general_ci 也适用与德语和法语, 除了 ? 等于 s, 而不是 ss 之外。如果你的应用能够接受这些, 那么应该使用 utf8_general_ci, 因为它速度快。否则, 使用 utf8_unicode_ci, 因为它比较准确。

1.4. 使用

utf8_unicode_ci 比较准确, utf8_general_ci 速度比较快。通常情况下, 新建数据库时一般选用 utf8_general_ci 就可以了。

MySQL 排序规则相关推荐

  1. mysql排序规则引发的一系列问题

    文章目录 mysql排序规则引发的一系列问题 背景 mysql默认的排序方式 mysql默认排序真的是按照主键进行排序的吗? 如何随机获取更优? mysql排序规则引发的一系列问题 背景 项目中提出需 ...

  2. java mysql排序规则_在Java中使用MySQL排序规则

    精简版 我目前正在研究MySQL排序规则的问题以及它们如何影响一组值(使用Hibernate映射,但现在这不重要).我希望使用与MySQL使用相同的排序规则来设置一组字符串.例如.我希望"f ...

  3. MySQL 排序规则简介

    在日常工作中,对于MySQL排序规则,很少关注,大部分时候都是直接使用字符集默认的排序规则,常常忽视了排序规则的细节问题,了解排序规则有助于更好的理解MySQL字符比较和排序相关的知识 简述 说起排序 ...

  4. Mysql 排序规则-大小写问题

    Mysql 排序规则-大小写问题 xxx_bin:每个字符串用二进制数据编译存储. 查询时区分大小写. xxx_general_cs: 查询时区分大小写. xxx_general_ci:查询时不区分大 ...

  5. mysql排序规则错误_MySQL中“非法混合排序规则”错误的疑难解答

    阿波罗的战车 更改字符串的一个(或两者)的排序规则以使它们匹配,或者添加一个COLLATE从句到你的表情.这"校对"到底是什么?如下文所述字符集和排序规则:A 字符集是一组符号和编 ...

  6. php mysql 排序规则_使用PHP的MySQL最好的排序规则是什么?

    料青山看我应如是 非常,非常了解使用时可能出现的这个问题utf8_general_ci.如果使用utf8_general_ci排序规则,MySQL将不会区分select语句中的某些字符.这可能导致非常 ...

  7. linux中修改mysql排序规则_MySQL中的排序规则

    MySQL中的排序规则.在新建MySQL数据库或表的时候经常会选择字符集和排序规则.数据库用的字符集大家都知道是怎么回事,那排序规则是什么呢? 排序规则:是指对指定字符集下不同字符的比较规则.其特征有 ...

  8. MySQL排序规则:COLLATE 及中文排序

    文章目录 官方API 简介 使用方法 设置级别及其优先级 排序规则命名约定 查询排序相关 官方API COLLATE API 简介 COLLATE:排序规则.通常是和数据编码(CHARSET)相关的, ...

  9. MySQL排序规则导致无法命中索引问题

    背景 因公司数据库设计不方便展示,语句使用以下数据表演示现象. 在压测完成后,拿到压测过程中系统的慢SQL,发现其中一条慢SQL如下:的执行计划如下: create table user (id va ...

  10. MySQL排序规则批量修改

    排序规则选择 mysql中utf8mb4_general_ci与utf8mb4_unicode_ci有什么区别呢? 为什么大家都使用utf8mb4_general_ci而不是utf8mb4_unico ...

最新文章

  1. 嘿嘿,又中毒了spoolsv.exe
  2. 用手动创建新的script标签的方式,实现JavaScript脚本的异步加载
  3. python学习-syspath、系统内置模块
  4. Swagger 注解~用于方法
  5. android设置输入框输入字符限制,Android EditText限制输入字符的方法总结
  6. tensorboard ckpt pb 模型的输出节点_算法工程化系列——模型固化
  7. 【数据库】Mysql函数DATE_FORMAT() 显示日期/时间
  8. Axure智慧水务移动端原型、智慧泵房、水厂监控、营收管理、DMA漏损、维护管理、GIS地图、水质监控、电商系统
  9. FIREDAC(DELPHI10 or 10.1)提交数据给ORACLE数据库的一个不是BUG的BUG
  10. 统计每个url访问的topN用户以及访问次数(sql)
  11. 实现背景轮播登录页面
  12. git fatal: destination path ‘**‘ already exists and is not an empty directory.解决
  13. 决策树原理及numpy实现版
  14. 塑形管理小程序开发(二)-原型图绘制
  15. Effective GO
  16. 华为充电协议_华为推出超级快充多协议充电器,支持65W USB PD快充输出
  17. nexus 向私服推送jar包 两种方式实现
  18. 程序员初入职场,如何规划好自己的职业生涯?
  19. 关于通信方面的总结(通信协议、通信端口)
  20. cm-14.1 Android系统启动过程分析(4)-init进程的启动、rc脚本解析、zygote启动、属性服务

热门文章

  1. 最全英语日期相关表达
  2. 从辉煌走向消亡(上)——小型机之王DEC公司
  3. Fortran中分配数组大小
  4. Early stopping conditioned on metric `val_loss` which is not available. Available metrics are: loss,
  5. 学生综合素质评价系统c语言,学生综合素质评价表自我评价范文(2)
  6. OPEN-WRT老毛子固件的无线中继设置建议
  7. Tesseract OCR 语言包下载
  8. 在线文件管理html,KODExplorer可道云-开源Web在线文件管理系统
  9. c语言编译器tc2.0,Wintc软件下载
  10. F: Shattered Cake