字符集和比较规则
Mysql的同一种字符集可以拥有多种比较规则(用于比较字符串的大小)
查看字符集
命令如下:
SHOW CHARACTER SET [LIKE ...];
查看比较规则
命令如下
SHOW COLLATION [LIKE ...]
字符集和比较规则的级别
有四种
- 服务器
- 数据库
- 标记别
- 列级别
服务器级别的字符集和比较规则
两个系统变量
系统变量名 | 描述 |
---|---|
character_set_server | 服务器字符集 |
collation_server | 服务器级别的比较规则 |
数据库级别的比较规则和字符集
特别注意的是,服务器级别的比较规则和字符集需要在创建时设定,并且是只读的
表级别
表级别的是可以修改的,也可以在创建时指定
列级别
同上
需要注意的是,修改字符集合,那么相应的比较规则改为相应默认的比较规则,反过来同是
Mysql处理连接请求和返回结果使用的字符集
变量character_set_client:用于解析客户端的请求
变量character_set_connection:将上面的client字符集转换成connection后再将connection转化成列使用的字符集
变量character_set_results将查询结果从具体的列转换成result指示的字符集
流程如下图
MYSQL一般将该三个字符集设置成一样的,并且提供了一条简单的语句
SET NAMES 'utf8';
这条语句会将上文的三个变量设置成一致的