【MySQL】如何选择字符集与排序规则(字符集校验规则)

思考

就中文而言,MySQL 中可以选择 gb2312 、utf8 及 utf8mb4 。这三种字符集有什么差异 ?应该如何选择?

比较项gb2312utf8utf8mb4
字符集范围简体中文字符集大部分 Unicode 字符更广泛的 Unicode 字符,包括罕见字符和 Emoji 表情符号
编码方式使用 1-2 个字节表示字符使用 1-4 个字节表示字符使用 1-4 个字节表示字符
兼容性主要用于简体中文环境良好的兼容性,支持多种语言更好的兼容性,支持更多的字符
存储空间相对较小,适用于处理简体中文数据根据字符的 Unicode 码点进行编码,可能需要更多的存储空间相对于 utf8,可能需要更多的存储空间,但能够处理更广泛的字符

如上表,如果只需要处理简体中文数据,可以选择 gb2312;如果需要处理多种语言的文本,建议使用 utf8 或 utf8mb4 以确保更好的兼容性和支持。

综合来看,utf8mb4 无疑是不错的选择(字符集范围大、兼容性高,现在硬件成本相对不是很高)。

utf 系

utf 相关的字符集

mysql> show charset like 'utf%' ;
+---------+------------------+--------------------+--------+
| Charset | Description      | Default collation  | Maxlen |
+---------+------------------+--------------------+--------+
| utf16   | UTF-16 Unicode   | utf16_general_ci   |      4 |
| utf16le | UTF-16LE Unicode | utf16le_general_ci |      4 |
| utf32   | UTF-32 Unicode   | utf32_general_ci   |      4 |
| utf8mb3 | UTF-8 Unicode    | utf8_general_ci    |      3 |
| utf8mb4 | UTF-8 Unicode    | utf8mb4_0900_ai_ci |      4 |
+---------+------------------+--------------------+--------+
5 rows in set (0.00 sec)

utf 相关字符集比较

