课程 › 第 4 章 › 实验二
第 4 章 · 实验二 · 在第四节之后

创建和管理数据库

按例 4-1 到例 4-3,建立数据库 teaching,查看它的建立语句,修改它的字符集,最后删除它。

环 境

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

执 行

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

注 意

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

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

  1. 实验 2-1创建数据库
  2. 实验 2-2查看数据库
  3. 实验 2-3修改数据库
  4. 实验 2-4删除数据库
第一步

数据准备(必做)

删除以前建立的 teaching 库,从没有这个库开始。第 6 章会重新建立它和其中的数据。

整段复制,全部执行下载 .sql
DROP DATABASE IF EXISTS teaching;
SHOW DATABASES;
2-1

创建数据库

讲义 · 创建数据库
目的
完成例 4-1:建立数据库 teaching,默认字符集为 utf8mb4,默认校对规则为 utf8mb4_0900_ai_ci。
前提
已执行数据准备。
  1. 用 CREATE DATABASE 建立 teaching
  2. 查看全部数据库

参考答案

可以直接复制到 Workbench 执行
CREATE DATABASE IF NOT EXISTS teaching
DEFAULT CHARACTER SET utf8mb4
DEFAULT COLLATE utf8mb4_0900_ai_ci;
SHOW DATABASES;

语句解释

IF NOT EXISTS数据库已经存在时不报错,也不重建
DEFAULT CHARACTER SET在库中新建表时默认使用的字符集
DEFAULT COLLATE默认的校对规则
执行后看:SHOW DATABASES 的结果中出现 teaching。
2-2

查看数据库

讲义 · 查看数据库
目的
查看 teaching 的建立语句,再到数据文件夹中找到它对应的文件夹。
前提
已完成实验 2-1。
  1. 用 SHOW CREATE DATABASE 查看 teaching
  2. 在资源管理器中打开数据文件夹,找到 teaching 文件夹

参考答案

可以直接复制到 Workbench 执行
SHOW CREATE DATABASE teaching;

语句解释

Create Database这一列是建立数据库的完整语句,带有字符集和校对规则
/*!40100 … */MySQL 自动加上的版本注释,后面的 DEFAULT ENCRYPTION 也可以不管
数据文件夹C:\ProgramData\MySQL\MySQL Server 8.0\Data。ProgramData 是隐藏文件夹,要在资源管理器中勾选显示隐藏的项目
执行后看:Create Database 一列中能看到 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci。数据文件夹中有一个空的 teaching 文件夹。
2-3

修改数据库

讲义 · 修改数据库
目的
完成例 4-2:把 teaching 的默认字符集改为 gbk,默认校对规则改为 gbk_chinese_ci,查看后再改回 utf8mb4。
前提
已完成实验 2-2。
  1. 用 ALTER DATABASE 改为 gbk
  2. 查看建立语句
  3. 改回 utf8mb4

参考答案

可以直接复制到 Workbench 执行
ALTER DATABASE teaching
DEFAULT CHARACTER SET gbk
DEFAULT COLLATE gbk_chinese_ci;
SHOW CREATE DATABASE teaching;
ALTER DATABASE teaching
DEFAULT CHARACTER SET utf8mb4
DEFAULT COLLATE utf8mb4_0900_ai_ci;

语句解释

ALTER DATABASE修改数据库默认的字符集和校对规则,不能修改库名
gbk_chinese_cigbk 默认的校对规则,不区分大小写
改回 utf8mb4以后的实验都使用 utf8mb4
执行后看:查看的结果中为 DEFAULT CHARACTER SET gbk。校对规则用的是 gbk 默认的 gbk_chinese_ci,所以没有单独列出。
2-4

删除数据库

讲义 · 删除数据库
目的
完成例 4-3:删除 teaching。再删除一次,比较加不加 IF EXISTS 有什么区别。
前提
已完成实验 2-3。

有报错的语句要逐句执行:光标放在这一句上,按 Ctrl+Enter。

  1. 用 DROP DATABASE IF EXISTS 删除 teaching
  2. 查看全部数据库
  3. 不加 IF EXISTS 再删除一次

参考答案

可以直接复制到 Workbench 执行
DROP DATABASE IF EXISTS teaching;
SHOW DATABASES;
DROP DATABASE teaching;

语句解释

IF EXISTS数据库不存在时不报错,只给出一个警告
报错 1008Can't drop database,要删除的数据库不存在
不能撤销删除以后,库中的表和数据都没有了
执行后看:teaching 不在 SHOW DATABASES 的结果中。最后一句报错 1008。
保山学院·人工智能教研室·曹鼎鼎