![MySQL 8从入门到精通(视频教学版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/737/26542737/b_26542737.jpg)
4.7 综合案例——数据表的基本操作
本章全面介绍了MySQL中数据表的各种操作,如创建表、添加各类约束、查看表结构以及修改和删除表。读者应该掌握这些基本的操作,为以后的学习打下坚实的基础。在这里,给出一个综合案例,让读者全面回顾一下本章的知识要点,并通过这些操作来检验自己是否已经掌握了数据表的常用操作。
1.案例目的
创建、修改和删除表,掌握数据表的基本操作。
创建数据库company,按照表4.4和表4.5给出的表结构在company数据库中创建两个数据表offices和employees,按照操作过程完成对数据表的基本操作。
表4.4 offices表结构
![](https://epubservercos.yuewen.com/76103A/15056702904172406/epubprivate/OEBPS/Images/1209.jpg?sign=1739235138-amMh2vJrqSwdLexbEEEWzOn4u3AYh8gm-0-ed42ebfccd25a9fdb86789c9bd8fba5f)
表4.5 employees表结构
![](https://epubservercos.yuewen.com/76103A/15056702904172406/epubprivate/OEBPS/Images/1210.jpg?sign=1739235138-v3wuNoPrlKxTWWQUGGmpArRfmok8JeP8-0-532e6172663adb42a226d84cc7e4eb13)
2.案例操作过程
步骤01 登录MySQL数据库。
打开windows命令行,输入登录用户名和密码:
C:\>mysql –h localhost -u root -p Enter password: **
或者打开MySQL 8.0 Command Line Client,只输入用户密码也可以登录。登录成功后显示如下信息:
![](https://epubservercos.yuewen.com/76103A/15056702904172406/epubprivate/OEBPS/Images/1089.jpg?sign=1739235138-0cfBBxsHsQijFvPhzqSMQyQz2QnmEVgC-0-435692134eb7842f35d6b70028f66280)
登录成功,可以输入SQL语句进行操作。
步骤02 创建数据库company。
创建数据库company的语句如下:
mysql> CREATE DATABASE company; Query OK, 1 row affected (0.00 sec)
结果显示创建成功,在company数据库中创建表,必须先选择该数据库,输入语句如下:
mysql> USE company; Database changed
结果显示选择数据库成功。
步骤03 创建表offices。
创建表offices的语句如下:
![](https://epubservercos.yuewen.com/76103A/15056702904172406/epubprivate/OEBPS/Images/1090.jpg?sign=1739235138-l2FMtnMKCbfHAoNsuMe0fi5IbZC0FWQV-0-cb6a6f707b9b9d79ee46624b1dd21387)
执行成功之后,使用“SHOW TABLES;”语句查看数据库中的表,语句如下:
![](https://epubservercos.yuewen.com/76103A/15056702904172406/epubprivate/OEBPS/Images/1091.jpg?sign=1739235138-0m4gQu63vGuJXtTuMS0pggv8qXYwARdb-0-813c43c39ec10c77c228ee01c13b0ecb)
可以看到,数据库中已经有了数据表offices,创建成功。
步骤04 创建表employees。
创建表employees的语句如下:
![](https://epubservercos.yuewen.com/76103A/15056702904172406/epubprivate/OEBPS/Images/1092.jpg?sign=1739235138-yyLpqSCJdAMyYxPqp4nlQcnzrS45xfp5-0-003a39e8079f99f22647be8981918c8c)
执行成功之后,使用“SHOW TABLES;”语句查看数据库中的表,语句如下:
![](https://epubservercos.yuewen.com/76103A/15056702904172406/epubprivate/OEBPS/Images/1093.jpg?sign=1739235138-FEaA25dTuOQ9AuRo2wE23JhrKBTQaQY4-0-72b4457dd81e1a5dd6a6370915350932)
可以看到,现在数据库中已经创建好了employees和offices两个数据表。要检查表的结构是否按照要求创建,可使用DESC语句,如果语句正确,则显示结果如下:
![](https://epubservercos.yuewen.com/76103A/15056702904172406/epubprivate/OEBPS/Images/1094.jpg?sign=1739235138-U9zpnfjGfQiq6JtH9tGlKnQJ3pYzBIpt-0-0ad16834f700f00f5e2e7c6868b0cda6)
可以看到,两个表中字段分别满足表4.4和表4.5中要求的数据类型和约束类型。
步骤05 将表employees的mobile字段修改到officeCode字段后面。
修改字段位置,需要用到ALTER TABLE语句,输入如下语句:
mysql> ALTER TABLE employees MODIFY mobile VARCHAR(25) AFTER officeCode; Query OK, 0 rows affected (0.14 sec) Records: 0 Duplicates: 0 Warnings: 0
结果显示执行成功,使用DESC查看修改后的结果如下:
![](https://epubservercos.yuewen.com/76103A/15056702904172406/epubprivate/OEBPS/Images/1095.jpg?sign=1739235138-JaAzm4lUxQLrFStnrKjQEvrKh3doNpVt-0-3461a4b5a2d059127feff7342ab1dd58)
可以看到,mobile字段已经插入到officeCode字段的后面。
步骤06 将表employees的birth字段改名为employee_birth。
修改字段名,需要用到ALTER TABLE语句,输入语句如下:
ALTER TABLE employees CHANGE birth employee_birth DATETIME; Query OK, 0 rows affected (0.02 sec) Records: 0 Duplicates: 0 Warnings: 0
结果显示执行成功,使用DESC查看修改后的结果如下:
![](https://epubservercos.yuewen.com/76103A/15056702904172406/epubprivate/OEBPS/Images/1096.jpg?sign=1739235138-c9Lza0QNzsfetlS4AZWrMNqzYgWFKclJ-0-afe9c5d0ce098cb43185c3b6f76036e8)
可以看到,表中只有employee_birth字段,已经没有名称为birth的字段了,修改名称成功。
步骤07 修改sex字段,数据类型为CHAR(1),非空约束。
修改字段数据类型,需要用到ALTER TABLE语句,输入语句如下:
mysql>ALTER TABLE employees MODIFY sex CHAR(1) NOT NULL; Query OK, 0 rows affected (0.00 sec) Records: 0 Duplicates: 0 Warnings: 0
结果显示执行成功,使用DESC查看修改后的结果如下:
![](https://epubservercos.yuewen.com/76103A/15056702904172406/epubprivate/OEBPS/Images/1097.jpg?sign=1739235138-OejQRZmnPd9BHJNLRf9lhEgFtP27EHJv-0-741570a708f4ab15db5741fb1c156900)
从执行结果可以看到,sex字段的数据类型由前面的VARCHAR(5)修改为VARCHAR(1),且其Null列显示为NO,表示该列不允许空值,修改成功。
步骤08 删除字段note。
删除字段,需要用到ALTER TABLE语句,输入语句如下:
mysql> ALTER TABLE employees DROP note; Query OK, 0 rows affected (0.01 sec) Records: 0 Duplicates: 0 Warnings: 0
结果显示执行语句成功,使用“DESC employees;”查看语句执行后的结果:
![](https://epubservercos.yuewen.com/76103A/15056702904172406/epubprivate/OEBPS/Images/1098.jpg?sign=1739235138-8csB1pUALjbUCu4wNiRvxP5OeNI9kIeW-0-26ed2d968d1628c52f8f782daeba1f35)
可以看到,DESC语句返回了8个列字段,note字段已经不在表结构中,删除字段成功。
步骤09 增加字段名favoriate_activity,数据类型为VARCHAR(100)。
增加字段,需要用到ALTER TABLE语句,输入语句如下:
mysql> ALTER TABLE employees ADD favoriate_activity VARCHAR(100); Query OK, 0 rows affected (0.01 sec) Records: 0 Duplicates: 0 Warnings: 0
结果显示执行语句成功,使用“DESC employees;”查看语句执行后的结果:
![](https://epubservercos.yuewen.com/76103A/15056702904172406/epubprivate/OEBPS/Images/1099.jpg?sign=1739235138-g7LuwS3ONUODQbHUilYFfkHJHkV5Gvst-0-d0a312919a62d0232e262ba4c7066fb3)
可以看到,数据表employees中增加了一个新的列favoriate_activity,数据类型为VARCHAR(100),允许空值,添加新字段成功。
步骤10 删除表offices。
在创建表employees时,设置了表的外键,该表关联了其父表offices的officeCode主键。如前面所述,删除关联表时,要先删除子表employees的外键约束,才能删除父表。因此,必须先删除employees表的外键约束。
(1)删除employees表的外键约束,输入如下语句:
mysql>ALTER TABLE employees DROP FOREIGN KEY office_fk; Query OK, 0 rows affected (0.01 sec) Records: 0 Duplicates: 0 Warnings: 0
其中,office_fk为employees表的外键约束名称,即创建外键约束时CONSTRAINT关键字后面的参数,结果显示语句执行成功,现在可以删除offices父表。
(2)删除表offices,输入如下语句:
mysql>DROP TABLE offices; Query OK, 0 rows affected (0.00 sec)
结果显示执行删除操作成功,使用“SHOW TABLES;”语句查看数据库中的表,结果如下:
![](https://epubservercos.yuewen.com/76103A/15056702904172406/epubprivate/OEBPS/Images/1100.jpg?sign=1739235138-3trQJVO0TyiSAg0WYKZHiwjKmrc88NmO-0-88d61f0881d9e2f2a67f4c83f3923c9d)
可以看到,数据库中已经没有名称为offices的表了,删除表成功。
步骤11 修改表employees存储引擎为MyISAM。
修改表存储引擎,需要用到ALTER TABLE语句,输入语句如下:
mysql>ALTER TABLE employees ENGINE=MyISAM; Query OK, 0 rows affected (0.01 sec) Records: 0 Duplicates: 0 Warnings: 0
结果显示执行修改存储引擎操作成功,使用SHOW CREATE TABLE语句查看表结构,结果如下:
![](https://epubservercos.yuewen.com/76103A/15056702904172406/epubprivate/OEBPS/Images/1101.jpg?sign=1739235138-BDcJ5xEwzErG5aWsrs9Apxu6r5Eci87g-0-ee196fa520e9d488e1366ed6a27d0da2)
可以看到,倒数第2行中的ENGINE后面的参数已经修改为MyISAM,修改成功。
步骤12 将表employees名称修改为employees_info。
修改数据表名,需要用到ALTER TABLE语句,输入语句如下:
mysql>ALTER TABLE employees RENAME employees_info; Query OK, 0 rows affected (0.00 sec)
结果显示执行语句成功,使用“SHOW TABLES;”语句查看执行结果:
![](https://epubservercos.yuewen.com/76103A/15056702904172406/epubprivate/OEBPS/Images/1102.jpg?sign=1739235138-NlAjtwfbjqhvYhcpk8Zxe9C4iYHhBlVH-0-e050a4ed0e8484f1694c38a47600778d)
可以看到数据库中已经没有名称为employees的数据表。