MySQL 字符集与排序规则
理解字符集和排序规则的概念及其对数据存储和查询的影响。 · 难度:入门 · +15XP
MySQL 字符集与排序规则
字符集(Charset)定义字符如何编码为二进制,排序规则(Collation)定义字符的比较规则。选择不当会导致乱码、索引失效或排序错误。
常用字符集
| 字符集 | 说明 |
|---|---|
| utf8mb4 | 真正的UTF-8编码,支持4字节emoji,推荐使用 |
| utf8 | 别名utf8mb3,只支持3字节,不推荐 |
| latin1 | 西欧语言,单字节编码 |
| gbk | 中文双字节编码 |
排序规则
utf8mb4的常用排序规则:
- utf8mb4_general_ci:通用不区分大小写
- utf8mb4_unicode_ci:基于Unicode标准,更准确
- utf8mb4_bin:二进制比较,区分大小写
设置字符集
-- 数据库级别
CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 表级别
CREATE TABLE users (
name VARCHAR(50)
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 列级别
ALTER TABLE users MODIFY name VARCHAR(50) CHARACTER SET utf8mb4;
乱码处理
如果出现乱码,检查客户端连接字符集:
SET NAMES utf8mb4;练习提示
创建不同字符集的表,插入包含特殊字符(如emoji)的数据,观察存储和查询结果。