新建MySql数据库用什么字符串和排序方式,我当前的数据库是 MySql5.7, 最优方式:utf8mb4 + utf8mb4_unicode_ci
ci = case insensitive:**不区分大小写**
MySQL5.7、中文为主、只存中文 + 表情、不需要严格多语言排序:`utf8mb4_general_ci` 完全够用
⚠️ MySQL 里的`utf8`是**utf8mb3 阉割版**,最多 3 字节,**不能存 emoji**,新项目一律字符集选 `utf8mb4`,不要用`utf8`。
utf8mb4_unicode_ci(5.7 推荐的标准 UCA)
基于 Unicode4.0 标准,多语言排序更精准,中文拼音排序更稳定
现代服务器下性能差距几乎感知不到
适合:需要多语言、名称排序、海外用户
如果设置不对还可以自行修改
修改数据库默认编码(只是默认模板,不碰已有表)
ALTER DATABASE clord64
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
修改已有表的字符集 + 排序规则
ALTER TABLE `表名`
CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 查看库内所有表的字符集、排序规则
SELECT TABLE_NAME, TABLE_COLLATION
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'clord64';
-- 精准找出所有字符串字段,看哪些不是utf8mb4_unicode_ci
SELECT TABLE_NAME,COLUMN_NAME,CHARACTER_SET_NAME,COLLATION_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'clord64'
AND CHARACTER_SET_NAME != 'utf8mb4';