您好,欢迎访问三七文档
云南大学软件学院实验报告课程:数据库原理与实用技术实验任课教师:包崇明姓名:匿名学号:2013…….专业:软件工程成绩:实验6数据库完整性实验6-1完整性约束1、在学生表上面创建下列CHECK约束【注】:因为学生表已经存在,所以这里使用添加check约束的方法实现:(1)创建入学日期约束“Enter_University_date_rule”,假定该学校于1923年4月30日创建。要求:入学日期必须大于等于学校创建日期,并且小于等于当前日期测试语句:结果(添加的check约束起作用了),如图:(2)创建学生年龄约束“Age_rule”。要求:学生年龄必须在15~30岁之间测试语句结果(添加”Age_rule”成功,并且年龄为’2015/4/27’没有违反”Enter_University_date_rule”约束,进一步说明了(1)中的check约束添加成功,如图:【注】:考虑到时间关系,下面的部分解答中将会省略测试约束的步骤。(3)创建学生性别约束“Sex_rule”。要求:性别只能为“男”或“女”(4)创建学生成绩约束“Score_rule”。要求:学生成绩只能在0~100之间(5)用图形方法查看学生成绩约束“Score_rule”,截图为:2、删除约束Enter_University_date_rule测试语句:结果:(更新成功)3、创建声明式默认约束:在创建表的过程中创建默认约束(1)创建表“default_example”,表中包含字段pid、name、sex、age。要求设定sex的默认值为“男”、age的默认值为18。创建default_example表语句:输入数据:编号姓名性别年龄101苏晴女201马拯山20采用SQL语句进行插入元祖:执行结果为:(默认值起作用了!!)(2)插入一条编号为100的记录,执行结果为:(3)修改默认值一般先删除老的默认约束,再新建一个默认约束方法如下:删除约束:alterTABLEdefault_exampledrop约束名新建默认约束:alterTABLEdefault_exampleaddconstraintdf_agedefault(20)forage①删除老的默认约束:②新建默认约束:请将年龄默认值更改为19,执行结果为:测试语句:结果(默认年龄被修改为19),如图:3、在“学生管理数据库”各个数据表中建立相应的主键、外键、惟一值、以及check约束,要求:学生的年龄必须是两位数,其中第一位是1或2:(1)学生表【添加主键和年龄约束】:(2)授课表【添加主键和外键】:(3)课程表【添加主键】:(4)成绩表【添加主键和外键】:第一次添加外键失败,因为两个表中的学号长度不等,所以我需要修改使其相等再添加。修改后添加外键约束:我将成绩表中学号的长度由char(20)修改为char(10),这样添加外键约束就能成功:删除check约束:删除学生表中的年龄约束:Age_rule:5、完成教科书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。5、完成教科书456页如下习题:[7.11]a:[7.11]b:
本文标题:实验六实验报告
链接地址:https://www.777doc.com/doc-2459325 .html