暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL 修改数据库字符集与排序规则:详解与实战指南

程序员极光 2025-06-09
75

在数据库国际化、多语言支持的背景下,正确设置与调整数据库的字符集(CHARACTER SET
)与排序规则(COLLATION
)尤为重要。本文将从基础概念、修改方法到实战案例,一一讲解。


📘一、基础概念

1. 字符集(Character Set)

是数据库中用于存储字符的编码方式。例如:

  • utf8
    :最多支持3字节编码,不完全支持部分表情或生僻字符;
  • utf8mb4
    :最多支持4字节,推荐使用;
  • latin1
    :适用于英文场景。

2. 排序规则(Collation)

决定字符在比较和排序时的规则。与字符集配套使用。 例如:

  • utf8_general_ci
    :不区分大小写;
  • utf8_bin
    :区分大小写;
  • utf8mb4_unicode_ci
    :支持多语言排序,精确度高。

🛠️二、查看当前字符集与排序规则

查看数据库字符集与排序规则

SELECT SCHEMA_NAME, DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME
FROM information_schema.SCHEMATA
WHERE SCHEMA_NAME = 'your_database_name';

查看服务器默认设置

SHOW VARIABLES LIKE 'character_set%';
SHOW VARIABLES LIKE 'collation%';


🔧三、修改数据库字符集与排序规则

1. 修改数据库默认字符集和排序规则

ALTER DATABASE your_database_name
CHARACTER SET utf8mb4
COLLATE utf8mb4_general_ci;

✅ 说明:

  • 仅修改数据库层面默认设置;
  • 已存在的表和字段 不会自动改变,需单独处理。

🧪四、实战案例

示例:修改名为 school_db
 的数据库字符集为 utf8mb4
,排序规则为 utf8mb4_unicode_ci

-- 修改数据库默认字符集
ALTER DATABASE school_db
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

修改表及字段字符集(需遍历处理)

-- 查看表字符集
SHOW TABLE STATUS FROM school_db;

-- 修改表字符集(只会修改默认,不影响已有字段)
ALTER TABLE students
CONVERT TO CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

推荐: 使用 CONVERT TO CHARACTER SET
 是安全方式,会尝试转换字段及数据。


🧩五、注意事项

  1. 数据安全优先: 修改前建议完整备份数据库。
  2. 兼容性考虑:utf8mb4
     更适合 Emoji 表情、多语言等场景。
  3. 字段级处理: 如果字段未统一字符集,可能导致混合编码、数据对比异常。
  4. 性能影响: 特定排序规则可能影响查询效率。

📚六、参考文献与官方资料

1. MySQL ALTER DATABASE 语法

用于修改数据库的字符集与排序规则。 🔗 https://dev.mysql.com/doc/refman/8.0/en/alter-database.html


2. MySQL 字符集支持总览

包含支持的字符集、转换支持、默认设置等详细文档。 🔗 https://dev.mysql.com/doc/refman/8.0/en/charset.html


3. MySQL 排序规则(Collation)说明

每种字符集支持哪些排序规则,如何选择与对比。 🔗 https://dev.mysql.com/doc/refman/8.0/en/charset-mysql.html


4. MySQL ALTER TABLE 语法说明

修改表级别的字符集与排序规则推荐使用 CONVERT TO CHARACTER SET
。 🔗 https://dev.mysql.com/doc/refman/8.0/en/alter-table.html


5. 信息架构视图查看字符集

information_schema.SCHEMATA
 等系统表的结构与用法。 🔗 https://dev.mysql.com/doc/refman/8.0/en/information-schema.html


文章转载自程序员极光,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论