带你5分钟读懂MySQL字符集

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第6天,点击查看活动详情

前言

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

什么是字符集

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

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

MySQL常用字符集

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

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

MySQL字符集操作

查看字符集

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

show charset [LIKE 匹配的模式];

2、查看支持的比较规则

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

扫描二维码关注公众号,回复: 14524550 查看本文章

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中,一个字符集可以有多种排序规则,都有一个默认的排序规则,一个排序规则必须对应一个字符集。

猜你喜欢

转载自juejin.im/post/7150285268188069924
今日推荐