一、utf8 和 utf8mb4 区别
- 新版本数据库默认编码格式是
utf8mb4,utf8mb4比utf8多了emoji编码支持,建议普通表使用utf8如果这个表需要支持emoji就使用utf8mb4,也可以全部用utf8mb4,utf8mb4完全向下兼容utf8。
二、字符集和排序规则
- 字符集
当数据库需要适应不同的语言就需要有不同的字符集,如果不指定字符集的话,那么就会使用数据库的默认的字符集,每种字符集都有自己默认的排序规则。mysql默认字符集为utf8时,默认排序规则为utf8_general_ci,mysql默认字符集为utf8mb4时,默认排序规则为utf8mb4_general_ci。 - 排序规则
每一种字符集都会有自己的排序规则(collation),排序规则后缀一般分为cs、ci:cs:case sensitive翻译过来就是对大小写敏感ci:case insensitive翻译过来就是对大小写不敏感
举例:
select * from test where column1 like "A%"
- 如果选择
cs,这时就会选择A开头的。
如果选择ci,这时就会选择a或A开头的
在不确定大小写的情况,通常选择ci,要求不敏感,可以选择的范围多一点。