字符集

字符集表示存储到数据库的字符以何种格式编码(所谓编码指的是字符映射到二进制数据的过程,解码则是对应的逆操作)以及支持的编码字符范围,常见的字符集有 ASCIIISO 8859-1(在 ASCII 字符集上进行扩展,对应 MySQL 中的 latin1)、GBKUTF8 等,在 MySQL中可以通过 show charset 命令查看系统支持的所有字符集:

可以看到 utf8 的 Maxlen 为 3,utf8mb4 的 Maxlen 为 4

排序规则

而排序规则(或者叫做比较规则)表示存储到数据库的字符以何种方式比较大小进行排序,如果没有指定排序规则,每个字符集有着默认的排序规则,见上图 Default collation 字段,雌此外,你也可以通过 show collation 命令查看 MySQL 支持的所有排序规则:

排序规则都有固定的格式:字符集_语言_后缀

  • 字符集表示字符对应的编码字符集,对应前面指定的 charset 设置,即某个字符集需要使用与之对应的排序规则;

  • 语言表示使用的自然语言,比如 spanishpolish 等,general 则是通用的;

  • 后缀一般是 ci,表示排序比较的时候字符不区分大小写,如果是 cs 则表示区分大小写,上图中还可以看到 bin 后缀,表示以二进制格式比较,通常我们都使用 ci