Java学习

  • 首页
  • 文章归档
  • 默认分类
  • 关于页面

  • 搜索
CAP 分布式 计算机网络 MySQL 源码 备份 Redis

MySQL-字符集和比较规则

发表于 2021-03-12 | 0 | 阅读次数 462

1、字符集和比较规则简介

1.1、字符集简介

所谓字符集就是字符和实际存储的二进制数据之间的映射关系。映射关系包括两个方面:

  1. 字符范围:字符范围就是指字符集所能表示的字符数量,有的字符集只能表示英文和常见标点符号,有的字符集能够表示所有主流的文字符号,甚至能够表示emoji表情。
  2. 编码规则:编码规则就是字符如何转换为二进制。

1.2 、比较规则简介

比较规则是在字符集的基础上,对字符的大小进行比较。例如最简单的,直接比较字符的二进制数据的大小。当然这种比较规则不实用。

1.3、常见的字符集

  1. ASCII字符集:共128个字符,包括大小写字母、标点符号、空格、数字和一些其它不可见字符,使用1个字节编码。
  2. ISO 8859-1字符集:在ASCII字符集基础上新增128个字符,包括西欧常用字符,也被称为Latin1字符,使用1个字节编码。
  3. GB2312字符集:收录汉字、拉丁字母、希腊字母、平假名、片假名和俄语西里尔字母。其中汉字6763个,其他文字符号682个。该字符集兼容ASCII字符集,所以是ASCII字符集的字符用1个字节编码,否则用2个字节编码。这种编码规则成为变长编码。
  4. GBK字符集:在GB2312字符集的基础上进行扩充,编码规则兼容GB2312字符集。
  5. UTF-8字符集:几乎收录了世界上所有国家和地区使用的自古,并且在不断扩充。该字符兼容ASCII字符集,采用变长编码的规则,每个字符需要1-4个字节。此处需要注意:UTF-8是Unicode字符集的一种编码规则,除此以外还有UTF-16采用2-4个字节编码,UTF-32采用4个字节编码。

2、MySQL中的字符集和比较规则

2.1、utf8和utf8mb4

UTF-8使用1-4个字节表示一个字符,但是在MySQL中utf8使用1-3个字节表示一个字符,也是uft8mb3的别名。如果想要完整表示UTF-8字符集,在MySQL中需要选择utf8mb4,utf8mb4是使用1-4个字节表示一个字符,字符范围和Unicode相同。

2.2、 比较规则

MySQL比较规则名称由三个部分组成,以uft8_general_ci为例:

  1. 第一部分表示比较规则关联的字符集,此处为utf8。
  2. 第二部分表示比较规则适用的语言,此处为通体规则。除此以外,还有polish表示波兰语比较规则,spanish表示西班牙语比较规则等。
  3. 第三部分表示比较规则是否区分重音和大小写等。ci表示不区分大小写。

3、字符集和比较规则的应用

MySQL有4个级别的字符集和比较规则,从大到小依次为:

  1. 服务器级别:启动服务器时,由配置文件、启动选项或者使用SET语句来确定。
  2. 数据库级别:创建和修改数据库时可以指定,如果不指定那么就会使用服务器级别。
  3. 表级别:创建和修改表时可以指定,如果不指定那么就会使用数据库级别。
  4. 列级别:创建和修改列时可以指定。如果不指定那么就会使用表级别。注意:修改字符集的时,如果列中数据不能用新字符集表示,便会发生错误。例如列中原来用utf8存储的汉字,现修改为ascii字符集,ascii无法表示汉字,会发生错误。

如果只修改字符集,比较规则会变为修改后字符集的默认值;只修改比较规则,字符集会变为修改后比较规则的对应的字符集。

4、总结

字符集由字符范围和编码规则组成。MySQL的utf8最多只能用3个字节表示字符,想要完整对应Unicode,需要使用utf8mb4字符集。MySQL的字符集和比较规有四个级别,范围小的级别如果不指定,就会直接继承范围大级别。字符集和比较规则相互关联,只改变其中一个,另一个也会改为对应的默认值。

  • 本文作者: fanchw
  • 本文链接: https://www.fanchw.xyz/archives/m-y-s-q-l---zi-fu-ji-he-bi-jiao-gui-ze
  • 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处!
# CAP # 分布式 # 计算机网络 # MySQL # 源码 # 备份 # Redis
Redis5数据结构-字典dict
计算机网络模型基本概念
  • 文章目录
  • 站点概览
fanchw

fanchw

11 日志
5 分类
7 标签
Creative Commons
© 2023 fanchw
由 Halo 强力驱动
|
主题 - NexT.Pisces v5.1.4
皖ICP备19014634号-1

皖公网安备 34180202000448号