5.1 数据库修改的两种途径
- 图形界面工具(诸如 Navicat) :借由右键菜单进入数据库的属性设置,径直对字符集与校对规则予以修改。
- 命令行方式(ALTER DATABASE) :运用 SQL 语句来变更数据库属性,此方式适用于批量操作抑或自动化脚本。
5.2 ALTER DATABASE 语法阐释
基本语法:
ALTER DATABASE 数据库名
[DEFAULT] CHARACTER SET 字符集名
[DEFAULT] COLLATE 校对规则名;
- CHARACTER SET: 用以设定数据库的默认字符集(例如 utf8、gb2312 等)。
- COLLATE: 用于设置字符的比较规则(例如 utf8_general_ci 不区分大小写)。
- 注意: 字符集与校对规则需相互适配(诸如 gb2312 对应 gb2312_chinese_ci)。 系统数据库(例如 mysql、information_schema 等)无法进行修改。
5.3 例题详解
5.3.1 例题 1
将 stuinfo 的字符集更改为 latin1,校对规则变更为 latin1_swedish_ci
- 步骤: 开启 MySQL 命令行工具。 输入如下 SQL 语句并予以执行:
ALTER DATABASE stuinfo
DEFAULT CHARACTER SET latin1
COLLATE latin1_swedish_ci;
- 说明: latin1 为西欧语言编码,latin1_swedish_ci 是瑞典语的校对规则(不区分大小写)。 常见错误:拼写有误(如 latinl 应是 latin1),务必严格审查语法。
5.3.2 例题 2
将 stuinfo 的字符集变更为 gb2312,校对规则更改为 gb2312_chinese_ci
- 步骤: 开启 MySQL 命令行工具。 输入如下 SQL 语句并执行:
ALTER DATABASE stuinfo
DEFAULT CHARACTER SET gb2312
COLLATE gb2312_chinese_ci;
- 说明: gb2312 乃简体中文编码,gb2312_chinese_ci 为中文校对规则(不区分大小写)。 应用场景:适用于存储中文数据,且无需支持表情符号的旧有项目。
5.4 注意事项
问题 | 解决方案 |
字符集与校对规则不匹配 | 务必确保字符集与校对规则归属于同一编码体系(诸如utf8 + utf8_*) |
系统数据库修改失败 | 严禁对 mysql、information_schema 等系统数据库进行修改 |
拼写错误致使报错 | 仔细检查语法拼写(例如 COLLATE 后需衔接完整的校对规则名称) |
中文乱码问题 | 优先采用 utf8mb4 字符集(支持表情和多语言) |
5.5 扩展知识:字符集与校对规则的差异
概念 | 说明 |
字符集 | 界定字符的存储编码方式(例如 A 的二进制表述) |
校对规则 | 明确字符的比较逻辑(比如 A 和 a 是否等同) |
举例 | utf8_general_ci:不区分大小写;utf8_bin:区分大小写 |