《西华大学数据库实验报告(四)》由会员分享,可在线阅读,更多相关《西华大学数据库实验报告(四)(6页珍藏版)》请在金锄头文库上搜索。
1、第4次作业数据完整性约束一、环境运行SQL Server,已创建名为student数据库、“学生信息”表、“课程”表、“学生成绩”表。(参考作业二)二、实训内容(1)在“学生信息”表上添加主键约束。最后删除主键约束。use studentgoalter table 学生信息_蒲强林add constraint PK_学生信息_学号 primary key(学号)go运行结果截图:use studentgoalter table 学生信息_蒲强林drop constraint PK_学生信息_学号go运行结果截图:(2)在“学生信息”表中添加“身份证号码”字段,对该字段定义唯一键约束(插入几行记
2、录看效果)。最后删除唯一键约束。use studentgoalter table 学生信息_蒲强林add 身份证号码 nchar(18) uniquego运行结果截图:use studentgoinsert 学生信息_蒲强林values (001,张三,男,18,计算机系,18288888888,5113211993)insert 学生信息_蒲强林values (002,李四,男,19,数学系,18200000008,5113211993)go运行结果截图:再次插入身份证号码为“5113211993”的学生信息时,出现唯一键冲突。use studentgoalter table 学生信息_蒲强
3、林drop constraint UQ_学生信息_蒲强林_882AE7177D582703go运行结果截图:(3)对“学生信息”表中的“年龄”定义检查约束,要求年龄在18-25之间,但对已有不符合约束的数据不进行检查(插入几行记录看效果)。use studentgoalter table 学生信息_蒲强林with nocheckadd constraint CK_学生信息_年龄 check(年龄 between 18 and 20)go运行结果截图:use studentgoinsert 学生信息_蒲强林values (001,张三,男,11,计算机系,18288888888,51132119
4、93)insert 学生信息_蒲强林values (002,李四,男,19,数学系,18200000008,5113211889)go运行结果截图:当添加不满足检查约束的 学生信息时,发生冲突。(4)在“学生成绩”表中的“分数”字段定义检查约束,让分数范围在0-100之间(插入几行记录看效果)。最后删除检查约束。use studentgoalter table 学生成绩_蒲强林with nocheckadd constraint CK_学生成绩_分数 check(分数 between 0 and 100)go运行结果截图:use studentgoinsert 学生成绩_蒲强林values (
5、3120081,101,86) insert 学生成绩_蒲强林values (3120081,102,155)go运行结果截图:当添加不满足检查约束的学生成绩时,发生冲突。use studentgoalter table 学生成绩_蒲强林drop CK_学生成绩_分数go(5)对“学生信息”表中的“性别”定义默认约束(插入几行记录看效果)。use studentgoalter table 学生信息_蒲强林add constraint DF_学生信息_性别 default 男 for 性别go运行结果截图:use studentgoinsert 学生信息_蒲强林values (3,王五,defa
6、ult,18,计算机系,1821111118,5333211993)insert 学生信息_蒲强林values (4,李三,default,19,数学系,18200000008,4413211993)go运行结果截图:(6)在“学生成绩”表中为“课程号”字段建立一个带有级联更新功能的外键,其主键是“课程”表的“课程号”字段,当更新“课程”表中的“课程号”时,同时更新“学生成绩”表中的“课程号”数据(修改几行记录看效果)。use studentgoalter table 学生成绩_蒲强林add constraint FK_学生成绩_学号 foreign key(课程号)references 学生
7、课程_蒲强林(课程号) on update cascadego运行结果截图:use studentgoselect *from 学生成绩_蒲强林goupdate 学生课程_蒲强林set 课程号 = 0001where 课程号 = 0000001goselect *from 学生成绩_蒲强林go运行结果截图:(7)在“学生成绩”表中为“课程号”字段建立一个带有级联删除功能的外键,其主键是“课程”表的“课程号”字段,当删除“课程”表中的某一行记录时,同时删除 “学生成绩”表所有这门课程的成绩数据(删除几行记录看效果)。use studentgoalter table 学生成绩_蒲强林add con
8、straint FK_学生成绩_课程号1 foreign key(课程号)references 学生课程_蒲强林(课程号) on delete cascadego运行结果截图:use studentgoselect *from 学生成绩_蒲强林godelete 学生课程_蒲强林where 课程号 = 0001 or 课程号 = 0000002 or 课程号 = 0000003 or 课程号 = 0000004goselect *from 学生成绩_蒲强林go运行结果截图:二、作业小结总结建立数据完整性的方法和步骤。掌握并理解如何使用约束、默认、规则完成数据完整性的建立。体会数据完整性的作用和地位。