《数据库原理与应用》实验七:数据库的完整性约束.docx
数据库原理与应用实验七:数据库的完整性约束数据库原理与应用实验七:数据库的完整性约束一、实验目的1 ,掌握主键约束、外键约束、唯一约束、默认约束及CHECK约束的用法;2 .掌握默认值约束的应用;二、实验环境已安装SQLServer2008的计算机;三、实验学时2学时四、实验要求1.熟悉数据库完整性相关概念及约束;3 .了解约束、默认值及规则;4 .完成实验报告;五、实验内容及步骤实验1:使用SQL语句完成下列操作1 ,将数据库S-T的表Course的Cno字段定义为主键,约束名称为PK_Cno;altertableCourseaddconstraintPK_Cnoprimarykey(Cno)2 .为表course中的字段Cname添加唯一值约束,约束名称为UQ_Cname;altertableCourseaddconstraintUQ_Cnameunique(Cname)3.将数据库S-T的表SC的Sno及Cno字段组合定义为主键,约束名称为PK_SCaltertableSCaddconstraintPK_SCprimarykey(SnozCno)4对于数据表SC的SnoxCno字段定义为外码,使之与表Student的主码Sno及表Course的主码Cno对应,实现如下参照完整性:1)删除Student表中记录的同时删除SC表中与该记录Sno字段值相同的记录;2)修改Student表某记录的Sno时,若SC表中与该字段值对应的有若干条记录,则拒绝修改;3)修改Course表Cno字段值时,该字段在SC表中的对应值也应修改;4)删除Course表一条记录时,若该字段在在SC表中存在,则删除该字段对应的记录;5)向SC表添加记录时,如果该记录的Sno字段的值在Student中不存在,则拒绝插入;altertableSCaddconstraintFK_SCforeignkey(Sno)referencesStudent(Sno)ondeletecascadeonupdatenoaction,foreignkey(Cno)referencesCourse(Cno)ondeletecascadeonupdatecascadeg5,定义默认值约束,要求学生所在系Sdept默认值为,IS"altertableStudentaddconstraintDF_Sdeptdefault(,IS,)forSdept6,定义S-T数据库中Student表中学生年龄值在16-25范围内;altertablestudentaddconstraintCK_Sagecheck(Sagebetween16and25)7.定义S-T数据库中Student表中学生姓名长度在2-8之间;altertableStudentaddconstraintCK_Snamecheck(Ien(Sname)between2and8)8.定义S-T数据库中Student表中学生性别列中只能输入男或女,默认值为男altertableStudentaddconstraintCK_Ssexcheck(Ssexin('男'二女'),constraintDF_Ssexdefault。男')forSsex9,定义S-T数据库Student表中学生年龄值默认值为20;altertableStudentaddconstraintDF_Sagedefault20forSage10修改Student表学生的年龄值约束可以为15-30范围内;altertableStudentdropconstraintCK_SagegaltertableStudentaddconstraintCK_Sagecheck(Sage>=15andSage<=30)IL分别向S-T数据库的StUdent、SC、CoUrSe表中插入几条数据,检查约束效果。12.删除上述唯一值约束、外键约束及check约束;altertableCoursedropconstraintUQ_CnamegaltertableSCdropconstraintFK_SCgaltertableStudentdropconstraintCK_Sno,CK_Sname,CK_Ssex实验2:使用对象资源管理器完成下列操作1.新建数据库DEMO,并新建两张数据表StudentSpecialtyUSEmasterGOIFEXISTS(SELECT*FROMsysdatabasesWHEREname=,Demo,)DROPDATABASEDemoCREATEDATABASEDemoONPRIMARY(NAME=,Demo-dataFILENAME='D:projectDemo_data.mdfSIZE=3MB)1.OGON(NAME=DemoJog',FILENAME='D:projectDemo_log.ldf,SIZE=3MB)GOUSEDemoGOIFEXISTS(SELECT*FROMsysobjectsWHEREname="Student,)DROPTABLEStudentCREATETABLEStudent(SnointNOTNULL,-学号SnameVarChar(20),-学生姓名SsexChar(2),-性另(JSageintNOTNULL学生年龄SpecIdintNOTNULL专业号,外键MobileVarCharQ1),-电话号码Emailnvarchar(50),-邮箱Provincenvarchar(50)-来自哪个省份)GOUSEDemoGOIFEXISTS(SELECT*FROMsysobjectsWHEREname='Specialty,)DROPTABLESpecialtyCREATETABLESpecialty(SpecIdintPRIMARYKEYNOTNULLL专业号SpecNamevarchar(50)NOTNULL-专业名称)GO2、要求在对象资源管理器中对StUdem进行如下设置:(1)学号(SnO)为主键(2)姓名(Sname)非空(3)性S!)(Ssex)只能取男或女(4)年龄(Sname)在18-23(5)专业号(SpecId)为外键,专业号自动增长(LI)(6)电话(Mobile)是唯一的(7)邮箱(Email)必须含有符号(8)省份(Province)默认为河北(9)分别向Student.Specialty表中插入几条数据,检查约束效果。