云南大学-实验六-数据库完整性报告
- 格式:docx
- 大小:829.99 KB
- 文档页数:21
云南大学软件学院
实验报告
课程:数据库原理与实用技术实验任课教师:刘宇、张璇
姓名:学号:专业:信息安全成绩:
实验6 数据库完整性
实验6-1 完整性约束
1、创建规则(用图形或者语句方法创建)
(1)创建入学日期规则“Enter_University_date_rule”,假定该学校于1923年4月30日创建。要求:入学日期必须大于等于学校创建日期,并且小于等于当前日期
测试:
(2)创建学生年龄规则“Age_rule”。要求:学生年龄必须在15~30岁之间
测试:
(3)创建学生性别规则“Sex_rule”。要求:性别只能为“男”或“女”
测试:
(4)创建学生成绩规则“Score_rule”。要求:学生成绩只能在0~100之间
(5)用图形方法查看学生成绩规则“Score_rule”,截图为:
双击:成绩:
(6)用语句方法查看学生成绩规则“Score_rule”,语句为:
2、删除规则Enter_University_date_rule
3、创建默认(用图形或者语句方法创建)
(1)创建默认时间“Time_default”为当前系统时间
(2)创建默认入学年龄“Age_default”为18岁
(3)用图形方法查看默认入学年龄“Age_default”,截图为:
(4)用语句方法查看默认入学年龄“Age_default”,语句为:
4、删除默认入学年龄“Age_default”
5、创建声明式默认:在创建表的过程中创建声明式默认
(1)创建表“default_example”,表中包含字段pid、name、sex、age。要求设定sex的默认值为“男”、age的默认值为18。
编号姓名性别年龄
101 苏晴女
201 马拯山20
执行结果为:
输入数据:
获取数据结果为:
(2)在表中增加新的默认,将编号默认为100。
插入一条记录,执行结果为:
6、在“学生管理数据库”各个数据表中建立相应的主键、外键、惟一值、以及check约束,要求:学生的年龄必须是两位数,其中第一位是1或2:
学生表如下:
授课表如下
课程表如下:
成绩表如下:
删除check 约束:
学生表的:
授课表的:
课程表的:
成绩表的:
7、完成教科书456页如下习题:[7.1]a:
实验6-2 触发器
1、使用触发器
(1)创建一个触发器trig_update,返回对“学生表”进行更新操作后,被更新的记录条数
(2)执行触发器
(3)修改触发器trig_update,除返回被更新的记录条数外,再返回学生的所有基本信息
2、使用触发器的两个特殊表:插入表(inserted)和删除表(deleted)。
(1)在“学生表”上创建触发器ins_del_sample,在对学生表进行插入、删除或更新操作后,分别从inserted表和deleted表中查询学生学号、姓名、性别、年龄和所在院系。
(2)执行插入、删除和更新操作后返回的表有什么区别?插入操作:
删除操作:
更新操作:(触发了两个触发器)
3、使用系统存储过程查看触发器
(1)显示触发器trig_update的一般信息
(2)显示触发器trig_update的源代码
(3)显示“学生表”上所有的依赖关系
(4)显示触发器trig_update所引用的对象
4、难题(注意inserted表和deleted表的使用,并请自己修改数据表)
(1)为“成绩表”创建一个触发器,当向表中插入数据时,如果成绩大于等于60分,该学生就能得到相应的学分,否则,该学生不能得到学分。
测试:
(2)为“学生表”创建一个触发器,当删除表中的一个学生资料时,将“成绩表”中的相应记录也删除掉
测试:从学生表中删除学号为的资料
删除前:
触发前的成绩表:
触发后的成绩表:
(3)为“成绩表”创建一个触发器,如果成绩由原来的小于60分更改为大于等于60分时,该学生就得到相应的学分,如果成绩由原来的大于等于60分更改为小于60分,则该学生的相应学分更改为0。
测试:1.先前的成绩表:
更新成绩:成绩小于60的情况:
学分相应的变为0
成绩大于60的情况
学分为更新后的学分,而不是0
5、完成教科书456页如下习题:
[7.11]a:
测试:city不在customers中的情况:
City 在customers中的情况:
[7.11]b:
测试:添加购买了产品p04的订单,数量为1500
执行前:
执行后:
P04的quantity 变成了123800,成功!