一、查看所有可用的字符集
1. 使用 `SHOW CHARACTER SET;` 命令
这是最直接的方法,结果清晰,包含四列关键信息:
`Charset`:字符集名称(如 `utf8mb4`)。
`Description`:字符集描述。
`Default collation`:该字符集的**默认校对规则**。
`Maxlen`:该字符集中**单个字符最多占用的字节数**。这是选择字符集的重要依据(例如,`utf8` 的 `Maxlen` 是 3,而 `utf8mb4` 是 4,后者才能存储表情符号)。
2. 查询 `information_schema.character_sets` 系统表
SELECT * FROM information_schema.character_sets;
这种方法更适合通过 SQL 条件进行过滤查询,获取到的信息与 `SHOW CHARACTER SET;` 基本相同。
常用字符集速查:
字符集描述最大字节长度推荐使用场景utf8mb4真正的 UTF-8 Unicode4绝对首选,支持所有语言和表情符号(emoji)utf8阉割版的 UTF-8 (仅支持基本多文种平面字符)3旧系统遗留,不推荐新项目使用gbk中文简体2仅处理简体中文的旧系统latin1西欧字符1MySQL 5.x 的默认字符集,不推荐ascii美国 ASCII1仅需存储英文、数字、符号时
二、查看特定字符集的校对规则
1. 使用 `SHOW COLLATION` 命令
查看所有校对规则:
SHOW COLLATION;
查看特定字符集(如 `gbk`)的校对规则(**您演示的方法非常常用**):
SHOW COLLATION LIKE 'gbk%';
结果中的关键列:
`Collation`:校对规则名称。
`Charset`:该校对规则对应的字符集。
`Default`:是否为该字符集的默认校对规则(`Yes` / `""`)。
`Compiled`:是否已编译到服务器中。
2. 查询 `information_schema.collations` 系统表
SELECT * FROM information_schema.collations WHERE CHARACTER_SET_NAME = 'gbk';
通过 `WHERE` 条件过滤,效果与 `SHOW COLLATION LIKE 'gbk%';` 相同。
三、理解并测试校对规则(您提供的例子非常经典)
使用 gbk_chinese_ci (case insensitive) 校对规则比较,不区分大小写
SELECT CASE WHEN 'A' COLLATE gbk_chinese_ci = 'a' COLLATE gbk_chinese_ci THEN 1 ELSE 0 END;
结果: 1 (相等)
使用 gbk_bin (binary) 校对规则比较,区分大小写
SELECT CASE WHEN 'A' COLLATE gbk_bin = 'a' COLLATE gbk_bin THEN 1 ELSE 0 END;
结果: 0 (不相等)
四、查看当前服务器、数据库、连接的字符集/校对规则设置
查看字符集设置:
SHOW VARIABLES LIKE 'character_set_%';查看校对规则设置:
SHOW VARIABLES LIKE 'collation_%';