MySQL字符集

文章目录

    • 一、字符集与排序规则
    • 二、MySQL常用字符集和排序规则
    • 三、相关参数

一、字符集与排序规则

  字符集的内容包含:character setcollation rule,每种字符集对应多个排序规则,

  • 字符集是一套字符与一套编码的映射集合
  • 排序规则是字符集内用来比较每个字符的规则

二、MySQL常用字符集和排序规则

#字符集
show charset where charset like 'utf8%';/select * from information_schema.character_sets where character_set_name like 'utf8%';
+--------------------+----------------------+---------------+--------+
| CHARACTER_SET_NAME | DEFAULT_COLLATE_NAME | DESCRIPTION   | MAXLEN |
+--------------------+----------------------+---------------+--------+
| utf8               | utf8_general_ci      | UTF-8 Unicode |      3 |
| utf8mb4            | utf8mb4_0900_ai_ci   | UTF-8 Unicode |      4 |
+--------------------+----------------------+---------------+--------+
#排序规则
show collation where collation like '%utf8%bin%' or collation like '%utf8%unicode_ci';/select * from information_schema.COLLATIONS where collation_name like '%utf8%bin%' or collation_name like '%utf8%unicode_ci';
+--------------------+--------------------+-----+------------+-------------+---------+---------------+
| COLLATION_NAME     | CHARACTER_SET_NAME | ID  | IS_DEFAULT | IS_COMPILED | SORTLEN | PAD_ATTRIBUTE |
+--------------------+--------------------+-----+------------+-------------+---------+---------------+
| utf8_bin           | utf8               |  83 |            | Yes         |       1 | PAD SPACE     |
| utf8_unicode_ci    | utf8               | 192 |            | Yes         |       8 | PAD SPACE     |
| utf8mb4_bin        | utf8mb4            |  46 |            | Yes         |       1 | PAD SPACE     |
| utf8mb4_unicode_ci | utf8mb4            | 224 |            | Yes         |       8 | PAD SPACE     |
| utf8mb4_0900_bin   | utf8mb4            | 309 |            | Yes         |       1 | NO PAD        |
+--------------------+--------------------+-----+------------+-------------+---------+---------------+
5 rows in set (0.00 sec)

  • NO PAD
    如果字符后面有空格,那就把空格当作一个字符处理。也就是在对比的时候不会忽视空格的存在。
  • PAD SPACE
    表示如果字符后面有空格,可以忽略空格来比较。也就是空格可有可无。

三、相关参数

MySQL 字符集涉及到的参数如下:
1、MySQL 服务层
  以下两个设置 MySQL 服务层字符集和排序规则,代表 MySQL 服务启动后,默认的字符集和排序规则。
character_set_server:服务层默认字符集编码
collation_server:服务层默认排序规则
2、 客户端层
  对任何可以连接到 MySQL 服务端的客户端生效。
character_set_client:设置客户端的字符集。
3、数据库层
character_set_database:设置创建新数据库时默认的字符集
collation_database:设置创建新数据库时默认排序规则名称
4、元数据层
  数据库名,表名,列名,用户名等。
character_set_system: MySQL 元数据默认的字符集,目前不可设置,固定为 UTF8。
5、结果集层
character_set_results:设置从服务端发送数据到客户端的字符集。包括查询结果,错误信息输出等。
6、连接层
  比如普通字符串,或者已经写好的 SQL 语句但还没有执行。
character_set_connection:设置客户端发送请求到服务端,但是服务端还没有接受之前的数据编码。
collation_connection: 连接层的排序规则。
7、文件系统层
character_set_filesystem:设置语句中涉及到的文件名字字符集。
  客户端层、连接层、结果集层,这三层一般都是一起设置。比如setnames utf8;同时设置这三个层次的参数;

你可能感兴趣的:(MySQL)