4.1.6 实训图书管理系统(bookDB)

4.1.6 实训图书管理系统(bookDB)

本小节重点介绍了数据表中数据的插入、更新和删除操作。MySQL中可以灵活地对数据进行插入与更新,MySQL中对数据的操作没有任何提示,因此,在更新和删除数据时,一定谨慎小心,查询条件一定要准确,避免造成数据的丢失。

根据表3.9、表3.10中的表结构,创建bookType表、bookInfo表,并对这两个表进行插入、更新和删除操作。

1.实训准备

因为这两个表在之前创建过,为了该实训的整体效果,先删除这两个表所在的数据库,SQL语句执行效果如下:

再查看一下数据库bookDB是否真的被删除,代码如下:

bookDB数据库已经被删除,接下来重新创建bookDB数据库、bookType表和bookInfo表。执行效果如下:

2.实训内容及步骤

1)使用insert语句把表3-2、表3-4中的数据插入bookType表和bookInfo表中。代码如下:

注意,因为bookType表中主键列btid被book Info表中外键列btid引用,所以book Info表中的btid列的值必须从bookType表中btid列取值。btid为1004的图书类别编号在bookType表中不存在,违反外键约束。

2)使用update语句把bookType表和book Info表中的数据进行修改。

①把bookType表中btid为1002的btname改成‘经管’。

②把book Info表中bid为3的bname改成‘MySQL数据库’,bprice改成40。

3)使用delete语句把bookType表和book Info表中的数据删除。

①把价格低于30元的图书删除。

②把btid为1001的图书类别删除。

提问,为什么要删除b t i d为1001的图书类别信息会有错误呢?删除语句有问题吗?

注意,因为bookType表中主键列btid被bookInfo表中外键列btid引用,而bookType表中btid为1001的列被bookInfo表中的btid列引用。得出结论:在主表中被从表引用的数据是不能删除的,违反外键约束。反之,没有被引用的数据可以删除。