学习MySQL系列:5. MySQL字符集

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 学习MySQL系列:5. MySQL字符集

今天是学习MySQL系列的第4天,今天要学习的是MySQL字符集以及字符序。



什么是字符集


我们问到这个问题的时候,你可能会说,哦,我知道呀,字符集就是类似于utf8GB2312等,那你知道其中是怎么样存储的么? 那让我们来看看吧。


众所周知,我们计算机只能存储二进制数据 01,那我我们如何表示字符呢,例如: juejin你好等,这个时候就会用到编码,它会将二进制和字符进行绑定,我们需要的时候再获取出来。


例如,我们的ascii编码,我们不妨打开Linux终端,输入

man ascii


我们来看看ascii编码

image.png


若我们想使用ascii编码存入hello juejin,我们仅需要存储104,101,108,108,111,32,106,117,101,106,105,110即可,我们看案例

image.png

执行结果如下

image.png

实际上,我们ascii编码,只有128位,只能存储0-9a-zA-Z以及一些特殊字符 和 键位,假如我们想存储你好 掘金应该怎么办呢? 使用ascii肯定不行的,那我们就可以使用GB2312UTF8等 字符编码来存储。


具体字符集存储逻辑就不多做展示了。


MySQL 字符集


字符集

我们来看看MySQL支持哪些编码呢,我们可以使用如下命令来查看。

show charset;


执行效果如下

image.png


其中,Charset是字符集名称,Description是对该字符集的简介,Maxlen是该字符集使用多少字节存储,Default collation是排序规则。



字符序


那什么是排序规则呢,其命名方式为 字符集名称_语言_后缀 ,例如: latin1_swedish_ci,其中后缀是大致区分为如下

名称 ci cs bin
含义 不区分大小写进行排序 区分大小写进行排序 以二进制进行排序


比如我们创建表t1,只有一个字段c1其类型为varchar(1),我们向其插入('a'),('A'),('e'),('B'),('c'),('d'),('E'),('f')数据,我们来验证其搜索结果。

image.png


我们已经创建了表并且插入了数据,默认情况下,latin7的字序为latin7_general_ci,我们查询下c1值为a的。

image.png


反之,我们将其修改为latin7_general_cs,查询则会区分大小写,例如:

image.png



总结


今天我们看了字符集,为什么要要有字符集呢,是因为计算机只能存储01类似于这类数据,想要让它识别更多,比如hello juejin你好,我们就需要一个字符和底层数组转换的表,这个表就是所谓的字符集,字符集从最开始的ascii到后面的utf8 ,等等,而MySQL中也有字符集以及字符序,其中,字符集和我们前面类似,字符序名称命名规则如下: 字符集名称_语言_后缀,我们也做了关于字符序的测试,嗯,块动手来试试吧。



相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
分布式计算 关系型数据库 MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
54 3
|
2月前
|
关系型数据库 MySQL Java
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
这篇文章是关于如何使用Django框架配置MySQL数据库,创建模型实例,并自动或手动创建数据库表,以及对这些表进行操作的详细教程。
84 0
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
|
2月前
|
Java 关系型数据库 MySQL
springboot学习五:springboot整合Mybatis 连接 mysql数据库
这篇文章是关于如何使用Spring Boot整合MyBatis来连接MySQL数据库,并进行基本的增删改查操作的教程。
178 0
springboot学习五:springboot整合Mybatis 连接 mysql数据库
|
2月前
|
Java 关系型数据库 MySQL
springboot学习四:springboot链接mysql数据库,使用JdbcTemplate 操作mysql
这篇文章是关于如何使用Spring Boot框架通过JdbcTemplate操作MySQL数据库的教程。
71 0
springboot学习四:springboot链接mysql数据库,使用JdbcTemplate 操作mysql
|
2月前
|
关系型数据库 MySQL 数据库
mysql关系型数据库的学习
mysql关系型数据库的学习
23 0
|
2月前
|
Kubernetes 关系型数据库 MySQL
k8s学习--利用helm部署应用mysql,加深helm的理解
k8s学习--利用helm部署应用mysql,加深helm的理解
268 0
|
3月前
|
SQL 关系型数据库 MySQL
学习MySQL操作的有效方法
学习MySQL操作的有效方法
50 3
|
3月前
|
SQL 关系型数据库 MySQL
如何学习 MySQL?
如何学习 MySQL?
40 3
|
4月前
|
SQL 关系型数据库 MySQL
学习mysql基础操作
【8月更文挑战第20天】学习mysql基础操作
41 1
|
5月前
|
存储 人工智能 关系型数据库
MySQL 8.0 字符集与比较规则介绍
我们都知道 MySQL 8.0 与 MySQL 5.7 的区别之一就是默认字符集从 latin1 改成了 utf8mb4 ,除此之外,MySQL 8.0 下的字符集和比较规则还有没有其他变化呢?本篇文章我们一起来学习下。
321 1