简述 MySQL 的字符集和比较规则(简洁明了)

字符集和比较规则

字符集的概念:

人们抽象出一个字符集的概念来描述某个字符范围的编码规则。

比较规则的概念:

对于某一种字符集来说,可以制定用来比较字符大小的多种规则,也就是说同一种字符集可以有多种规则。

最常用的 UTF-8 字符集在表示一个字符时需要使用1 ~ 4个字节,但是我们常用的一些字符使用1 ~ 3个字符就可以了。

在设计上,MySQL定义了下面两个概念

  • utf8mb3:“阉割” 过的UTF-8字符集,只使用1~3个字节表示字符。
  • utf8mb4:正宗的UTF-8字符集,使用1~4个字节表示字符。

在 MySQL8.0 中,MySQL 的默认字符集是 utf8mb4 。

一个字符集可以有多种比较规则

可以用show charset; 命令查看。

其中:
  • ai:不区分重音
  • as:区分重音
  • ci:不区分大小写
  • cs:区分大小写
  • bin:以二进制方式比较

character_set_server: 当前服务器的字符集

collation_server: 当前服务器的比较规则

可以用 show varlables like ‘上述的两个’ 来查看。

character_set_database: 当前数据库的字符集

collation_database: 当前了数据库的比较规则

查看方式和上述所说的一样。

字符集和比较规则分几个级别:

  • 服务器级别
  • 数据库级别
  • 表级别
  • 列级别

每个级别的字符集都是可以进行调整,有相关的命令。

继承关系:

在创建数据库的时候如果不显式指定字符集和比较规则,这时候将使用服务器级别的比较规则。

在创建表的时候如果不显式指定字符集和比较规则,这时候将使用数据库级别的比较规则。

在创建列的时候如果不显式指定字符集和比较规则,这时候将使用表级别的比较规则。

最后,如果客户端和服务端的所用的字符集不一致可能会导致乱码;如果在排序的时候所得到的结果与预期不一致,可能是比较规则没设置好。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值