MySQL数据库——MySQL字符集和校对规则详解

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

在讲解字符集和校对规则之前,我们先来简单了解一下字符、字符集和字符编码。

字符(Character)是计算机中字母、数字、符号的统称,一个字符可以是一个中文汉字、一个英文字母、一个阿拉伯数字、一个标点符号等。

计算机是以二进制的形式来存储数据的。平时我们在显示器上看到的数字、英文、标点符号、汉字等字符都是二进制数转换之后的结果。

字符集(Character set)定义了字符和二进制的对应关系,为字符分配了唯一的编号。常见的字符集有 ASCII、GBK、IOS-8859-1 等。

字符编码(Character encoding)也可以称为字集码,规定了如何将字符的编号存储到计算机中。

大部分字符集都只对应一种字符编码,例如:ASCII、IOS-8859-1、GB2312、GBK,都是既表示了字符集又表示了对应的字符编码。所以一般情况下,可以将两者视为同义词。Unicode 字符集除外,Unicode 有三种编码方案,即 UTF-8、UTF-16 和 UTF-32。最为常用的是 UTF-8 编码。

校对规则(Collation)也可以称为排序规则,是指在同一个字符集内字符之间的比较规则。字符集和校对规则是一对多的关系,每个字符集都有一个默认的校对规则。字符集和校对规则相辅相成,相互依赖关联。

简单来说,字符集用来定义 MySQL 存储字符串的方式,校对规则用来定义 MySQL 比较字符串的方式。

有些数据库并没有清晰的区分开字符集和校对规则。例如,在 SQL Server 中创建数据库时,选择字符集就相当于选定了字符集和校对规则。

而在 MySQL 中,字符集和校对规则是区分开的,必须设置字符集和校对规则。一般情况下,没有特殊需求,只设置其一即可。只设置字符集时,MySQL 会将校对规则设置为字符集中对应的默认校对规则。

可以通过SHOW VARIABLES LIKE 'character%';命令查看当前 MySQL 使用的字符集,命令和运行结果如下:

mysql> SHOW VARIABLES LIKE 'character%';
+--------------------------+---------------------------------------------------------+
| Variable_name            | Value                                                   |
+--------------------------+---------------------------------------------------------+
| character_set_client     | gbk                                                     |
| character_set_connection | gbk                                                     |
| character_set_database   | latin1                                                  |
| character_set_filesystem | binary                                                  |
| character_set_results    | gbk                                                     |
| character_set_server     | latin1                                                  |
| character_set_system     | utf8                                                    |
| character_sets_dir       | C:\Program Files\MySQL\MySQL Server 5.7\share\charsets\ |
+--------------------------+---------------------------------------------------------+
8 rows in set, 1 warning (0.01 sec)

上述运行结果说明如下表所示:

名称 说明
character_set_client MySQL 客户端使用的字符集
character_set_connection 连接数据库时使用的字符集
character_set_database 创建数据库使用的字符集
character_set_filesystem MySQL 服务器文件系统使用的字符集,默认值为 binary,不做任何转换
character_set_results 数据库给客户端返回数据时使用的字符集
character_set_server MySQL 服务器使用的字符集,建议由系统自己管理,不要人为定义
character_set_system 数据库系统使用的字符集,默认值为 utf8,不需要设置
character_sets_dir 字符集的安装目录

乱码时,不需要关心 character_set_filesystem、character_set_system 和 character_sets_dir 这 3 个系统变量,它们不会影响乱码 。

可以通过SHOW VARIABLES LIKE 'collation\_%';命令查看当前 MySQL 使用的校对规则,命令和运行结果如下:

mysql> SHOW VARIABLES LIKE 'collation\_%';
+----------------------+-------------------+
| Variable_name        | Value             |
+----------------------+-------------------+
| collation_connection | gbk_chinese_ci    |
| collation_database   | latin1_swedish_ci |
| collation_server     | latin1_swedish_ci |
+----------------------+-------------------+
3 rows in set, 1 warning (0.01 sec)

对上述运行结果说明如下:

  • collation_connection:连接数据库时使用的校对规则
  • collation_database:创建数据库时使用的校对规则
  • collation_server:MySQL 服务器使用的校对规则

校对规则命令约定如下:

  • 以校对规则所对应的字符集名开头
  • 以国家名居中(或以 general 居中)
  • 以 ci、cs 或 bin 结尾,ci 表示大小写不敏感,cs 表示大小写敏感,bin 表示按二进制编码值比较。

MySQL字符集的转换过程

