MySQL 排序规则简介

 更新时间:2023年09月16日 15:07:35   作者:云满笔记  
排序规则是指对指定字符集下不同字符的比较规则,有明显的体征体现,如两个不同的字符集不能有相同的排序规则两个字符集有一个默认的排序规则有一些常用的命名规则,接下来通过本文详细介绍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 就可以了。

到此这篇关于MySQL 排序规则的文章就介绍到这了,更多相关MySQL 排序规则内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详细聊聊关于Mysql联合查询的那些事儿

    详细聊聊关于Mysql联合查询的那些事儿

    联合查询union将多次查询(多条select语句)的结果,在字段数相同的情况下,在记录的层次上进行拼接,这篇文章主要给大家介绍了关于Mysql联合查询的那些事儿,需要的朋友可以参考下
    2021-10-10
  • mysql导入导出数据的示例详解

    mysql导入导出数据的示例详解

    本文主要介绍了MySQL 导出和导入数据的几种实现方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-05-05
  • 在MySQL中按字符串中的数字排序的详细教程

    在MySQL中按字符串中的数字排序的详细教程

    本文将详细介绍如何在MySQL中利用正则表达式提取字符串中的数字并按这些数字进行排序,以一个具体的例子来说明,使得即使是数据库操作的初学者也能轻松理解和应用,需要的朋友可以参考下
    2024-07-07
  • 在MySQL数据库中使用C执行SQL语句的方法

    在MySQL数据库中使用C执行SQL语句的方法

    与PostgreSQL相似,可使用许多不同的语言来访问MySQL,包括C、C++、Java和Perl。从Professional Linux Programming中第5章有关MySQL的下列章节中,Neil Matthew和Richard Stones使用详尽的MySQL C接口向我们介绍了如何在MySQL数据库中执行SQL语句。
    2012-10-10
  • MySQL 常见错误分析与解决方法

    MySQL 常见错误分析与解决方法

    Mysql 在使用过程中经常遇到错误,都是本人在实际应用中处理检验过的,本文对常见错误出现的代码进行详细分析,并有中文解释,以及解决方法!
    2016-07-07
  • MySQL中因一个双引号错位引发的血案详析

    MySQL中因一个双引号错位引发的血案详析

    这篇文章主要给大家介绍了关于MySQL中因一个双引号错位引发的血案的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-11-11
  • MySQL命令行操作时的编码问题详解

    MySQL命令行操作时的编码问题详解

    这篇文章主要给大家介绍了关于MySQL命令行操作时的编码问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • SQL索引失效的11种情况详析

    SQL索引失效的11种情况详析

    索引并不是时时都会生效的,遇到一些情况将导致索引失效,下面这篇文章主要给大家介绍了关于SQL索引失效的11种情况,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-03-03
  • Mysql数据库的主从同步配置

    Mysql数据库的主从同步配置

    这篇文章主要介绍了Mysql主从同步配置的相关资料,需要的朋友可以参考下文内容
    2021-08-08
  • mysql data文件夹位置查找

    mysql data文件夹位置查找

    在mysql安装之后,如何找到自己的mysql数据库的安装位置,本文将介绍详细的解决方法,需要的朋友可以参考下
    2012-12-12

最新评论