数据库原理与应用 第 4 章 · 第二节
课程第 4 章第二节 过渡字符集概述字符集列表查校对规则两种写法规则很多三种后缀大小写实验 版式
第 4 章 数据库的创建和管理 · 第二节

字符集与校对规则

字符集管怎么存,校对规则管怎么比,ci、cs、bin 差在哪
本 节 知 识 点
  1. 12主要内容 MySQL 数据库的字符集
  2. 13MySQL 字符集概述
  3. 14MySQL 支持的字符集
  4. 15查看校对规则
  5. 16查校对规则的两种写法
  6. 17一个字符集的多种校对规则
  7. 18ci、cs 与 bin
  8. 19校对规则怎样影响查询
12
第 4 章 · 第二节

主要内容 MySQL 数据库的字符集

引擎讲完了,接下来是最容易踩坑的一块。

第 12 页课件

重 点

字符集管文字怎么存,校对规则管文字怎么比、怎么排。

打个比方

一个是给每个字发号码牌,一个是按什么规矩让这些号码排队。

想一想

为什么有的系统里,汉字会变成一串问号?

13
第 4 章 · 第二节

MySQL 字符集概述

一个字符集配好几种校对规则,其中一种是默认。

第 13 页课件

关键术语

字符集Charset
规定每个字用什么号码存进硬盘。
校对规则Collation
规定两个字怎么比大小、怎么排序。

试一试同一个字,两种字符集

存这个
utf8一个字最多三个字节
utf8mb4一个字最多四个字节
挑一个字符,看两种字符集存不存得下。

重 点

查字符集用 SHOW CHARACTER SET,查校对规则用 SHOW COLLATION。

14
第 4 章 · 第二节

MySQL 支持的字符集

四十一种字符集,真正要认识的只有三个。

第 14 页课件

分清楚

字符集什么时候用
utf8mb4首选,汉字表情都存得下
utf8老写法,最多三字节
gbk只存中文的老系统

重 点看 Maxlen 那一列

它写的是一个字最多占几个字节,utf8mb4 是 4,utf8 只有 3。

上机做

上机第 3 题 看完整的字符集列表

15
第 4 章 · 第二节

查看校对规则

校对规则太多,一定要加 WHERE 把范围缩小。

第 15 页课件

重 点

直接敲 SHOW COLLATION 会刷出两百多行,屏幕根本翻不完。

分清楚

想看什么怎么写
全部规则SHOW COLLATION
只看某个字符集后面加 WHERE Charset

上机做

上机第 4 题 把范围缩到 gbk 试试

16
第 4 章 · 第二节

查校对规则的两种写法

这一页四条命令,两条用 SHOW,两条查系统表。

第 16 页课件

分清楚

写法特点
SHOW COLLATION短,随手就能敲
查 COLLATIONS 表能再筛选、能排序

知道更多

information_schema 是 MySQL 自带的系统库,把服务器的家底都记成了表。

想一想

同一件事有两种写法,你更愿意用哪一种?

17
第 4 章 · 第二节

一个字符集的多种校对规则

光 utf8 一个字符集,就挂着二十八种校对规则。

第 17 页课件

重 点

Default 那一列写着 Yes 的,就是这个字符集的默认校对规则。

打个比方

同一批书,可以按书名排、按作者排、按编号排,书还是那批书。

想一想

二十八种规则,差别到底在哪里?

18
第 4 章 · 第二节

ci、cs 与 bin

看名字最后那几个字母,就知道它认不认大小写。

第 18 页课件

试一试换一种规则,结果全变

校对规则
WHERE name = 'tom' 命中哪几行
name
Tom
tom
Apple
apple
ORDER BY name 排出来的顺序
同一张表,换一种校对规则,查询和排序都会变。

记牢它三个后缀

  1. ci 不分大小写
  2. cs 区分大小写
  3. bin 按编码值比

重 点

默认的 utf8mb4_0900_ai_ci 是 ci,所以 tom 和 Tom 被当成同一个。

19
第 4 章 · 第二节

校对规则怎样影响查询

建表时选了 ci,查 tom 就会把 Tom 一起查出来。

第 19 页课件

练一练

表用 utf8mb4_general_ci,查 name = 'tom' 会返回几行?
  1. A只有 tom 一行
  2. B只有 Tom 一行
  3. Ctom 和 Tom 两行
  4. D一行都没有
答案 C

general_ci 不区分大小写,两条记录都算匹配。

重 点

要让大小写真正区分开,把列的校对规则换成 cs 或者 bin。

上机做

上机第 4 题 亲手比一比 ci 和 bin

保山学院·人工智能教研室·曹鼎鼎