字符集是一组符号和编码。排序规则是一组用于比较字符集中的字符的规则。让我们用一个假想字符集的例子来明确区分。
    假设我们有一个有四个字母的字母表: 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 可以为你做这些事情:

    • 使用各种字符集存储字符串。
    • 使用各种排序规则比较字符串。
    • 在同一个服务器、同一个数据库甚至同一个表中混合具有不同字符集或排序规则的字符串。
    • 在任何级别启用字符集和排序规则的规范。

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