标签:特殊 toc nic info 服务 字符 utf8mb4 运行 方案
?? Hello 大家好,我是 Nagase ,MySQL 从删库到跑路 ,又到了学习 MySQL 的时刻,接下来就让我们感受一下 MySQL 独特的魅力吧。
在该篇博客中,我们主要介绍 字符集与校对规则 相关的内容,祝你学的开心 ?? 。
字符(Character) 是计算机中字母、数字、符号的统称,一个字符可以是一个中文汉字、一个英文字母、一个阿拉伯数字、一个标点符号等。
计算机是以二进制的形式来存储数据的。平时我们在显示器上看到的数字、英文、标点符号、汉字等字符都是二进制数转换之后的结果。
字符集(Character set) 定义了 字符 和 二进制 的对应关系,为字符分配了唯一的编号。
常见的字符集: ASCII、GBK、ISO-8859-1 等。
字符编码(Character encoding)也可以称为字集码,规定了如何将字符的编号存储到计算机中,是一种规则。
大部分 字符集 都只对应一种 字符编码 ,例如:ASCII、IOS-8859-1、GB2312、GBK,都是既表示了字符集又表示了对应的字符编码。所以 一般情况 下,可以将两者 视为同义词 。
However,Unicode 字符集除外,Unicode 有三种编码方案,即 UTF-8、UTF-16 和 UTF-32。
最为常用的是 UTF-8 编码。
字符集 与 字符编码 这两个概念常常会被混淆,但实际上,这两者是有区别的。
字符集 与 字符编码 是两个不同层面的概念:
从图中我们可以看出:
校对规则(Collation) 也可以称为排序规则,是指在同一个字符集内字符之间的比较规则。
字符集和校对规则是一对多的关系,每个字符集都有一个默认的校对规则。字符集和校对规则相辅相成,相互依赖关联。
简单来说,字符集用来定义 MySQL 存储字符串的方式,校对规则用来定义 MySQL 比较字符串的方式。
有些数据库并 没有 清晰的 区分开 字符集和校对规则。例如,在 SQL Server 中创建数据库时,选择字符集就相当于选定了字符集和校对规则。
而在 MySQL 中,字符集和校对规则是 区分开 的,必须设置字符集和校对规则。一般情况下,没有特殊需求,只设置其一即可。只设置字符集时,MySQL 会将校对规则设置为字符集中对应的默认校对规则。
可以通过 SHOW VARIABLES LIKE ‘character%‘;
命令查看当前 MySQL 使用的字符集,命令和运行结果如下所示:
mysql> SHOW VARIABLES LIKE ‘character%‘;
+--------------------------+------------------------------------------------------+
| Variable_name | Value |
+--------------------------+------------------------------------------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| character_sets_dir | C:\Program Files\mysql-5.6.51-winx64\share\charsets\ |
+--------------------------+------------------------------------------------------+
8 rows in set (0.00 sec)
上述运行结果含义如下表所示:
名称 | 说明 |
---|---|
character_set_client | MySQL 客户端使用的字符集 |
character_set_connection | 连接数据库时使用的字符集 |
character_set_database | 创建数据库使用的字符集 |
character_set_filesystem | MySQL 服务器文件系统使用的字符集,默认值为 binary,不做任何转换 |
character_set_results | 数据库给客户端返回数据时使用的字符集 |
character_set_server | MySQL 服务器使用的字符集,建议由系统自己管理,不要人为定义 |
character_set_system | 数据库系统使用的字符集,默认值为 utf8,不需要设置 |
character_sets_dir | 字符集的安装目录 |
可以通过 SHOW VARIABLES LIKE ‘collation%‘;
命令查看当前 MySQL 使用的校对规则,命令和运行结果如下所示:
mysql> SHOW VARIABLES LIKE ‘collation%‘;
+----------------------+--------------------+
| Variable_name | Value |
+----------------------+--------------------+
| collation_connection | utf8mb4_unicode_ci |
| collation_database | utf8mb4_unicode_ci |
| collation_server | utf8mb4_unicode_ci |
+----------------------+--------------------+
3 rows in set (0.00 sec)
上述运行结果含义如下表所示:
名称 | 说明 |
---|---|
collation_connection | 连接数据库时使用的校对规则 |
collation_database | 创建数据库时使用的校对规则 |
collation_server | MySQL 服务器使用的校对规则 |
其中,ci 表示大小写不敏感,cs 表示大小写敏感,bin 表示按照二进制编码值比较。
MySQL 中字符集的转换过程如下:
标签:特殊 toc nic info 服务 字符 utf8mb4 运行 方案
原文地址:https://www.cnblogs.com/apple-liumingyang/p/14526864.html