带你5分钟读懂MySQL字符集

前言

在日常开发中经常遇到“乱码”问题,很有可能就是因为对字符集的理解不到位、设置错误造成的,本文主要总结一下MySQL字符集的相关知识,以及如何设置字符集,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教。

什么是字符集

字符集定义了字符以及字符的编码,规定了字符在数据库中的存储格式,比如占用多少空间,支持那些字符等等。

在我们确定了字符集表示字符的范围以及编码规则后,我们还需要比较两个字符的大小,排序规则是指对指定字符集下不同字符的比较规则。

MySQL常用字符集

常见的MySQL字符集主要有以下四种:

字符集长度说明
GBK2支持中文,但是不是国际通用字符集
UTF-83支持中英文混合场景,是国际通用字符集
latin11MySQL默认字符集
utf8mb44完全兼容UTF-8,用四个字节存储更多的字符
  • 如果系统开发面向国外企业,需要处理不同国家、不同语言,则应该选择utf-8或者utf8mb4。
  • 如果只需要支持中文,没有国外业务,则为了性能考虑,可以采用GBK。

MySQL字符集操作

查看字符集

1、查看当前MySQL中支持的字符集

show charset [LIKE 匹配的模式];

2、查看支持的比较规则

SHOW COLLATION [WHERE Charset = 字符集限定条件];

3、查看MySQL数据库中关于字符集的相关设置

show variables like ‘character_set%’;

修改字符集

1、更改默认字符集

alter database 表名 default character set utf8;

2、在创建表时指定字符集及排序规则

CREATE TABLE 表名 (列的信息)

[[DEFAULT] CHARACTER SET 字符集名称]

[COLLATE 排序规则名称]]

3、修改指定字符集及排序规则

ALTER TABLE 表名

[[DEFAULT] CHARACTER SET 字符集名称]

[COLLATE 排序规则名称]

字符集和排序规则级别

MySQL有4个级别的字符集和比较规则,分别是:

  • 服务器级别:可以通过设置character_set_servercollation_server系统变量指定服务器字符集和排序规则;
  • 数据库级别:给数据库指定字符集和排序规则;
  • 表级别:可以指定表的字符集和排序规则;
  • 列级别:同一个表中不同的列也可以有不同的字符集和排序规则。

小结

  1. 字符集指的是某个字符范围的编码规则。
  2. 排序规则是针对某个字符集中字符比较大小的一种规则。
  3. 在MySQL中,一个字符集可以有多种排序规则,都有一个默认的排序规则,一个排序规则必须对应一个字符集。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值