# 10.1一般的字符集和排序规则

字符集是一组符号和编码。排序规则是用于比较字符集中字符的一组规则。让我们以一个虚构的角色集为例来明确区分。

假设我们有一个包含四个字母的字母表:A.,B,A.,b.我们给每个字母一个数字:A.= 0,B= 1,A.= 2,b= 3. 信A.是一个符号,数字0是编码对于A.,这四个字母及其编码的组合是字符集.

假设我们想要比较两个字符串值,A.B.最简单的方法是查看编码:0代表A.1人B.因为0小于1,我们说A.不到B.我们刚刚做的是对我们的字符集应用排序规则。排序规则是一组规则(本例中只有一条规则):“比较编码。”我们称这种最简单的排序规则为二进制排序规则。

但是如果我们想说小写字母和大写字母是等价的呢?那么我们至少有两条规则:(1)处理小写字母A.b相当于A.B; (2) 然后比较编码。我们称之为不区分大小写的排序规则。它比二进制排序复杂一点。

在现实生活中,大多数角色集都有很多角色:不仅仅是A.B但整个字母表,有时是多个字母表,或是包含数千个字符的东方书写系统,以及许多特殊符号和标点符号。同样在现实生活中,大多数排序规则都有很多规则,不仅是关于是否区分字母大小写,还包括是否区分重音(在德语中,“重音”是附加在字符上的标记)Ö),以及多个字符映射(例如Ö = OE在两个德国校勘中的一个)。

MySQL可以为您做以下事情:

  • 使用各种字符集存储字符串。

  • 使用各种排序规则比较字符串。

  • 在同一台服务器、同一个数据库甚至同一个表中混合具有不同字符集或排序规则的字符串。

  • 允许在任何级别指定字符集和排序规则。

    为了有效地使用这些功能,您必须知道哪些字符集和排序规则可用,如何更改默认值,以及它们如何影响字符串运算符和函数的行为。