8实验八数据库的完整性Word文档格式.docx
《8实验八数据库的完整性Word文档格式.docx》由会员分享,可在线阅读,更多相关《8实验八数据库的完整性Word文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
1、完整性约束的添加、删除
(1)通过SQLServerManagementStudio实施约束
a.为表Student的Birth字段创建检查约束,使输入的生日日期小于系统日期。
①、选择Student表,右击→设计,打开Student表
②、选择Birth一行,右击→CHECK约束,打开界面如下图所示
③、单击“添加”
④、在表达式中写入:
Entrance_date<
getdate()
⑤、单击“关闭”退出
b.为表Student的Sdept字段,设置默认值约束,默认值取’计算机系’。
选择Sdept一行,在其列属性中修改其默认值
c.为Student表的Sname字段添加唯一性约束。
选择Sname一行,右击→索引/键
出现如下界面:
单击“添加”,在类型中选择“唯一键”,在列中选择“Sname”,名称自定义
最后单击“关闭”退出
d.将SC表的Sno,cno字段设置外键约束,约束名自已取,并允许级联删除与级联更新。
(此要求在SQLServer2008R2中无法做出)若已存在外键约束,请先删除。
①、选中Sno,右击→单击“关系”,出现如下信息,可见已存在外键约束
选中键,点击删除,完成约束删除
②、添加约束:
选中Sno,右击,选择“关系”,出现如下信息,
③、点击添加,并修改
④、修改成自己想要的规范和名称
⑤、确定,完成
⑥、设置Cno的外键同上理
(2)使用Transact-SQL语句实施约束
a.为Student表的Sno字段添加一个check约束,使学号满足如下条件:
学号前四位为2011,学号后四位为数字字符。
altertableStudent
addconstraintsno_num
check(snolike'
[2][0][1][1][0-9][0-9][0-9][0-9]'
)
b.为Student表中的Birth字段添加一个约束,规定生日应小于入学时间。
addconstraintbirth_date
check(Entrance_date>
Birth)
c.禁用(a)中实施的Check约束
altertableStudent
NOCHECKCONSTRAINTsno_num
d.重新启用Check约束
CHECKCONSTRAINTsno_num
e.删除(a)所设置check约束
dropCONSTRAINTsno_num
f.将Student表中的classno字段设置为允许空。
altercolumnclassnochar(3)null
g.为SC表中的Sno,Cno添加外键约束,约束名自取;
并允许级联删除与级联更新。
若已存在外键约束,请先删除。
①、首先查看SC表中Sno和Cno有无外键约束
sp_helpconstraintSC
②、由上图已知,SC中Sno存在外键约束,则删除
altertableSC
dropconstraintFK_SC_Student
3、添加Sno和Cno的外键约束
addconstraintFK_SC_Studentforeignkey(Sno)
referencesStudent(Sno)
onupdatecascade
ondeletecascade
addconstraintFK_SC_Courseforeignkey(Cno)
referencesCourse(Cno)
h.为Course表中的Cname字段添加唯一性约束。
altertableCourse
addconstraintAK_Cnameunique(Cname)
2、默认值的实施
(1)通过SQLServerManagementStudio实现
a.为数据库Student_info创建一个默认的邮政编码,名称自取,值为:
200093。
b.将该默认值绑定到Student表中的Postcode列。
用企业管理器无法做出
c.将Postcode列上的绑定解除,并删除该默认值。
(2)用Transact-SQL语句重做
(1)中的(a)、(b)、(c)。
(a)、
createdefaultpostcode
as'
200093'
(b)、sp_bindefault'
postcode'
'
Student.Postcode'
(c)、sp_unbindefault'
dropdefaultpostcode
3、规则的实施
a.为数据库Student_info创建一个关于性别的取值规则,规则名自取,要求字段的取值仅能为’男’或’女’。
b.将该规则绑定到Student表的Sex字段上。
c.解除Student表的Sex列上的绑定,并删除该规则。
(2)使用Transact-SQL重做
(1)中的(a)、(b)、(c)。
withnocheck
addconstraintsex_checkcheck(sexin('
男'
女'
))
createruleSex_rule
as@sex='
or@sex='
(b)、sp_bindrule'
Sex_rule'
Student.Sex'
3、sp_unbindrule'
droprulesex_rule