课程 › 第 4 章 › 实验一
第 4 章 · 实验一 · 在第三节之后

查看存储引擎和字符集

查看 MySQL 支持的存储引擎和默认的存储引擎,再查看字符集、校对规则和各个级别的设置,比较不同校对规则的比较结果。

环 境

MySQL 8.0 和 MySQL Workbench,机房电脑已装好。所有语句在 Workbench 的 SQL 编辑区中执行。

执 行

Ctrl+Enter 执行光标所在的一句,Ctrl+Shift+Enter 执行全部。Mac 上把 Ctrl 换成 ⌘。

注 意

输入法切到英文。表名、字段名不加引号,字符串值才用单引号。

本次实验的顺序 后一个实验用到前一个的结果

  1. 实验 1-1查看存储引擎
  2. 实验 1-2默认存储引擎
  3. 实验 1-3查看字符集
  4. 实验 1-4查看校对规则
  5. 实验 1-5校对规则与大小写
  6. 实验 1-6各级别的设置
第一步

数据准备(必做)

本实验只查看服务器的设置,不需要准备数据。先执行这一句,确认连接的是 MySQL 8.0。

整段复制,全部执行下载 .sql
SELECT VERSION();
1-1

查看存储引擎

讲义 · 存储引擎概述
目的
查看 MySQL 支持的全部存储引擎,找出默认的存储引擎和支持事务的存储引擎。
前提
已执行数据准备。
  1. 执行 SHOW ENGINES
  2. 找出 Support 为 DEFAULT 的一行
  3. 看 Transactions 一列

参考答案

可以直接复制到 Workbench 执行
SHOW ENGINES;

语句解释

Engine存储引擎的名字
SupportYES 表示支持,DEFAULT 表示默认,NO 表示不支持
Transactions是否支持事务
执行后看:InnoDB 的 Support 为 DEFAULT,Transactions 为 YES,其他存储引擎都不支持事务。
1-2

默认存储引擎

讲义 · 存储引擎概述
目的
查看默认的存储引擎,在当前连接中改为 MyISAM,再改回 InnoDB。
前提
已完成实验 1-1。
  1. 查看名字中含有 storage_engine 的变量
  2. 把 default_storage_engine 改为 MyISAM,查看
  3. 改回 InnoDB

参考答案

可以直接复制到 Workbench 执行
SHOW VARIABLES LIKE '%storage_engine%';
SET default_storage_engine = MyISAM;
SHOW VARIABLES LIKE 'default_storage_engine';
SET default_storage_engine = InnoDB;

语句解释

%storage_engine%% 匹配任意多个字符,查出名字中含有 storage_engine 的变量
SET修改变量的值,只对当前连接有效,断开后恢复
改回 InnoDB后面各章都使用 InnoDB 表
执行后看:第一次查询中 default_storage_engine 为 InnoDB,修改后为 MyISAM。
1-3

查看字符集

讲义 · 字符集概述
目的
查看 MySQL 支持的字符集,再只看 utf8 开头的字符集和 gbk。
前提
已完成实验 1-2。
  1. 查看全部字符集
  2. 用 LIKE 只看 utf8 开头的字符集
  3. 查看 gbk

参考答案

可以直接复制到 Workbench 执行
SHOW CHARACTER SET;
SHOW CHARACTER SET LIKE 'utf8%';
SHOW CHARACTER SET LIKE 'gbk';

语句解释

Default collation这个字符集默认的校对规则
Maxlen一个字符最多占几个字节
LIKE只显示名字与模式匹配的字符集
执行后看:utf8mb4 的 Maxlen 为 4,默认校对规则为 utf8mb4_0900_ai_ci。gbk 的 Maxlen 为 2。
1-4

查看校对规则

讲义 · 校对规则
目的
查看 utf8mb4 和 gbk 的校对规则,找出默认的校对规则。
前提
已完成实验 1-3。
  1. 查看 utf8mb4 的全部校对规则
  2. 查看 gbk 开头的校对规则

参考答案

可以直接复制到 Workbench 执行
SHOW COLLATION WHERE Charset = 'utf8mb4';
SHOW COLLATION LIKE 'gbk%';

语句解释

Collation校对规则的名字
DefaultYes 表示这个字符集默认的校对规则
_ci、_cs、_bin不区分大小写、区分大小写、按编码值比较
执行后看:utf8mb4 有几十种校对规则,Default 为 Yes 的是 utf8mb4_0900_ai_ci。gbk 有 gbk_bin 和 gbk_chinese_ci 两种。
1-5

校对规则与大小写

讲义 · 校对规则与大小写
目的
用三种校对规则分别比较 Tom 和 tom,看哪一种认为它们相等。
前提
已完成实验 1-4。
  1. 用 COLLATE 在比较时指定校对规则
  2. 分别用 ai_ci、as_cs 和 bin 三种

参考答案

可以直接复制到 Workbench 执行
SELECT 'Tom' = 'tom' COLLATE utf8mb4_0900_ai_ci AS ai_ci,
       'Tom' = 'tom' COLLATE utf8mb4_0900_as_cs AS as_cs,
       'Tom' = 'tom' COLLATE utf8mb4_bin AS bin_cmp;

语句解释

=比较两个字符串,相等为 1,不相等为 0
COLLATE在这一次比较中使用指定的校对规则
as_cs区分重音,也区分大小写
执行后看:结果为 1、0、0。只有不区分大小写的 ai_ci 认为 Tom 和 tom 相等。
1-6

各级别的设置

讲义 · 字符集的四个级别讲义 · 各个级别的校对规则
目的
查看字符集和校对规则在各个级别上的设置。
前提
已完成实验 1-5。
  1. 查看 character 开头的变量
  2. 查看 collation 开头的变量

参考答案

可以直接复制到 Workbench 执行
SHOW VARIABLES LIKE 'character%';
SHOW VARIABLES LIKE 'collation%';

语句解释

character_set_server服务器级的字符集,新建数据库时默认使用它
character_set_client 等连接级的字符集,Workbench 中一般是 utf8mb4
collation_server服务器级的校对规则
执行后看:character_set_server 为 utf8mb4,collation_server 为 utf8mb4_0900_ai_ci,其他几项以本机的结果为准。
保山学院·人工智能教研室·曹鼎鼎