文档详情

实验05数据完整性.doc

发布:2017-02-01约字共6页下载文档
文本预览下载声明
实验5 数据完整性 系别:计算机科学与技术系 专业班级:计算机科学与技术5班 姓名: 学号: 实验日期:2013-11-29 实验报告日期:2013-12-11 实验目的: 1.掌握SQL Server中的约束类型 2.掌握各种约束的实施方法 实验要求: 1.掌握表自身的完整性实施方法 2.掌握表间完整性的实施方法 3.加深对数据完整性的理解 实验环境及学时安排: 1.SQL SERVER2005 2.学时:2学时 实验内容: 1.主键约束: 首先在选课表SC中添加主键约束,主键为(Sno,Cno),然后试着将SC中的某条记录的课程号字段改为空,体会主键约束的作用。 试着将学生表Student中的两条记录的学号字段改为相同的值,体会主键约束的作用。 update sc set sno=101 where sno=103; 2.惟一约束: 对Department表中的系名字段施加惟一约束,并在该表中添加一条新纪录。其中,新纪录中的系名字段为NULL,体会与主键约束的不同。 alter table department add constraint fk_department unique(DepID); insert into Department values(null,计算机系,麓山南路号,808);alter table course drop constraint tno_fk; alter table course add constraint fk_Tno foreign key(TNo) references teacher(Tno) on delete set null on update cascade; delete from teacher where Tno=804; delete之后(tno=‘804’的教师的信息已经删除) 而course表如下图: update teacher set tno=807 where tno=825; update tno=807 where tno=825 之后Teacher表如下图: 4.默认约束: 创建默认sdefault为‘男’。 将sdefault绑定到学生表的性别列。 alter table student add constraint default_sex default 男 for sex; insert into student(sno,sname,class) values(115,张三,95033); 结果如下图: 5.规则约束: 创建规则prule使其取值必须是(’助教’,’讲师’,’副教授’ ,’教授’)。 将规则prule绑定到教师表的职称列。 CREATE RULE是批处理语句, 语句: go DECLARE @prof as nchar(5); go CREATE RULE prule AS @prof in(助教,讲师,副教授,教授); exec sp_bindrule prule,teacher.prof; insert into teacher values(857,张凯迪,女,处长5); 结果: 6.动态约束: 在教师表Teacher上定义触发器,使其在更新教师职称时只能升高不能降低,但可以破格(如:讲师-教授)。 语句: IF EXISTS (SELECT name FROM sysobjects WHERE name = tch_up AND type = TR) DROP TRIGGER tch_up GO CREATE TRIGGER tch_up ON Teacher FOR UPDATE AS declare @oldrank smallint,@newrank smallint if update(prof) begin select @oldra case d.prof when 助教 then 1 when 讲师 then 2 when 副教授 then 3 when 教授 then 4 end from Teacher t,deleted d where t.prof=d.prof select @newrank= case i.prof
显示全部
相似文档