实验三:完整性语言实验

该实验主要探讨了数据库的完整性,包括实体完整性、参照完整性和用户自定义完整性。实验涉及创建表时和创建表后定义完整性约束,以及删除这些约束。实验者通过SQL语句实践了主键和外键的设置,理解了完整性约束的作用和违约处理,并讨论了在自引用表中定义完整性约束的场景。实验旨在提升对数据库管理系统中完整性维护的理解和操作能力。
摘要由CSDN通过智能技术生成

实验三:完整性语言实验

3.1.1 实验目的
掌握实体完整性的定义和维护方法。

3.1.2 实验内容和要求
定义实体完整性,删除实体完整性。能够写出两种方式定义实体完整性的 SQL 语句:创建表时定义实体完整性、创建表后定义实体完整性。设计 SQL 语句验证完整性约束是否起作用。

3.1.3 实验重点和难点
实验重点:创建表时定义实体完整性。
实验难点:有多个候选码时实体完整性的定义。

3.1.4 实验内容记录
参照 employees 数据库创建一个新的数据库 test;
在这里插入图片描述
在这里插入图片描述

3.1.4.1 创建表时定义实体完整性(列级实体完整性)
创建雇员表。
在这里插入图片描述

3.1.4.2 创建表时定义实体完整性(表级实体完整性)
创建雇员表。
在这里插入图片描述

3.1.4.3 创建表后定义实体完整性
创建雇员表。
在这里插入图片描述

3.1.4.4 定义实体完整性(多属性主码)
创建职位表。

在这里插入图片描述

3.1.4.5 有多个候选码时定义实体完整性
当存在多个候选码时,只能定义一个主码,其它的候选码定义唯一性约束。
创建部门表。
在这里插入图片描述

3.1.4.6 删除实体完整性
删除部门表上的实体完整性。
在这里插入图片描述
在这里插入图片描述

3.1.5 思考题
(1)所有列级完整性约束都可以改写为表级完整性约束,而表级完整性约束不一定能改写为列级完整性约束。请举例说明。
多属性主码只能通过表级完整性约束定义。
(2)什么情况下会违反实体完整性约束,DBMS 将做何种违约处理?
当更新数据时,新的数据可能违反实体完整性约束。此时 DBMS 会拒绝执行。

3.2 参照完整性实验
3.2.1 实验目的
掌握参照完整性的定义和维护方法。

3.2.2 实验内容和要求
定义参照完整性,定义参照完整性的违约处理,删除参照完整性。写出两种方式定义参照完整性的 SQL 语句:创建表时定义参照完整性、创建表后定义参照完整性。

3.2.3 实验重点和难点
实验重点:创建表时定义参照完整性。
实验难点:参照完整性的违约处理定义。

3.2.4 实验内容记录

3.2.4.1 创建表时定义参照完整性
在已有员工表的情况下,定义工资表。
列级参照完整性定义。(MYSQL 定义列级外键约束无效。)
在这里插入图片描述

表级参照完整性定义。(MYSQL 支持外键约束命名。)
在这里插入图片描述

3.2.4.2 创建表后定义参照完整性
在这里插入图片描述
在这里插入图片描述

3.2.4.3 定义参照完整性的违约处理
定义两张表:(如果要定义删除后的行为,则必须不能与已有的限制冲突,如不能定义 NOT NULL。)
在这里插入图片描述

插入两条数据:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

然后删除被参照表中的元组,之后参照表会变成:
在这里插入图片描述

3.2.4.4 删除参照完整性
删除 emp_dept 上的外码。
在这里插入图片描述

3.2.5 思考题
对于自引用表,例如课程表(课程号、课程名、先修课程号、学分)中的先修课程号引用该表的课程号,请完成如下任务:
(1)写出课程表上的实体完整性和参照完整性。
(2)在考虑实体完整性约束的条件下,试举出几种录入课程数据的方法。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在录入数据时,可以按照引用的顺序录入数据(总是先录入不存在引用或引用已存在的数据),也可以临时移除完整性约束,在录入数据后,再添加完整性约束。
如果数据本身无法满足约束,则引入约束时会失败。

3.3.1 实验目的
掌握用户自定义完整性的定义和维护方法。

3.3.2 实验内容和要求
针对具体应用语义,选择 NULL、NOT NULL、DEFAULT、DEFAULT、UNIQUE、CHECK 等,定义属性上的约束条件。

3.3.3 实验重点和难点
实验重点:NULL、NOT NULL、DEFAULT
实验难点:CHECK

3.3.4 实验内容记录

3.3.4.1 定义属性 NULL、NOT NULL、DEFAULT、UNIQUE约束
在这里插入图片描述

3.3.4.2 使用 CHECK 约束条件

在这里插入图片描述

3.3.4.3 检查CHECK约束
在这里插入图片描述

违反第一条
在这里插入图片描述

违反第二条
在这里插入图片描述

实验总结
本次实验通过实践学习了如何定义实体完整性,删除实体完整性;如何写出两种方式定义实体完整性的 SQL 语句:创建表时定义实体完整性、创建表后定义实体完整性;以及设计 SQL 语句验证完整性约束是否起作用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值