字符集与比较规则
- 一. 字符集相关操作
- 1. 查看字符集
- 1.1 查看数据库当前字符集配置
- 1.2 查看某数据库/数据表字符集
- 2. 修改字符集
- 2.1 全局修改字符集
- 2.2 修改已有库表字符集
- 3. 字符集级别
- 二. 比较规则
- 1. 后缀表示含义
- 2. 查看指定数据集比较规则
- 3. 查看/修改数据库/表比较规则
一. 字符集相关操作
- utf8字符集表示一个字符需要使用1~4个字节,但常用字符使用1~3个字节就可以表示;
- 字符集表示一个字符所用的最大字节长度,在某些方面会影响系统的存储和性能;
- utf8mb3 :缩减的utf8字符集,只使用1~3个字节表示字符;
- utf8mb4 :完整的utf8字符集,使用1~4个字节表示字符;
- 可使用
show charset
或show character set
查看数据库支持的所有字符集;
1. 查看字符集
- MySQL5.7默认字符集为latin1,无法兼容中文;
- MySQL8.0默认字符集为utf8mb4,兼容中文;
1.1 查看数据库当前字符集配置
- 命令为:
show variables like 'character%';或者show variables like '%char%';
1.2 查看某数据库/数据表字符集
- 数据库:
show create database 库名;
; - 数据表:
show create table 表名;
;
2. 修改字符集
2.1 全局修改字符集
- 1)打开配置文件
/etc/my.cnf
; - 2)在[mysqld]下添加
character_set_server=utf8
,MySQL8.0以前utf8指的是utf8mb3; - 3)重启mysql服务;
注意,如此操作只会影响该操作之后新创建的数据库、数据表的字符集,而不影响之前已经存在的库表字符集;
2.2 修改已有库表字符集
- 修改数据库的字符集
alter database 库名 character set 'utf8';
- 修改数据表的字符集
alter table 表名 convert to character set 'utf8';
注意,如果新字符集不能兼容旧字符集,则需要将原始数据删除并重新插入数据表;
3. 字符集级别
- 服务器级别、数据库级别、数据表级别、列级别;
- 创建数据库时若不指定字符集,则与服务器字符集保持一致; 创建数据表时若不指定字符集,则与数据库字符集保持一致;总之,若不指定,与所属上级保持一致;
二. 比较规则
- 设置比较规则的目的:数据比较大小、查询结果排序等;
- 使用
show charset
或show character set
查看数据库支持的所有字符集,其中Default collation列表示该字符集对应比较规则,可手动进行修改;
1. 后缀表示含义
2. 查看指定数据集比较规则
3. 查看/修改数据库/表比较规则