概述mysql字符集的层次关系,【0012】mysql字符集和排序规则

1.关于字符集和排序规则

所为字符集,就是用来定义字符在数据库中的编码的集合。常见的字符集有:utf8(支持中文)和AccIS(不支持中文)

数据库中的排序规则用来定义字符在进行排序和比较的时候的一种规则。常见的如下:

(1) utf8_general_ci 不区分大小写,utf8_general_cs 区分大小写

(2) utf8_bin 规定每个字符串用二进制编码存储,区分大小写,可以直接存储二进制的内容

说明:所为排序规则,就是指字符比较时是否区分大小写,以及是按照字符编码进行比较还是直接用二进制数据比较。

utf8_unicode_ci和utf8_general_ci对中、英文来说没有实质的差别。

utf8_general_ci校对速度快,但准确度稍差。

utf8_unicode_ci准确度高,但校对速度稍慢。

如果你的应用有德语、法语或者俄语,请一定使用utf8_unicode_ci。一般用utf8_general_ci就够了。

所以一般字符集用utf-8,排序规则用utf8_general_ci

2、继承关系

mysql对服务器的每个数据库、每个表都有默认的字符集和排序规则。这形成了创建列时影响其字符集的默认值的继承关系。

在继承的每一个层次,都可以显示的定义字符集或让服务器使用默认值:

1.当创建一个数据库的时候,他从服务器继承了character_set_server设置;

2.当创建表的时候,他从数据库继承字符集;

3.当创建列时,它从表继承字符集;

3、查看字符集和排序规则有关的系统变量

字符集

show variables like 'character\_set\_%';

8d7407de1c3f5443a130ec6fa79caf72.png

排序规则

show variables like 'collation\_%';

11205aacc51d821f7badc731c6b1ca64.png

4、各系统变量含义

character_set_system:MySQL 数据库标识符使用的字符集,永远是utf8

character_set_server和collation_server:服务器的默认字符集和排序方式

character_set_database和collation_database:当前数据库的默认字符集和排序方式

以下三个变量将影响客户端和服务器之间的通信:

character_set_client:客户端向服务器发送SQL语句使用的字符集

character_set_results:服务器向客户端返回结果时使用的字符集

character_set_connection:如果它和character_set_client不同,从客户端发来的SQL语句将转换为它指定的字符集

默认情况下,上述三个变量都设为为相同的值,

5、修改默认字符集和排序规则

其实也就是修改服务器端的。这样下面3层都会继承。

这里打算修改字符集为utf-8,排序规则为utf8_general_ci

打开mysql安装目录下my.ini文件,在最下面添加(mysqld组下)

character-set-server=utf8

collation_server=utf8_general_ci

a2912e5889acd13f85d828bfae4a5085.png

保存my.ini。关闭mysql服务器,重新打开。再用navicat查询工具输入上面的查询语句即可看到修改成功。

773165cab386b699dcf88b914a1e6aae.png

9ca4a4be5ca877d8ba88cfb866032289.png

对比未修改默认字符集和排序规则前的查询结果,会发现

字符集中:

character_set_server 和 character_set_database 变了。因为数据库的字符集是继承服务器的。

排序规则中:

collation_server 和 collation_database 变了。同样,因为数据库的排序规则是继承服务器的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值