一、字符集
1、常见字符集
- ASCII: 基于罗马字母表的一套字符集, 它采用1个字节的低7位表示字符, 高位始终为0。
- LATIN1: 相对于ASCII字符集做了扩展, 仍然使用一个字节表示字符, 但启用了高位, 扩展了字 符集的表示范围。
- GB2312: 简体中文字符, 一个汉字最多占用2个字节 。
- GBK: 所有的中文字符, 一个汉字最多占用2个字节 。
- UTF8: 国际通用编码, 一个汉字最多占用3个字节 。
- UTF8MB4: 国际通用编码, 在utf8的基础上加强了对新文字识别, 一个汉字最多占用4个字节。
2、查看当前MySQL系统的字符集
# 查询命令
show variables like 'character_%';
结果:
3、修改当前MySQL系统中的字符集
# 指定修改
set character_set_client = gbk;
set character_set_results = gbk;
注意:它是临时性命令, mysql链接断开以后, 再次连接时会恢复原状。
二、校对集
在某一种字符集下, 为了使字符之间可以互相比较, 让字符和字符形成一种关系的集合, 称之为校对集。比如说 ASCII 中的 a 和 B, 如果区分大小写 a > B, 如果不区分 a < B;
不同字符集有不同的校对规则, 命名约定:以其相关的字符集名开始, 通常包括一个语言名, 并且以 _ci 、 _cs 或 _bin 结束。
- _ci : 大小写不敏感
- _cs : 大小写敏感
- _bin : binary collation 二元法, 直接比较字符的编码, 可以认为是区分大小写的, 因为字符集 中'A'和'a'的编码显然不同。
/* 数据库默认的排序方式,是升序 */
create table t1(
str char(1)
) charset=utf8mb4 collate=utf8mb4_general_ci; -- _general_ci 后缀的都是不区分大小写的
create table t2(
str char(1)
) charset=utf8mb4 collate=utf8mb4_bin; -- 看到后缀边是_bin的都是区分大小的
/* Linux中Mysql是区分大小的需要自己去配置 vim /etc/mysql/my.cnf
找到[mysqld] 1是不区分大小写,0是区分大小写 */
lower_case_table_names=1
show character set; -- 查看字符集和校对集
show collation; -- 显示所有的校对集