第3章 【MySQL】字符集和比较规则

这篇具有很好参考价值的文章主要介绍了第3章 【MySQL】字符集和比较规则。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

3.1 字符集和比较规则简介

3.1.1 字符集简介

如何存储字符串?需要建立字符与二进制数据的映射关系。建立这个关系需要:

1.把哪些字符映射成二进制数据?

2.怎么映射?

将一个字符映射成一个二进制数据的过程也叫做 编码 ,将一个二进制数据映射到一个字符的过程叫做 解码 。

人们抽象出一个 字符集 的概念来描述某个字符范围的编码规则。比方说我们来自定义一个名称为 xiaohaizi 的字符集,它包含的字符范围和编码规则如下:

包含字符 'a' 、 'b' 、 'A' 、 'B' 。

编码规则如下:

采用1个字节编码一个字符的形式,字符和字节的映射关系如下:

'a' -> 00000001 (十六进制:0x01)

'b' -> 00000010 (十六进制:0x02)

'A' -> 00000011 (十六进制:0x03)

'B' -> 00000100 (十六进制:0x04)

有了 xiaohaizi 字符集,我们就可以用二进制形式表示一些字符串了,下边是一些字符串用 xiaohaizi 字符集编码后的二进制表示:

'bA' -> 0000001000000011 (十六进制:0x0203)

'baB' -> 000000100000000100000100 (十六进制:0x020104)

'cd' -> 无法表示,字符集xiaohaizi不包含字符'c'和'd'

3.1.2 比较规则简介

比较规则如下:

1.将两个大小写不同的字符全都转为大写或者小写

2.再比较这两个字符对应的二进制数据。

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

3.1.3 一些重要的字符集

ASCII 字符集

共收录128个字符,包括空格、标点符号、数字、大小写字母和一些不可见字符。由于总共才128个字符,所以可以使用1个字节来进行编码,我们看一些字符的编码方式:

'L' -> 01001100(十六进制:0x4C,十进制:76)

'M' -> 01001101(十六进制:0x4D,十进制:77)

ISO 8859-1 字符集

共收录256个字符,是在 ASCII 字符集的基础上又扩充了128个西欧常用字符(包括德法两国的字母),也可以使用1个字节来进行编码。这个字符集也有一个别名 latin1 。

GB2312 字符集

收录了汉字以及拉丁字母、希腊字母、日文平假名及片假名字母、俄语西里尔字母。其中收录汉字6763个,其他文字符号682个。同时这种字符集又兼容 ASCII 字符集,所以在编码方式上显得有些奇怪:

如果该字符在 ASCII 字符集中,则采用1字节编码。

否则采用2字节编码。

GBK 字符集

GBK 字符集只是在收录字符范围上对 GB2312 字符集作了扩充,编码方式上兼容 GB2312 。

utf8 字符集

收录地球上能想到的所有字符,而且还在不断扩充。这种字符集兼容 ASCII 字符集,采用变长编码方式,编码一个字符需要使用1~4个字节。

3.2 MySQL中支持的字符集和排序规则

3.2.1 MySQL中的utf8和utf8mb4

在 MySQL 中 utf8 是 utf8mb3 的别名,所以之后在 MySQL 中提到 utf8 就意味着使用1~3个字节来表示一个字符,如果大家有使用4字节编码一个字符的情况,比如存储一些emoji表情啥的,那请使用 utf8mb4 。

3.2.2 字符集的查看

MySQL 支持好多种字符集,查看当前 MySQL 中支持的字符集可以用下边这个语句:

SHOW (CHARACTER SET|CHARSET) [LIKE 匹配的模式];

其中 CHARACTER SET 和 CHARSET 是同义词,用任意一个都可以。我们查询一下(支持的字符集太多了,我们省略了一些):

            第3章 【MySQL】字符集和比较规则,MySQL,mysql,数据库

可以看到,我使用的这个 MySQL 版本一共支持 41 种字符集,其中的 Default collation 列表示这种字符集中一种默认的 比较规则 。大家注意返回结果中的最后一列 Maxlen ,它代表该种字符集表示一个字符最多需要几个字节。

字符集名称

Maxien

ascii

1

latinl

1

gb2312

2

gbk

2

utf8

3

utf8mb4

4

3.2.3 比较规则的查看

查看 MySQL 中支持的比较规则的命令如下:

SHOW COLLATION [LIKE 匹配的模式];

先查看一下 utf8 字符集下的比较规则:

         第3章 【MySQL】字符集和比较规则,MySQL,mysql,数据库

这些比较规则的命名还挺有规律的,具体规律如下:

比较规则名称以与其关联的字符集的名称开头。如上图的查询结果的比较规则名称都是以 utf8 开头的。

后边紧跟着该比较规则主要作用于哪种语言,比如 utf8_polish_ci 表示以波兰语的规则比较,utf8_spanish_ci 是以西班牙语的规则比较, utf8_general_ci 是一种通用的比较规则。

名称后缀意味着该比较规则是否区分语言中的重音、大小写啥的,具体可以用的值如下:

|后缀|英文释义|描述| |:--:|:--:|:--:| | _ai | accent insensitive |不区分重音| | _as | accent sensitive |区分重音| | _ci | case insensitive |不区分大小写| | _cs | case sensitive |区分大小写| | _bin | binary |以二进制方式比较|

比如 utf8_general_ci 这个比较规则是以 ci 结尾的,说明不区分大小写。