MySQL 中字符集的转换过程如下:

1)在命令提示符窗口(cmd 命令行)中执行 MySQL 命令或 sql 语句时,这些命令或语句从“命令提示符窗口字符集”转换为“character_set_client”定义的字符集。

2)使用命令提示符窗口成功连接 MySQL 服务器后,就建立了一条“数据通信链路”,MySQL 命令或 sql 语句沿着“数据链路”传向 MySQL 服务器,由 character_set_client 定义的字符集转换为 character_set_connection 定义的字符集。

3)MySQL 服务实例收到数据通信链路中的 MySQL 命令或 sql 语句后,将 MySQL 命令或 sql 语句从 character_set_connection 定义的字符集转换为 character_set_server 定义的字符集。

4)若 MySQL 命令或 sql 语句针对于某个数据库进行操作,此时将 MySQL 命令或 sql 语句从 character_set_server 定义的字符集转换为 character_set_database 定义的字符集。

5)MySQL 命令或 sql 语句执行结束后,将执行结果设置为 character_set_results 定义的字符集。

6)执行结果沿着打开的数据通信链路原路返回,将执行结果从 character_set_results 定义的字符集转换为 character_set_client 定义的字符集,最终转换为命令提示符窗口字符集,显示到命令提示符窗口中。

MySQL数据库——MySQL字符集和校对规则详解

 黑马程序员 MySQL数据库入门到精通,从mysql安装到mysql高级、mysql优化全囊括文章来源地址https://www.toymoban.com/news/detail-448045.html

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

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

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

相关文章

  • 达梦数据库如何查看字符集

     0 表示 GB18030,1 表示 UTF-8,2 表示 EUC-KR select SF_GET_UNICODE_FLAG(); select  UNICODE (); 字符集在安装初始化库的时候指定,设定后不可更改,请在安装时按照需求设置好 后期如果想修改就只能重新初始库! 注意中文字符的长度问题:数据库初始化参数  LENGTH_IN_CHAR=0  时,unicode 编

    2023年04月09日
    浏览(28)
  • Oracle数据库字符集概述及修改方式

    Oracle语言环境的描述包括三部分:language、territory、characterset(语言、地域、字符集) language:主要指定服务器消息的语言,提示信息显示中文还是英文 territory:主要指定服务器的数字和日期的格式 characterset:是指字符集,一般国内数据库实际使用的字符集主要是ZHS16GBK、AL32

    2024年02月11日
    浏览(38)
  • 达梦数据库支持GB18030-2022中文编码字符集证明方法

    既然是证明就要做到有图有真相。 证明途径1:系统概览法 查看达梦数据库“管理工具”-“对象导航”-“管理服务器”-“系统概览”-“字符集编码”-”GB18030”. 看见”GB18030”字样就是证据之一。如果你没有看见这个字样,而是UTF8等其他字样,请重新安装产品吧,安装向导

    2023年04月18日
    浏览(46)
  • GBASE南大通用数据库GBase 8s常见问题讲堂 -- 字符集的设置

    本文摘自GBASE南大通用社区,by:wty,原文请点击:GBase 8s常见问题 -- 字符集相关问题|GBASE社区|天津南大通用数据技术股份有限公司|GBASE-致力于成为用户最信赖的数据库产品供应商 23103   Code-set conversion function failed due to an illegal sequence or invalid value. 字符集转换失败,字符串中

    2024年01月24日
    浏览(50)
  • 如何配置达梦数据库使其支持GB18030-2022中文编码字符集

    达梦版本要求,要求使用2023年4月及之后的达梦月度版版本,补丁版、临时版等不可以。 正确安装windows操作系统,windows10以下的版本未做过测试,可能系统不支持导致各种显示错误,建议用windows10及以上版本,本人亲测过window10和windows11支持. 安装一个字体覆盖全的字库,w

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

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

    2024年02月03日
    浏览(40)
  • 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日
    浏览(42)
  • (三) MySQL字符集

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

    2024年01月24日
    浏览(50)
  • MySQL——命令行客户端的字符集问题

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

    2024年02月09日
    浏览(35)
  • 第3章 【MySQL】字符集和比较规则

    如何存储字符串?需要建立字符与二进制数据的映射关系。建立这个关系需要: 1.把哪些字符映射成二进制数据? 2.怎么映射? 将一个字符映射成一个二进制数据的过程也叫做 编码 ,将一个二进制数据映射到一个字符的过程叫做 解码 。 人们抽象出一个 字符集 的概念来描

    2024年02月09日
    浏览(23)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包