1. utf8 与 utf8mb4
utf8 字符集表示一个字符需要使用1~4个字节,但是我们常用的一些字符使用1~3个字节就可以表示 了。而字符集表示一个字符所用的最大字节长度,在某些方面会影响系统的存储和性能,所以设计 MySQL的设计者偷偷的定义了两个概念:
- utf8mb3 :阉割过的 utf8 字符集,只使用1~3个字节表示字符。
- utf8mb4 :正宗的 utf8 字符集,使用1~4个字节表示字符。
在MySQL中,utf8是utf3mb3的别名,所以之后再MySQL中提到utf8就意味着用1-3个字节来表示一个字符,如果有使用4字节编码一个字符的情况下,比如存储一些emoji表情,那请使用utf8mb4。
此外,通过如下指令可以查看MySQL支持的字符集
show charset;#或者show chareset set;
2. 比较规则
上表中,MySQL版本一共支持41种字符集,其中的 Default collation 列表示这种字符集中一种默认 的比较规则,里面包含着该比较规则主要作用于哪种语言,比如 utf8_polish_ci 表示以波兰语的规则 比较, utf8_spanish_ci 是以西班牙语的规则比较, utf8_general_ci 是一种通用的比较规则。 后缀表示该比较规则是否区分语言中的重音、大小写。具体如下: 
最后一列 Maxlen ,它代表该种字符集表示一个字符最多需要几个字节。
常用操作1:
#查看GBK字符集的比较规则
SHOW COLLATION LIKE 'gbk%';
#查看UTF-8字符集的比较规则
SHOW COLLATION LIKE 'utf8%';
常用操作2:
# 查看服务器的字符集和比较规则
SHOW VARIABLES LIKE '%_server';
#查看数据库的字符集和比较规则
SHOW VARIABLES LIKE '%_database';
#查看具体数据库的字符集
SHOW CREATE DATABASE dbtest1;
#修改具体数据库的字符集
ALTER DATABASE dbtest1 DEFAULT CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';
常用操作3:
#查看表的字符集
show create table employees;
#查看表的比较规则
show table status from atguigudb like 'employees';
#修改表的字符集和比较规则
ALTER TABLE emp1 DEFAULT CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';
