实验项目
实验1 实验环境与操作流程
实验2 数据定义、查询与更新
实验3 基本表的定义、删除与修改
实验4 数据的插入、修改和删除
实验5 数据的查询
实验6 数据的视图
实验7 完整性语言
实验8 触发器
实验9 存储过程与函数
实验10 SQL语句1(创建、插入、查询)
实验11 SQL语句2(查询)
实验12 SQL语句3(视图、完整性、关系代数查询)
实验7 完整性语言
一、实验目的
1. 掌握实体完整性的定义和维护方法;
2. 掌握参照完整性的定义和维护方法;
3. 掌握用户自定义完整性的定义和维护方法。
二、实验要求
1. 使用CREATE语句写出定义实体完整性、参照完整性、用户自定义完整性;
2. 熟练掌握完整性语言。
三、实验内容
(参考课本5.1-5.4节以及3.2节)
(使用命令show create table 表名;来查看表中约束及名字。)
- 实体完整性:
- 创建表时定义实体完整性:定义Student表的同时定义其实体完整性条件(Sno为主码),参考例5.1。
- 创建表后定义实体完整性:先定义Course表,再添加其实体完整性条件(Cno为主码),参考例5.1、例3.6。
- 创建表时定义实体完整性:定义SC表的实体完整性((Sno,Cno)为主码),参考例5.2。
- 参照完整性:
- 创建表时定义参照完整性:定义SC中的参照完整性(Cno和Sno为两个外码),参考例5.3。
- 定义参照完整性的违约处理:定义SC中的参照完整性的违约处理(当删除Student表中元祖时,级联删除SC表中相应的元祖;当更新Student表中的Sno时,级联更新SC表中相应的元祖;当删除Course表中元祖造成与SC表不一致时,拒绝删除;当更新Course表中的Cno时,级联更新SC表中相应的元祖),参考例5.4。
- 用户定义的完整性:
- 创建表时定义用户定义的完整性:定义SC表的Sno、Cno、Grade属性不允许取空值,参考例5.5。
- 创建表时定义用户定义的完整性:定义SC表的Grade的值应该在50和100之间,参考例5.9。
- 创建表后定义用户定义的完整性:定义Student表的Ssex只允许取“男”或“女”,并将此约束命名为C1,参考5.13。
- 更新完整性约束:
- 更新有自定义名字的约束:删除Student表的C1约束,参考例5.13。
- 更新无自定义名字的约束:修改SC表中的约束条件,要求Grade的值应该在0和100之间,参考例5.13。(修改:先删除旧的约束条件,再增加新的约束条件)(先通过show create table 表名;来查看表中约束的默认名,然后删除此名的约束,增加新的约束,并命名为C2)
实验指导:
- 创建数据库s_c:
- Student表的完整性:
- 创建表时定义实体完整性:定义Student表的同时定义其实体完整性条件(Sno为主码),参考例5.1。
- 创建表后定义用户定义的完整性:定义Student表的Ssex只允许取“男”或“女”,并将此约束命名为C1,参考例5.13。
- 更新有自定义名字的约束:删除Student表的C1约束,参考例5.13。
- Course表的完整性:
- 创建表后定义实体完整性:先定义Course表,再添加其实体完整性条件(Cno为主码),参考例5.1、例3.6。
- SC表的完整性:
- 创建表时定义实体完整性:定义SC表的实体完整性((Sno,Cno)为主码),参考例5.2。
- 创建表时定义参照完整性:定义SC中的参照完整性(Cno和Sno为两个外码),参考例5.3。
- 定义参照完整性的违约处理:定义SC中的参照完整性的违约处理(当删除Student表中元祖时,级联删除SC表中相应的元祖;当更新Student表中的Sno时,级联更新SC表中相应的元祖;当删除Course表中元祖造成与SC表不一致时,拒绝删除;当更新Course表中的Cno时,级联更新SC表中相应的元祖),参考例5.4。
- 创建表时定义用户定义的完整性:定义SC表的Sno、Cno、Grade属性不允许取空值,参考例5.5。
- 创建表时定义用户定义的完整性:定义SC表的Grade的值应该在50和100之间,参考例5.9。
- 更新无自定义名字的约束:修改SC表中的约束条件,要求Grade的值应该在0和100之间,参考例5.13。(修改:先删除旧的约束条件,再增加新的约束条件)(先通过show create table 表名;来查看表中约束的默认名,然后删除此名的约束,增加新的约束,并命名为C2)