字符集是一组符号和编码。字符集校对规则是用于比较字符集中的字符的一组规则。字符集校对规则是一组规则。以下是一个虚构的字符集,以便我们能区分字符集与字符集校对规则。

假设我们有个一个字母表,其中包含四个字母:A,B,a,b 。我们给每一个字母分配一个编号:A = 0, B = 1, a = 2, b = 3。字母A是一个符号,数字0是一个与A相对应的编码。所有的字符和与字符对应的编码构成一个字符集。

假设我们需要比较两个字符串的值,AB 。最简单的方法是查询编码:0 代表 A ,1 代表 B ,因为 0<1 ,因此我们认为 A< B。以上是应用与字符集的排序规则。

字符集校对规则是一组规则(在这种情况下只有一个规则): “比较编码”,这是所有可用规则中最简单的二进制排序规则。

如果我们想让大写字母与小写字母相等,则需要至少两个规则:(1)、处理小写字母 a 和 b 等同于 A 和 B ;(2)、比较编码。我们称之case-insensitive(大小写不敏感)排序规则,它是比二进制排序规则稍微复杂一点。

在实际应用中,大多数字符集都有很多的字符,不仅仅只是A和B而是整个字母表,有时还会有多个字母表,或是东亚书写系统包含成千上方个字符、还有特殊符号和标点符号。同样在实际应用中,大部分的校对包含很多规则,不仅仅只是区分字母大小写,还包括是否区分重音( “重音”是附加到字符上的标记,如德语中的 Ö), 以及多字符映射表(如德语校对规则中的 Ö = OE 规则)。

MySQL 可以为您做以下事情:

  • 使用各种字符集存储字符串;
  • 使用各种校对规则比较字符串;
  • 在同一个服务器或同一个数据库甚至同一个表中使用不同的字符集和字符集校对规则;
  • 在任意级别使用指定的字符集和字符集校对规则;

要想合理有效的使用这些功能,你必须知道字符集与字符集校对规则是否可用,如何去修改默认值以及他们是如何影响字符串之间的运算和函数功能。