资源描述:
《数据库原理数据完整性控制.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、课程名称数据库原理实验成绩实验名称数据完整性控制学号B12053114姓名晁美霞班级B120531日期2013/5/2实验目的:1.掌握使用T-SQL对数据进行完整性控制;2.掌握触发器的用法;实验平台:利用SQLServer2005及其交互查询工具来实现操作;实验内容与步骤:一、数据完整性控制(1)定义表Student1,并将其中的SNO属性定义为主码;属性Ssex的值只能取男或女;CREATETABLEStudent1(SNOINTPRIMARYKEYNOTNULL,SNAMECHAR(8),SEXCHAR(2)CHE
2、CK(SEXIN('男','女')),AGEINT,DEPTNOINT,)(2)定义表Course1,并将其中的CNO属性定义为主码;CREATETABLECourse1(CNOINTPRIMARYKEYNOTNULL,CNAMECHAR(20),TNOINT,CREDITINT,)(3)定义表SC1,将其中的属性SNO+CNO定义为主码;GRADE属性设置不能取空值;CREATETABLESC1(SNOINTNOTNULL,CNOINTNOTNULL,GRADEINTNOTNULL,PRIMARYKEY(SNO,CNO)
3、)(4)定义表SC1中的外码;ALTERTABLESC1ADDFOREIGNKEY(SNO)REFERENCESStudent1(SNO)ALTERTABLESC1ADDFOREIGNKEY(CNO)REFERENCESCourse1(CNO)(5)建立系部信息表,要求系部表名称DNMAE取值唯一;CREATETABLEDept1(DEPTNOINTPRIMARYKEYNOTNULL,DNAMECHAR(20)UNIQUE)(6)用CONSTRAINT对完整性约束条件命名,定义表Student1,要求学号在90000~99
4、999之间,姓名不能取空值,年龄小于30,性别只能是男或女;CREATETABLEStudent1(SNOINTPRIMARYKEYCONSTRAINTC1CHECK(SNOBETWEEN90000AND99999),SNAMECHAR(8)CONSTRAINTC2NOTNULL,SEXCHAR(2)CONSTRAINTC3CHECK(SEXIN('男','女')),AGEINTCONSTRAINTC4CHECK(AGE<30),DEPTNOINT,)(7)修改表Student1的完整性限制,删除对性别所做的限制,并将年龄
5、限制由小于30该为小于40;ALTERTABLEStudent1DROPCONSTRAINTC3ALTERTABLEStudent1DROPCONSTRAINTC4ALTERTABLEStudent1ADDCONSTRAINTC4CHECK(AGE<40)二、触发器的使用创建一个触发器,在修改SC表的成绩时,判断日期是不是期末(1月或7月),如果不是,则不允许修改,并给出测试该触发器的语句;CREATETRIGGERUPDATE_SCONSCINSTEADOFUPDATEASBEGINDECLARE@ISMONTHINT;
6、DECLARE@SNOINT;DECLARE@CNOINT;DECLARE@NEWGRADEINT;SET@ISMONTH=MONTH(GETDATE());IFUPDATE(GRADE)IF(@ISMONTH=1OR@ISMONTH=7)BEGINSET@SNO=(SELECTSNOFROMINSERTED)SET@CNO=(SELECTCNOFROMINSERTED)SET@NEWGRADE=(SELECTGRADEFROMINSERTED)UPDATESCSETGRADE=@NEWGRADEWHERESNO=@SNO
7、ANDCNO=@CNO;ENDELSEPRINT'现在不是期末时间,不可以修改学生成绩!';ENDGOUPDATESCSETGRADE=88WHERESNO='1001'ANDCNO='1'实验总结(结论或问题分析):通过这次实验,我学到了很多,让我对数据完整性有了更深的理解,并会熟练运用SQL对数据进行完整性控制,而且也掌握触发器的用法。但在实验的过程中,也遇到了一些问题,在创建触发器时,出现过一些错误,不过,在老师和同学的帮助下,都得到了顺了解决,以后我更加努力。