每种字符集对应若干种比较规则,每种字符集都有一种默认的比较规则, SHOW COLLATION 的返回结果中的Default 列的值为 YES 的就是该字符集的默认比较规则,比方说 utf8 字符集默认的比较规则就是utf8_general_ci 。文章来源地址https://www.toymoban.com/news/detail-697239.html

到了这里,关于第3章 【MySQL】字符集和比较规则的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • MySQL 知识点分享一:utf8 字符集和排序规则

    我们经常能在数据库中看到这些: utf8mb4 和 utf8, utf8mb4_unicode_ci, utf8mb4_general_ci, utf8mb4_bin 分别代表什么意思呢? 其实他们表示的是字符集 和 排序规则 字符集:就是用来定义字符在数据库中的编码的集合。 排序规则:用来定义比较字符串的方式。 字符集和排序规则是一对多的关

    2024年02月07日
    浏览(13)
  • 数据库 --- mysql(03)-- mysql字符集、表操作(01)

    数据库 --- mysql(03)-- mysql字符集、表操作(01)

    (1)简介: MySQL字符集 包括 字符集(CHARACTER) 和 校对规则(COLLATION) 两个概念: 字符集(CHARACTER) 是一套编码 校对规则(COLLATION) 是在字符集内用于比较字符的一套规则。 (2)命令: 1 查看字符集 2 修改默认字符集 附:utf8和utf8mb4的区别 MySQL在5.5.3之后增加了这个u

    2024年02月16日
    浏览(13)
  • 【MySQL】关于数据库字符编码以及字符集排序相关知识

    通过设置表的字符集和排序规则,解决MySQL查询时不区分字母大小写、插入时不支持特殊字符的问题。 关于MySQL查询时不区分字母大小写、插入时不支持特殊字符的问题,只有修改表的字符集和排序规则才能根治,而且事半功倍。utf8mb4支持的最低mysql版本为5.5.3+,若不是,请

    2024年02月12日
    浏览(12)
  • 数据库之MySQL字符集与数据库操作

    数据库之MySQL字符集与数据库操作

    目录 字符集 CHRARCTER SET 与COLLATION的关联 CHRARCTER SET 定义 基础操作         查看当前MySQL Server支持的 CHARACTER SET         查看特定字符集信息(主要包含默认的COLLATION 与 MAXLEN) COLLATION 定义 COLLATION后缀 基础操作         查看MySQL Server支持的COLLATION MySQL Ser

    2024年02月13日
    浏览(15)
  • (三) MySQL字符集

    (三) MySQL字符集

    MySQL字符集包括 基字符集 (CHARACTER)与 校对规则 (COLLATION)这两个概念: latin1支持西欧字符、希腊字符等 gbk支持中文简体字符 big5支持中文繁体字符 utf8几乎支持世界所有国家的字符 utf8mb4是真正意义上的utf-8 查看当前数据库默认的字符集: SHOW VARIABLES like \\\'character%\\\'; MySQL在

    2024年01月24日
    浏览(10)
  • MySQL 字符集概念与原理及如何配置字符集 - 超详细图文详解

    MySQL 字符集概念与原理及如何配置字符集 - 超详细图文详解

    目录 一、字符集概念 1、字符(Character) 2、字符编码 3、字符集(Character set) 二、字符集原理 1、ASCII字符集 2、GB2312 3、GBK 4、GB18030 5、BIG5 6、Unicode 编码 三、字符序 四、MySQL字符集 字符序 1、mysql 字符集 2、mysql 字符序 3、字符集与字符序的关系 五、MySQL 数据存储字符集

    2024年02月04日
    浏览(10)
  • 【MySQL】——数据类型及字符集

    【MySQL】——数据类型及字符集

    🎃个人专栏: 🐬 算法设计与分析:算法设计与分析_IT闫的博客-CSDN博客 🐳Java基础:Java基础_IT闫的博客-CSDN博客 🐋c语言:c语言_IT闫的博客-CSDN博客 🐟MySQL:数据结构_IT闫的博客-CSDN博客 🐠数据结构:​​​​​​数据结构_IT闫的博客-CSDN博客 💎C++:C++_IT闫的博客-CSDN博

    2024年02月03日
    浏览(11)
  • MySQL——命令行客户端的字符集问题

    MySQL——命令行客户端的字符集问题

      原因:服务器端认为你的客户端的字符集是 utf-8 ,而实际上你的客户端的字符集是 GBK 。     查看所有字符集: SHOW VARIABLES LIKE \\\'character_set_%\\\';   解决方案,设置当前连接的客户端字符集 “SET NAMES GBK;”

    2024年02月09日
    浏览(12)
  • mysql进阶-修改linux服务器中MySQL的字符集

    mysql进阶-修改linux服务器中MySQL的字符集

    linux 中 mysql8 默认的字符集是 latin1 ,在插入中文时会报错,所以一般在配置好mysql时需要修改字符集为 utf8 【又叫utfmb3,一般开发够用,一个字符用3个字节表示】或者 utfmb4 【一个字符用4个字节表示,如果存储emoji表情,必须用utfmb4】 1366 - Incorrect string value: xE4 xBA xBA(xE7 x94 x

    2024年02月14日
    浏览(11)
  • 修改mysql默认字符集的两种方法

    修改mysql默认字符集的两种方法

    下面微点阅读小编就为大家介绍两种修改mysql默认字符集的方法。需要的朋友可以过来参考下 (1) 最简单的修改方法,就是修改mysql的my.ini文件中的字符集键值 , 如 default-character-set = utf8    character_set_server = utf8 修改完后,重启mysql的服务,service mysql restart 使用 mysql SHOW VARI

    2024年02月06日
    浏览(11)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包