1. 字符集
包括 MySQL 8.0 版本在内,字符集默认设置成 UTF8MB4,8.0 版本之前默认的字符集为 Latin1.
配置文件设置:
[mysqld]
character-set-server = utf8mb4
...
正确修改列字符集的命令
```sql
ALTER TABLE emoji_test CONVERT TO CHARSET utf8mb4;
CHAR 本质也是变长的。
鉴于目前默认字符集推荐设置为 UTF8MB4,所以在表结构设计时,可以把 CHAR 全部用 VARCHAR 替换,底层存储的本质实现一模一样
2. 排序
SHOW COLLATION LIKE 'utf8mb4%';
排序规则以 _ci 结尾,表示不区分大小写(Case Insentive),_cs 表示大小写敏感,_bin 表示通过存储字符的二进制进行比较。需要注意的是,比较 MySQL 字符串,默认采用不区分大小的排序规则
绝大部分业务的表结构设计无须设置排序规则为大小写敏感
3. 字段取值约束
- 在 MySQL 8.0 版本之前,可以使用 ENUM 字符串枚举类型,只允许有限