介绍
在本项目中,你将学习如何在 MySQL 数据库上执行各种 DDL(数据定义语言)操作。你将创建数据库、表,修改表结构,删除数据,以及删除表和数据库。
👀 预览



🎯 任务
在本项目中,你将学习:
- 如何使用
sudo命令启动 MySQL 服务并访问数据库 - 如何创建具有特定字符集的数据库
- 如何创建具有各种数据类型和主键的表
- 如何修改表结构,例如使主键自动递增
- 如何使用
DELETE和TRUNCATE从表中删除数据 - 如何删除表和数据库
🏆 成果
完成本项目后,你将能够:
- 理解 MySQL 中的基本 DDL 操作
- 创建和管理数据库及表
- 根据需求修改表结构
- 高效地从表中删除数据
- 在必要时删除表和数据库
启动 MySQL 并访问数据库
在这一步中,你将学习如何使用 sudo 命令在不设置任何密码的情况下启动 MySQL 服务并访问数据库。
- 使用以下命令启动 MySQL 服务:
sudo service mysql start
- 使用
sudo命令在不设置任何密码的情况下访问 MySQL 数据库:
sudo mysql
现在你可以准备进入下一步了。
创建数据库和表
在这一步中,你将学习如何创建字符集指定为 utf8mb4 的 testddl 数据库,然后在该数据库中创建 emp 和 dept 表。
- 创建字符集指定为
utf8mb4的testddl数据库:
CREATE DATABASE IF NOT EXISTS `testddl` DEFAULT CHARACTER SET utf8mb4;
- 使用
testddl数据库:
USE `testddl`;
- 创建具有以下结构的
emp表:
CREATE TABLE `emp` (
`eid` int(5) NOT NULL,
`ename` varchar(50),
`sal` DECIMAL,
`deptno` int(5),
PRIMARY KEY (`eid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
- 创建具有以下结构的
dept表:
CREATE TABLE `dept` (
`did` int(5) NOT NULL,
`dname` varchar(50) DEFAULT NULL,
PRIMARY KEY (`did`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
现在你已经创建了 testddl 数据库以及 emp 和 dept 表。让我们进入下一步。
修改表结构
在这一步中,你将学习如何将 emp 表和 dept 表的主键修改为自增,从 10 开始。你还将把 emp 表中 sal 字段的数据类型修改为整数型。
- 将
emp表的主键修改为自增,从10开始:
ALTER TABLE `emp` AUTO_INCREMENT=10;
- 将
dept表的主键修改为自增,从10开始:
ALTER TABLE `dept` AUTO_INCREMENT=10;
- 将
emp表中sal字段的数据类型修改为整数型:
ALTER TABLE `emp` MODIFY `sal` INT(5);
现在,emp 表和 dept 表的主键已从 10 开始自增,并且 emp 表中 sal 字段的数据类型已修改为整数型。
从表中删除数据
在这一步中,你将学习如何从 emp 表和 dept 表中删除所有数据。
- 使用
DELETE语句从emp表中删除所有数据:
DELETE FROM `emp`;
- 使用
TRUNCATE语句从dept表中删除所有数据:
TRUNCATE TABLE `dept`;
现在 emp 表和 dept 表都为空表了。
删除表和数据库
在这最后一步中,你将学习如何删除 emp 表和 testddl 数据库。
- 删除
emp表:
DROP TABLE `emp`;
- 删除
testddl数据库:
DROP DATABASE `testddl`;
你可以参考以下输出:
MariaDB [(none)]> USE `testddl`;
Database changed
MariaDB [testddl]> CREATE TABLE `emp` (
-> `eid` int(5) NOT NULL,
-> `ename` varchar(50),
-> `sal` DECIMAL,
-> `deptno` int(5),
-> PRIMARY KEY (`eid`)
-> ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Query OK, 0 rows affected (0.005 sec)
MariaDB [testddl]> CREATE TABLE `dept` (
-> `did` int(5) NOT NULL,
-> `dname` varchar(50) DEFAULT NULL,
-> PRIMARY KEY (`did`)
-> ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Query OK, 0 rows affected (0.004 sec)
MariaDB [testddl]> desc emp;
+--------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+---------------+------+-----+---------+-------+
| eid | int(5) | NO | PRI | NULL | |
| ename | varchar(50) | YES | | NULL | |
| sal | decimal(10,0) | YES | | NULL | |
| deptno | int(5) | YES | | NULL | |
+--------+---------------+------+-----+---------+-------+
4 rows in set (0.001 sec)
MariaDB [testddl]> ALTER TABLE `emp` AUTO_INCREMENT=10;
Query OK, 0 rows affected (0.005 sec)
Records: 0 Duplicates: 0 Warnings: 0
MariaDB [testddl]> ALTER TABLE `dept` AUTO_INCREMENT=10;
Query OK, 0 rows affected (0.003 sec)
Records: 0 Duplicates: 0 Warnings: 0
MariaDB [testddl]> ALTER TABLE `emp` MODIFY `sal` INT(5);
Query OK, 0 rows affected (0.006 sec)
Records: 0 Duplicates: 0 Warnings: 0
MariaDB [testddl]> desc emp;
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| eid | int(5) | NO | PRI | NULL | |
| ename | varchar(50) | YES | | NULL | |
| sal | int(5) | YES | | NULL | |
| deptno | int(5) | YES | | NULL | |
+--------+-------------+------+-----+---------+-------+
4 rows in set (0.001 sec)
MariaDB [testddl]> DELETE FROM `emp`;
Query OK, 0 rows affected (0.000 sec)
MariaDB [testddl]> TRUNCATE TABLE `dept`;
Query OK, 0 rows affected (0.003 sec)
MariaDB [testddl]> show tables;
+-------------------+
| Tables_in_testddl |
+-------------------+
| dept |
| emp |
+-------------------+
2 rows in set (0.000 sec)
MariaDB [testddl]> DROP TABLE `emp`;
Query OK, 0 rows affected (0.002 sec)
MariaDB [testddl]> show tables;
+-------------------+
| Tables_in_testddl |
+-------------------+
| dept |
+-------------------+
1 row in set (0.000 sec)
MariaDB [testddl]> show schemas;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| testddl |
+--------------------+
5 rows in set (0.000 sec)
MariaDB [testddl]> DROP DATABASE `testddl`;
Query OK, 1 row affected (0.004 sec)
MariaDB [(none)]> show schemas;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.000 sec)
恭喜你!你已经完成了 DDL 综合挑战。你已经学会了如何创建数据库、创建表、修改表结构、从表中删除数据以及删除表和数据库。********
总结
恭喜你!你已经完成了这个项目。你可以在 LabEx 中练习更多实验来提升你的技能。