MySQL 支持多种字符集,包括 utf8、utf16、utf16le、utf32、utfmb3 和 utfmb4。这些字符集之间的主要差异在于它们存储字符的方式和所支持的字符范围。

  • utf8:utf8 是一种变长编码,使用 1 到 4 个字节来表示一个字符。它是最常用的 Unicode 字符集之一,向后兼容 ASCII 编码。
  • utf16:utf16 是一种固定长度的编码,使用 2 或 4 个字节来表示一个字符。它可以是 UTF-16LE(Little Endian)或 UTF-16BE(Big Endian)。
  • utf16le:utf16le 是 UTF-16 的一种实现方式,它是 Little Endian 字节序,低字节在内存的低地址,高字节在高地址。
  • utf32:utf32 是一种固定长度的编码,使用 4 个字节来表示一个字符。
  • utfmb3:utfmb3 是 MySQL 特定的字符集,它是 UTF-8 的扩展,支持存储一些罕见的字符。
  • utfmb4:utfmb4 是 MySQL 5.7 及以上版本中引入的字符集,它是 UTF-8 的超集,支持存储更广泛的 Unicode 字符,包括 Emoji 表情符号等。

    总体来说,如果只需要处理基本的 Unicode 字符,utf8 通常是足够的。如果需要处理更多的字符,特别是包含 Emoji 等特殊字符,或者在特定的数据库环境中,可以考虑使用 utf16、utf32、utfmb3 或 utfmb4。选择合适的字符集应根据具体的需求和应用场景来决定。

    utf8mb4

    就 utf8系而言,使用utf8mb4字符集,可以确保数据库能够正确地存储和检索来自各种语言和地区的文本数据。它非常适用于需要支持多语言和多字符集的应用程序,特别是涉及到用户输入、存储或显示表情符号的情况。

    支持的排序规则

    与其他字符集一样,utf8mb4也支持很多排序规则(字符集校验规则),可以使用 SQL 查看。

    -- 内置命令查询
    show collation where Charset='utf8mb4';
    -- SQL 查询 
    select * from information_schema.collations where character_set_name = "utf8mb4" order by COLLATION_NAME;
    

    结果

    # 使用内置命令
    mysql> show collation where Charset='utf8mb4';
    +----------------------------+---------+-----+---------+----------+---------+---------------+
    | Collation                  | Charset | Id  | Default | Compiled | Sortlen | Pad_attribute |
    +----------------------------+---------+-----+---------+----------+---------+---------------+
    | utf8mb4_0900_ai_ci         | utf8mb4 | 255 | Yes     | Yes      |       0 | NO PAD        |
    | utf8mb4_0900_as_ci         | utf8mb4 | 305 |         | Yes      |       0 | NO PAD        |
    | utf8mb4_0900_as_cs         | utf8mb4 | 278 |         | Yes      |       0 | NO PAD        |
    | utf8mb4_0900_bin           | utf8mb4 | 309 |         | Yes      |       1 | NO PAD        |
    | utf8mb4_bin                | utf8mb4 |  46 |         | Yes      |       1 | PAD SPACE     |
    | utf8mb4_croatian_ci        | utf8mb4 | 245 |         | Yes      |       8 | PAD SPACE     |
    | utf8mb4_cs_0900_ai_ci      | utf8mb4 | 266 |         | Yes      |       0 | NO PAD        |
    | utf8mb4_cs_0900_as_cs      | utf8mb4 | 289 |         | Yes      |       0 | NO PAD        |
    | utf8mb4_czech_ci           | utf8mb4 | 234 |         | Yes      |       8 | PAD SPACE     |
    | utf8mb4_danish_ci          | utf8mb4 | 235 |         | Yes      |       8 | PAD SPACE     |
    | utf8mb4_da_0900_ai_ci      | utf8mb4 | 267 |         | Yes      |       0 | NO PAD        |
    | utf8mb4_da_0900_as_cs      | utf8mb4 | 290 |         | Yes      |       0 | NO PAD        |
    | utf8mb4_de_pb_0900_ai_ci   | utf8mb4 | 256 |         | Yes      |       0 | NO PAD        |
    | utf8mb4_de_pb_0900_as_cs   | utf8mb4 | 279 |         | Yes      |       0 | NO PAD        |
    | utf8mb4_eo_0900_ai_ci      | utf8mb4 | 273 |         | Yes      |       0 | NO PAD        |
    | utf8mb4_eo_0900_as_cs      | utf8mb4 | 296 |         | Yes      |       0 | NO PAD        |
    | utf8mb4_esperanto_ci       | utf8mb4 | 241 |         | Yes      |       8 | PAD SPACE     |
    | utf8mb4_estonian_ci        | utf8mb4 | 230 |         | Yes      |       8 | PAD SPACE     |
    | utf8mb4_es_0900_ai_ci      | utf8mb4 | 263 |         | Yes      |       0 | NO PAD        |
    | utf8mb4_es_0900_as_cs      | utf8mb4 | 286 |         | Yes      |       0 | NO PAD        |
    | utf8mb4_es_trad_0900_ai_ci | utf8mb4 | 270 |         | Yes      |       0 | NO PAD        |
    | utf8mb4_es_trad_0900_as_cs | utf8mb4 | 293 |         | Yes      |       0 | NO PAD        |
    | utf8mb4_et_0900_ai_ci      | utf8mb4 | 262 |         | Yes      |       0 | NO PAD        |
    | utf8mb4_et_0900_as_cs      | utf8mb4 | 285 |         | Yes      |       0 | NO PAD        |
    | utf8mb4_general_ci         | utf8mb4 |  45 |         | Yes      |       1 | PAD SPACE     |
    | utf8mb4_german2_ci         | utf8mb4 | 244 |         | Yes      |       8 | PAD SPACE     |
    | utf8mb4_hr_0900_ai_ci      | utf8mb4 | 275 |         | Yes      |       0 | NO PAD        |
    | utf8mb4_hr_0900_as_cs      | utf8mb4 | 298 |         | Yes      |       0 | NO PAD        |
    | utf8mb4_hungarian_ci       | utf8mb4 | 242 |         | Yes      |       8 | PAD SPACE     |
    | utf8mb4_hu_0900_ai_ci      | utf8mb4 | 274 |         | Yes      |       0 | NO PAD        |
    | utf8mb4_hu_0900_as_cs      | utf8mb4 | 297 |         | Yes      |       0 | NO PAD        |
    | utf8mb4_icelandic_ci       | utf8mb4 | 225 |         | Yes      |       8 | PAD SPACE     |
    | utf8mb4_is_0900_ai_ci      | utf8mb4 | 257 |         | Yes      |       0 | NO PAD        |
    | utf8mb4_is_0900_as_cs      | utf8mb4 | 280 |         | Yes      |       0 | NO PAD        |
    | utf8mb4_ja_0900_as_cs      | utf8mb4 | 303 |         | Yes      |       0 | NO PAD        |
    | utf8mb4_ja_0900_as_cs_ks   | utf8mb4 | 304 |         | Yes      |      24 | NO PAD        |
    | utf8mb4_latvian_ci         | utf8mb4 | 226 |         | Yes      |       8 | PAD SPACE     |
    | utf8mb4_la_0900_ai_ci      | utf8mb4 | 271 |         | Yes      |       0 | NO PAD        |
    | utf8mb4_la_0900_as_cs      | utf8mb4 | 294 |         | Yes      |       0 | NO PAD        |
    | utf8mb4_lithuanian_ci      | utf8mb4 | 236 |         | Yes      |       8 | PAD SPACE     |
    | utf8mb4_lt_0900_ai_ci      | utf8mb4 | 268 |         | Yes      |       0 | NO PAD        |
    | utf8mb4_lt_0900_as_cs      | utf8mb4 | 291 |         | Yes      |       0 | NO PAD        |
    | utf8mb4_lv_0900_ai_ci      | utf8mb4 | 258 |         | Yes      |       0 | NO PAD        |
    | utf8mb4_lv_0900_as_cs      | utf8mb4 | 281 |         | Yes      |       0 | NO PAD        |
    | utf8mb4_persian_ci         | utf8mb4 | 240 |         | Yes      |       8 | PAD SPACE     |
    | utf8mb4_pl_0900_ai_ci      | utf8mb4 | 261 |         | Yes      |       0 | NO PAD        |
    | utf8mb4_pl_0900_as_cs      | utf8mb4 | 284 |         | Yes      |       0 | NO PAD        |
    | utf8mb4_polish_ci          | utf8mb4 | 229 |         | Yes      |       8 | PAD SPACE     |
    | utf8mb4_romanian_ci        | utf8mb4 | 227 |         | Yes      |       8 | PAD SPACE     |
    | utf8mb4_roman_ci           | utf8mb4 | 239 |         | Yes      |       8 | PAD SPACE     |
    | utf8mb4_ro_0900_ai_ci      | utf8mb4 | 259 |         | Yes      |       0 | NO PAD        |
    | utf8mb4_ro_0900_as_cs      | utf8mb4 | 282 |         | Yes      |       0 | NO PAD        |
    | utf8mb4_ru_0900_ai_ci      | utf8mb4 | 306 |         | Yes      |       0 | NO PAD        |
    | utf8mb4_ru_0900_as_cs      | utf8mb4 | 307 |         | Yes      |       0 | NO PAD        |
    | utf8mb4_sinhala_ci         | utf8mb4 | 243 |         | Yes      |       8 | PAD SPACE     |
    | utf8mb4_sk_0900_ai_ci      | utf8mb4 | 269 |         | Yes      |       0 | NO PAD        |
    | utf8mb4_sk_0900_as_cs      | utf8mb4 | 292 |         | Yes      |       0 | NO PAD        |
    | utf8mb4_slovak_ci          | utf8mb4 | 237 |         | Yes      |       8 | PAD SPACE     |
    | utf8mb4_slovenian_ci       | utf8mb4 | 228 |         | Yes      |       8 | PAD SPACE     |
    | utf8mb4_sl_0900_ai_ci      | utf8mb4 | 260 |         | Yes      |       0 | NO PAD        |
    | utf8mb4_sl_0900_as_cs      | utf8mb4 | 283 |         | Yes      |       0 | NO PAD        |
    | utf8mb4_spanish2_ci        | utf8mb4 | 238 |         | Yes      |       8 | PAD SPACE     |
    | utf8mb4_spanish_ci         | utf8mb4 | 231 |         | Yes      |       8 | PAD SPACE     |
    | utf8mb4_sv_0900_ai_ci      | utf8mb4 | 264 |         | Yes      |       0 | NO PAD        |
    | utf8mb4_sv_0900_as_cs      | utf8mb4 | 287 |         | Yes      |       0 | NO PAD        |
    | utf8mb4_swedish_ci         | utf8mb4 | 232 |         | Yes      |       8 | PAD SPACE     |
    | utf8mb4_tr_0900_ai_ci      | utf8mb4 | 265 |         | Yes      |       0 | NO PAD        |
    | utf8mb4_tr_0900_as_cs      | utf8mb4 | 288 |         | Yes      |       0 | NO PAD        |
    | utf8mb4_turkish_ci         | utf8mb4 | 233 |         | Yes      |       8 | PAD SPACE     |
    | utf8mb4_unicode_520_ci     | utf8mb4 | 246 |         | Yes      |       8 | PAD SPACE     |
    | utf8mb4_unicode_ci         | utf8mb4 | 224 |         | Yes      |       8 | PAD SPACE     |
    | utf8mb4_vietnamese_ci      | utf8mb4 | 247 |         | Yes      |       8 | PAD SPACE     |
    | utf8mb4_vi_0900_ai_ci      | utf8mb4 | 277 |         | Yes      |       0 | NO PAD        |
    | utf8mb4_vi_0900_as_cs      | utf8mb4 | 300 |         | Yes      |       0 | NO PAD        |
    | utf8mb4_zh_0900_as_cs      | utf8mb4 | 308 |         | Yes      |       0 | NO PAD        |
    +----------------------------+---------+-----+---------+----------+---------+---------------+
    75 rows in set (0.03 sec)
    # 使用SQL 
    mysql> select * from information_schema.collations where character_set_name = "utf8mb4" order by COLLATION_NAME;
    +----------------------------+--------------------+-----+------------+-------------+---------+---------------+
    | COLLATION_NAME             | CHARACTER_SET_NAME | ID  | IS_DEFAULT | IS_COMPILED | SORTLEN | PAD_ATTRIBUTE |
    +----------------------------+--------------------+-----+------------+-------------+---------+---------------+
    | utf8mb4_0900_ai_ci         | utf8mb4            | 255 | Yes        | Yes         |       0 | NO PAD        |
    | utf8mb4_0900_as_ci         | utf8mb4            | 305 |            | Yes         |       0 | NO PAD        |
    | utf8mb4_0900_as_cs         | utf8mb4            | 278 |            | Yes         |       0 | NO PAD        |
    | utf8mb4_0900_bin           | utf8mb4            | 309 |            | Yes         |       1 | NO PAD        |
    | utf8mb4_bin                | utf8mb4            |  46 |            | Yes         |       1 | PAD SPACE     |
    | utf8mb4_croatian_ci        | utf8mb4            | 245 |            | Yes         |       8 | PAD SPACE     |
    | utf8mb4_cs_0900_ai_ci      | utf8mb4            | 266 |            | Yes         |       0 | NO PAD        |
    | utf8mb4_cs_0900_as_cs      | utf8mb4            | 289 |            | Yes         |       0 | NO PAD        |
    | utf8mb4_czech_ci           | utf8mb4            | 234 |            | Yes         |       8 | PAD SPACE     |
    | utf8mb4_danish_ci          | utf8mb4            | 235 |            | Yes         |       8 | PAD SPACE     |
    | utf8mb4_da_0900_ai_ci      | utf8mb4            | 267 |            | Yes         |       0 | NO PAD        |
    | utf8mb4_da_0900_as_cs      | utf8mb4            | 290 |            | Yes         |       0 | NO PAD        |
    | utf8mb4_de_pb_0900_ai_ci   | utf8mb4            | 256 |            | Yes         |       0 | NO PAD        |
    | utf8mb4_de_pb_0900_as_cs   | utf8mb4            | 279 |            | Yes         |       0 | NO PAD        |
    | utf8mb4_eo_0900_ai_ci      | utf8mb4            | 273 |            | Yes         |       0 | NO PAD        |
    | utf8mb4_eo_0900_as_cs      | utf8mb4            | 296 |            | Yes         |       0 | NO PAD        |
    | utf8mb4_esperanto_ci       | utf8mb4            | 241 |            | Yes         |       8 | PAD SPACE     |
    | utf8mb4_estonian_ci        | utf8mb4            | 230 |            | Yes         |       8 | PAD SPACE     |
    | utf8mb4_es_0900_ai_ci      | utf8mb4            | 263 |            | Yes         |       0 | NO PAD        |
    | utf8mb4_es_0900_as_cs      | utf8mb4            | 286 |            | Yes         |       0 | NO PAD        |
    | utf8mb4_es_trad_0900_ai_ci | utf8mb4            | 270 |            | Yes         |       0 | NO PAD        |
    | utf8mb4_es_trad_0900_as_cs | utf8mb4            | 293 |            | Yes         |       0 | NO PAD        |
    | utf8mb4_et_0900_ai_ci      | utf8mb4            | 262 |            | Yes         |       0 | NO PAD        |
    | utf8mb4_et_0900_as_cs      | utf8mb4            | 285 |            | Yes         |       0 | NO PAD        |
    | utf8mb4_general_ci         | utf8mb4            |  45 |            | Yes         |       1 | PAD SPACE     |
    | utf8mb4_german2_ci         | utf8mb4            | 244 |            | Yes         |       8 | PAD SPACE     |
    | utf8mb4_hr_0900_ai_ci      | utf8mb4            | 275 |            | Yes         |       0 | NO PAD        |
    | utf8mb4_hr_0900_as_cs      | utf8mb4            | 298 |            | Yes         |       0 | NO PAD        |
    | utf8mb4_hungarian_ci       | utf8mb4            | 242 |            | Yes         |       8 | PAD SPACE     |
    | utf8mb4_hu_0900_ai_ci      | utf8mb4            | 274 |            | Yes         |       0 | NO PAD        |
    | utf8mb4_hu_0900_as_cs      | utf8mb4            | 297 |            | Yes         |       0 | NO PAD        |
    | utf8mb4_icelandic_ci       | utf8mb4            | 225 |            | Yes         |       8 | PAD SPACE     |
    | utf8mb4_is_0900_ai_ci      | utf8mb4            | 257 |            | Yes         |       0 | NO PAD        |
    | utf8mb4_is_0900_as_cs      | utf8mb4            | 280 |            | Yes         |       0 | NO PAD        |
    | utf8mb4_ja_0900_as_cs      | utf8mb4            | 303 |            | Yes         |       0 | NO PAD        |
    | utf8mb4_ja_0900_as_cs_ks   | utf8mb4            | 304 |            | Yes         |      24 | NO PAD        |
    | utf8mb4_latvian_ci         | utf8mb4            | 226 |            | Yes         |       8 | PAD SPACE     |
    | utf8mb4_la_0900_ai_ci      | utf8mb4            | 271 |            | Yes         |       0 | NO PAD        |
    | utf8mb4_la_0900_as_cs      | utf8mb4            | 294 |            | Yes         |       0 | NO PAD        |
    | utf8mb4_lithuanian_ci      | utf8mb4            | 236 |            | Yes         |       8 | PAD SPACE     |
    | utf8mb4_lt_0900_ai_ci      | utf8mb4            | 268 |            | Yes         |       0 | NO PAD        |
    | utf8mb4_lt_0900_as_cs      | utf8mb4            | 291 |            | Yes         |       0 | NO PAD        |
    | utf8mb4_lv_0900_ai_ci      | utf8mb4            | 258 |            | Yes         |       0 | NO PAD        |
    | utf8mb4_lv_0900_as_cs      | utf8mb4            | 281 |            | Yes         |       0 | NO PAD        |
    | utf8mb4_persian_ci         | utf8mb4            | 240 |            | Yes         |       8 | PAD SPACE     |
    | utf8mb4_pl_0900_ai_ci      | utf8mb4            | 261 |            | Yes         |       0 | NO PAD        |
    | utf8mb4_pl_0900_as_cs      | utf8mb4            | 284 |            | Yes         |       0 | NO PAD        |
    | utf8mb4_polish_ci          | utf8mb4            | 229 |            | Yes         |       8 | PAD SPACE     |
    | utf8mb4_romanian_ci        | utf8mb4            | 227 |            | Yes         |       8 | PAD SPACE     |
    | utf8mb4_roman_ci           | utf8mb4            | 239 |            | Yes         |       8 | PAD SPACE     |
    | utf8mb4_ro_0900_ai_ci      | utf8mb4            | 259 |            | Yes         |       0 | NO PAD        |
    | utf8mb4_ro_0900_as_cs      | utf8mb4            | 282 |            | Yes         |       0 | NO PAD        |
    | utf8mb4_ru_0900_ai_ci      | utf8mb4            | 306 |            | Yes         |       0 | NO PAD        |
    | utf8mb4_ru_0900_as_cs      | utf8mb4            | 307 |            | Yes         |       0 | NO PAD        |
    | utf8mb4_sinhala_ci         | utf8mb4            | 243 |            | Yes         |       8 | PAD SPACE     |
    | utf8mb4_sk_0900_ai_ci      | utf8mb4            | 269 |            | Yes         |       0 | NO PAD        |
    | utf8mb4_sk_0900_as_cs      | utf8mb4            | 292 |            | Yes         |       0 | NO PAD        |
    | utf8mb4_slovak_ci          | utf8mb4            | 237 |            | Yes         |       8 | PAD SPACE     |
    | utf8mb4_slovenian_ci       | utf8mb4            | 228 |            | Yes         |       8 | PAD SPACE     |
    | utf8mb4_sl_0900_ai_ci      | utf8mb4            | 260 |            | Yes         |       0 | NO PAD        |
    | utf8mb4_sl_0900_as_cs      | utf8mb4            | 283 |            | Yes         |       0 | NO PAD        |
    | utf8mb4_spanish2_ci        | utf8mb4            | 238 |            | Yes         |       8 | PAD SPACE     |
    | utf8mb4_spanish_ci         | utf8mb4            | 231 |            | Yes         |       8 | PAD SPACE     |
    | utf8mb4_sv_0900_ai_ci      | utf8mb4            | 264 |            | Yes         |       0 | NO PAD        |
    | utf8mb4_sv_0900_as_cs      | utf8mb4            | 287 |            | Yes         |       0 | NO PAD        |
    | utf8mb4_swedish_ci         | utf8mb4            | 232 |            | Yes         |       8 | PAD SPACE     |
    | utf8mb4_tr_0900_ai_ci      | utf8mb4            | 265 |            | Yes         |       0 | NO PAD        |
    | utf8mb4_tr_0900_as_cs      | utf8mb4            | 288 |            | Yes         |       0 | NO PAD        |
    | utf8mb4_turkish_ci         | utf8mb4            | 233 |            | Yes         |       8 | PAD SPACE     |
    | utf8mb4_unicode_520_ci     | utf8mb4            | 246 |            | Yes         |       8 | PAD SPACE     |
    | utf8mb4_unicode_ci         | utf8mb4            | 224 |            | Yes         |       8 | PAD SPACE     |
    | utf8mb4_vietnamese_ci      | utf8mb4            | 247 |            | Yes         |       8 | PAD SPACE     |
    | utf8mb4_vi_0900_ai_ci      | utf8mb4            | 277 |            | Yes         |       0 | NO PAD        |
    | utf8mb4_vi_0900_as_cs      | utf8mb4            | 300 |            | Yes         |       0 | NO PAD        |
    | utf8mb4_zh_0900_as_cs      | utf8mb4            | 308 |            | Yes         |       0 | NO PAD        |
    +----------------------------+--------------------+-----+------------+-------------+---------+---------------+
    75 rows in set (0.02 sec)
    

    各排序规则含义:

    校验规则描述
    utf8mb4_0900_ai_ci基于Unicode 9.0.0版本,不区分大小写,适用于多语言环境,提供准确的排序结果。
    utf8mb4_0900_as_ci基于Unicode 9.0.0版本,不区分大小写,适用于多语言环境,提供准确的排序结果。
    utf8mb4_0900_as_cs基于Unicode 9.0.0版本,区分大小写,适用于多语言环境,提供准确的排序结果。
    utf8mb4_0900_bin基于Unicode 9.0.0版本,进行严格的二进制比较和排序,区分大小写和字符编码。
    utf8mb4_bin进行严格的二进制比较和排序,区分大小写和字符编码。
    utf8mb4_croatian_ci不区分大小写,适用于克罗地亚语的比较和排序。
    utf8mb4_cs_0900_ai_ci基于Unicode 9.0.0版本,不区分大小写,适用于捷克语的比较和排序。
    utf8mb4_cs_0900_as_cs基于Unicode 9.0.0版本,区分大小写,适用于捷克语的比较和排序。
    utf8mb4_czech_ci不区分大小写,适用于捷克语的比较和排序。
    utf8mb4_danish_ci不区分大小写,适用于丹麦语的比较和排序。
    utf8mb4_da_0900_ai_ci基于Unicode 9.0.0版本,适用于丹麦语,不区分大小写,提供准确的排序结果。
    utf8mb4_da_0900_as_cs基于Unicode 9.0.0版本,适用于丹麦语,区分大小写,提供准确的排序结果。
    utf8mb4_de_pb_0900_ai_ci基于Unicode 9.0.0版本,适用于德语(奥地利/瑞士),不区分大小写,提供准确的排序结果。
    utf8mb4_de_pb_0900_as_cs基于Unicode 9.0.0版本,适用于德语(奥地利/瑞士),区分大小写,提供准确的排序结果。
    utf8mb4_eo_0900_ai_ci基于Unicode 9.0.0版本,适用于世界语,不区分大小写,提供准确的排序结果。
    utf8mb4_eo_0900_as_cs基于Unicode 9.0.0版本,适用于世界语,区分大小写,提供准确的排序结果。
    utf8mb4_esperanto_ci不区分大小写,适用于世界语的比较和排序。
    utf8mb4_estonian_ci不区分大小写,适用于爱沙尼亚语的比较和排序。
    utf8mb4_es_0900_ai_ci基于Unicode 9.0.0版本,适用于西班牙语,不区分大小写,提供准确的排序结果。
    utf8mb4_es_0900_as_cs基于Unicode 9.0.0版本,适用于西班牙语,区分大小写,提供准确的排序结果。
    utf8mb4_es_trad_0900_ai_ci基于Unicode 9.0.0版本,适用于传统的西班牙语,不区分大小写,提供准确的排序结果。
    utf8mb4_es_trad_0900_as_cs基于Unicode 9.0.0版本,适用于传统的西班牙语,区分大小写,提供准确的排序结果。
    utf8mb4_et_0900_ai_ci基于Unicode 9.0.0版本,适用于爱沙尼亚语,不区分大小写,提供准确的排序结果。
    utf8mb4_et_0900_as_cs基于Unicode 9.0.0版本,适用于爱沙尼亚语,区分大小写,提供准确的排序结果。
    utf8mb4_general_ci不区分大小写的通用排序规则,适用于多语言环境。
    utf8mb4_german2_ci不区分大小写,适用于德语的比较和排序,提供更严格的排序规则。
    utf8mb4_hr_0900_ai_ci基于Unicode 9.0.0版本,适用于克罗地亚语,不区分大小写,提供准确的排序结果。
    utf8mb4_hr_0900_as_cs基于Unicode 9.0.0版本,适用于克罗地亚语,区分大小写,提供准确的排序结果。
    utf8mb4_hungarian_ci不区分大小写,适用于匈牙利语的比较和排序。
    utf8mb4_hu_0900_ai_ci基于Unicode 9.0.0版本,适用于匈牙利语,不区分大小写,提供准确的排序结果。
    utf8mb4_hu_0900_as_cs基于Unicode 9.0.0版本,适用于匈牙利语,区分大小写,提供准确的排序结果。
    utf8mb4_icelandic_ci不区分大小写,适用于冰岛语的比较和排序。
    utf8mb4_is_0900_ai_ci基于Unicode 9.0.0版本,适用于冰岛语,不区分大小写,提供准确的排序结果。
    utf8mb4_is_0900_as_cs基于Unicode 9.0.0版本,适用于冰岛语,区分大小写,提供准确的排序结果。
    utf8mb4_ja_0900_as_cs基于Unicode 9.0.0版本,适用于日语,区分大小写,提供准确的排序结果。
    utf8mb4_ja_0900_as_cs_ks基于Unicode 9.0.0版本,适用于日语,区分大小写和偏旁部首,提供准确的排序结果。
    utf8mb4_latvian_ci不区分大小写,适用于拉脱维亚语的比较和排序。
    utf8mb4_la_0900_ai_ci基于Unicode 9.0.0版本,适用于拉丁语系语言,不区分大小写,提供准确的排序结果。
    utf8mb4_la_0900_as_cs基于Unicode 9.0.0版本,适用于拉丁语系语言,区分大小写,提供准确的排序结果。
    utf8mb4_lithuanian_ci不区分大小写,适用于立陶宛语的比较和排序。
    utf8mb4_lt_0900_ai_ci基于Unicode 9.0.0版本,适用于立陶宛语,不区分大小写,提供准确的排序结果。
    utf8mb4_lt_0900_as_cs基于Unicode 9.0.0版本,适用于立陶宛语,区分大小写,提供准确的排序结果。
    utf8mb4_lv_0900_ai_ci基于Unicode 9.0.0版本,适用于拉脱维亚语,不区分大小写,提供准确的排序结果。
    utf8mb4_lv_0900_as_cs基于Unicode 9.0.0版本,适用于拉脱维亚语,区分大小写,提供准确的排序结果。
    utf8mb4_persian_ci不区分大小写,适用于波斯语的比较和排序。
    utf8mb4_pl_0900_ai_ci基于Unicode 9.0.0版本,适用于波兰语,不区分大小写,提供准确的排序结果。
    utf8mb4_pl_0900_as_cs基于Unicode 9.0.0版本,适用于波兰语,区分大小写,提供准确的排序结果。
    utf8mb4_polish_ci不区分大小写,适用于波兰语的比较和排序。
    utf8mb4_romanian_ci不区分大小写,适用于罗马尼亚语的比较和排序。
    utf8mb4_roman_ci不区分大小写,适用于罗马语系的比较和排序。
    utf8mb4_ro_0900_ai_ci基于Unicode 9.0.0版本,适用于罗马尼亚语,不区分大小写,提供准确的排序结果。
    utf8mb4_ro_0900_as_cs基于Unicode 9.0.0版本,适用于罗马尼亚语,区分大小写,提供准确的排序结果。
    utf8mb4_ru_0900_ai_ci基于Unicode 9.0.0版本,适用于俄语,不区分大小写,提供准确的排序结果。
    utf8mb4_ru_0900_as_cs基于Unicode 9.0.0版本,适用于俄语,区分大小写,提供准确的排序结果。
    utf8mb4_sinhala_ci不区分大小写,适用于僧伽罗语的比较和排序。
    utf8mb4_sk_0900_ai_ci基于Unicode 9.0.0版本,适用于斯洛伐克语,不区分大小写,提供准确的排序结果。
    utf8mb4_sk_0900_as_cs基于Unicode 9.0.0版本,适用于斯洛伐克语,区分大小写,提供准确的排序结果。
    utf8mb4_slovak_ci不区分大小写,适用于斯洛伐克语的比较和排序。
    utf8mb4_slovenian_ci不区分大小写,适用于斯洛文尼亚语的比较和排序。
    utf8mb4_sl_0900_ai_ci基于Unicode 9.0.0版本,适用于斯洛文尼亚语,不区分大小写,提供准确的排序结果。
    utf8mb4_sl_0900_as_cs基于Unicode 9.0.0版本,适用于斯洛文尼亚语,区分大小写,提供准确的排序结果。
    utf8mb4_spanish2_ci不区分大小写,适用于西班牙语的比较和排序。
    utf8mb4_spanish_ci不区分大小写,适用于西班牙语的比较和排序。
    utf8mb4_sv_0900_ai_ci基于Unicode 9.0.0版本,适用于瑞典语,不区分大小写,提供准确的排序结果。
    utf8mb4_sv_0900_as_cs基于Unicode 9.0.0版本,适用于瑞典语,区分大小写,提供准确的排序结果。
    utf8mb4_swedish_ci不区分大小写,适用于瑞典语的比较和排序。
    utf8mb4_tr_0900_ai_ci基于Unicode 9.0.0版本,适用于土耳其语,不区分大小写,提供准确的排序结果。
    utf8mb4_tr_0900_as_cs基于Unicode 9.0.0版本,适用于土耳其语,区分大小写,提供准确的排序结果。
    utf8mb4_turkish_ci不区分大小写,适用于土耳其语的比较和排序。
    utf8mb4_unicode_520_ci不区分大小写,基于Unicode 5.2.0版本的通用排序规则。
    utf8mb4_unicode_ci不区分大小写,基于Unicode的通用排序规则。
    utf8mb4_vietnamese_ci不区分大小写,适用于越南语的比较和排序。
    utf8mb4_vi_0900_ai_ci基于Unicode 9.0.0版本,适用于越南语,不区分大小写,提供准确的排序结果。
    utf8mb4_vi_0900_as_cs基于Unicode 9.0.0版本,适用于越南语,区分大小写,提供准确的排序结果。
    utf8mb4_zh_0900_as_cs基于Unicode 9.0.0版本,适用于中文,区分大小写,提供准确的排序结果。

    常用的排序规则

    校验规则描述
    utf8mb4_0900_ai_ci基于Unicode 9.0.0版本,不区分大小写,适用于多语言环境,提供准确的排序结果。
    utf8mb4_0900_as_ci基于Unicode 9.0.0版本,不区分大小写,适用于多语言环境,提供准确的排序结果。
    utf8mb4_0900_as_cs基于Unicode 9.0.0版本,区分大小写,适用于多语言环境,提供准确的排序结果。
    utf8mb4_0900_bin基于Unicode 9.0.0版本,进行严格的二进制比较和排序,区分大小写和字符编码。
    utf8mb4_bin进行严格的二进制比较和排序,区分大小写和字符编码。
    utf8mb4_general_ci不区分大小写的通用排序规则,适用于多语言环境。
    utf8mb4_unicode_520_ci不区分大小写,基于Unicode 5.2.0版本的通用排序规则。
    utf8mb4_unicode_ci不区分大小写,基于Unicode的通用排序规则。
    utf8mb4_zh_0900_as_cs基于Unicode 9.0.0版本,适用于中文,区分大小写,提供准确的排序结果。

    基于上表描述信息,utf8mb4_0900_ai_ci 是 utf8mb4 字符集的默认排序规则(字符集校验规则),然而一般软件开发中用户可能选择 utf8mb4_0900_as_cs 或 utf8mb4_bin 。

    utf8mb4 字符集的默认校验规则为: utf8mb4_0900_ai_ci

    排序规则命名规则:

    字符集_[编码|语言][_重音][_大小写敏感][_bin]

    字符集: utf8mb4

    编码:可选,值可能为 0900、unicode 或 unicode_520

    语言:校验规则为特别语言而定制,如 _zh 表示适用于中文,_da 表示适用于丹麦语

    重音:ai 表示不区分重音,as 表示区分重音

    大小写敏感: ci 表示不区分大小写,cs 表示区分大小写

    bin: 指字符比较时采用二进制进行比较。 当将字符串视为二进制进行比较时,会将字符串中的每个字符视为一组字节(或比特)的序列,而不考虑字符的语义、语言、大小写或重音符号等特征。在进行二进制比较时,只比较字符的字节表示,而不考虑字符本身的含义。