一、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
,要求不敏感,可以选择的范围多一点。