第8章 SQL Server 2000数据库控制与维护

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

——数据库应用教程数据库的完整性控制数据库的安全性管理数据库备份与还原第8章SQLServer2000数据库控制与维护8.1.1数据完整性概述8.1.2使用约束实施数据完整性控制8.1.3使用规则实施数据完整性控制8.1数据库的完整性控制8.1.4使用默认值实施数据完整性控制8.1.5使用触发器实施数据完整性控制8.1.1数据完整性概述1.完整性的概念数据完整性是指数据的正确性、有效性、一致性和相容性。由于数据库是一个动态的集合,数据不断地被插入和被修改,因此由于主观或客观的原因,可能破坏数据库的数据完整性。2.破坏数据库的数据完整性的情况(1)无效的数据被添加到数据库中。如:某在教师管理系统中,输入的教师号不存在。(2)对数据库的修改不一致。如:在两个不同的表中,同一教师的系号不同。(3)将存在的数据修改为无效的数据。如:将某教师所在的系号修改为并不存在的系。8.1.1数据完整性概述3.完整性机制为了保证存放数据的完整性,DBMS应能对数据库进行数据完整性控制。在SQLServer2000中,提供了约束、默认值、规则、触发器等维护机制对数据完整性进行控制。4.完整性分类在SQLServer中,数据完整性分成四类:实体完整性、域完整性、参照完整性和用户自定义完整性。8.1.1数据完整性概述域完整性也可称为列完整性。域完整性要求向表中指定列输入的数据必须具有正确的数据类型、格式以及有效的数据范围。例如,在CollegeMIS数据库的SelectCourse表中,向Score(成绩)列输入数据时,不能出现字符,也不能输入小于0或大于100的数值。域完整性的控制方法主要有CHECK约束、外键约束、默认约束、默认值、非空定义、规则以及在创建表时设置的数据类型。实体完整性的控制方法主要有主键约束、惟一索引、惟一约束和指定IDENTITY属性。5.完整性控制方法参照完整性的控制方法主要有外键约束,有时利用触发器也可实现参照完整性控制。8.1.2使用约束实施数据完整性控制在SQLServer中,可通过约束来实施数据库的数据完整性控制,常用的约束有NOTNULL(非空)约束、CHECK(检查)约束、UNIQUE(惟一)约束、PRIMARYKEY(主键)约束、FOREIGNKEY(外键)约束和DEFAULT(默认)约束。1.约束的建立【格式】ALTERTABLEtable_nameADDCONSTRAINTconstraint_namePRIMARYKEY[CLUSTERED|NONCLUSTERED]{(column[,...n])}(1)主键约束的创建【功能】为table_name作为表名指定的表增加一个由constraint_name指定名称的主键约束。【例8-1】把CollegeMIS数据库中SelectCourse表中的主键pk_xuanke删除,然后重建。USECollegeMISGOALTERTABLESelectCourseDROPCONSTRAINTpk_xuankeGOALTERTABLESelectCourseADDCONSTRAINTpk_xuankePRIMARYKEY(StuNo,TeaNo,CourseNo)GO8.1.2使用约束实施数据完整性控制1.约束的建立【例8-2】为CollegeMIS数据库中的Department表的DepartName字段创建一个惟一约束,约束名为IX_DepartName。(2)惟一约束的创建—使用企业管理器创建惟一约束•在企业管理器中,定位到要设置惟一约束的表,即Department表,在其上单击右键,在出现的快捷菜单中选中“设计表”菜单项,打开表设计器。•在表设计器中,在某个字段上单击右键,从弹出的快捷菜单中选择“属性”选项,打开属性对话框,然后选择“索引/键”页标签(或在快捷菜单中直接选择“索引/键”菜单项);将会出现“属性”窗口的“索引/键”页。在该页中,单击“新建”按钮,然后在“索引名”文本框输入惟一约束名称IX_DepartName,再从列名选项的下拉列表框中选择字段名称DepartName,最后选择“创建UNIQUE”复选框和“约束”单选框。8.1.2使用约束实施数据完整性控制1.约束的建立【格式】ALTERTABLEtable_nameADDCONSTRAINTconstraint_nameUNIQUE[CLUSTERED|NONCLUSTERED]{(column[,...n])}(2)惟一约束的创建—使用Transact-SQL语句【功能】为table_name作为表名指定的表增加一个由constraint_name指定名称的惟一约束。说明:惟一约束默认的索引类型为NONCLUSTERED。8.1.2使用约束实施数据完整性控制1.约束的建立【例8-3】通过Transact-SQL语句为CollegeMIS数据库中的Department表的Telephone字段创建一个惟一约束,约束名为IX_Telephone。(2)惟一约束的创建—使用Transact-SQL语句USECollegeMISGOALTERTABLEDepartmentADDCONSTRAINTIX_TelphoneUNIQUE(Telephone)GO8.1.2使用约束实施数据完整性控制1.约束的建立【例8-4】为CollegeMIS数据库中的Student表的Grade字段创建一个检查约束,约束名为CK_Grade。检查条件为Grade的值必须在1~4之间。(3)检查约束的创建——使用企业管理器•在表设计器“属性”对话框的“Check约束”页单击“新建”按钮,然后在“约束表达式”下面的编辑框中输入约束表达式“([Grade]=1and[Grade]=4)”,在“约束名”后面的文本框输入约束名称“CK_Grade”,选定的约束名称自动变为“CK_Grade”8.1.2使用约束实施数据完整性控制1.约束的建立【格式】ALTERTABLEtable_nameADDCONSTRAINTconstraint_nameCHECK(logical_expression)(3)检查约束的创建—使用Transact-SQL语句【功能】为table_name作为表名指定的表增加一个由constraint_name指定名称的检查约束。说明:“logical_expression”是检查约束的检查条件,通常是一个关系表达式或逻辑表达式。8.1.2使用约束实施数据完整性控制1.约束的建立【例8-5】使用Transact-SQL语句,为CollegeMIS数据库中的Student表的Birthday字段创建一个检查约束,约束名为CK_Birthday。检查条件为Birthday字段的值必须小于当前日期。(3)检查约束的创建—使用Transact-SQL语句USECollegeMISGOALTERTABLEStudentADDCONSTRAINTCK_BirthdayCHECK(Birthday=GetDate())GO8.1.2使用约束实施数据完整性控制1.约束的建立【例8-6】为CollegeMIS数据库中的Student表的Sex字段创建一个默认约束,默认值为“男”。(4)默认约束的创建——使用企业管理器•在“表设计器”中单击Sex列名,在列的默认值属性中填入默认值'男'。然后单击工具栏上的“保存”按钮并退出表设计器。8.1.2使用约束实施数据完整性控制1.约束的建立【格式】ALTERTABLEtable_nameADDCONSTRAINTconstraint_nameDEFAULTconstant_expressionFORcolumn_name(4)默认约束的创建—使用Transact-SQL语句【功能】为table_name作为表名指定的表增加一个由constraint_name指定名称的默认约束。说明:“column_name”是要设置默认约束的列名,“constant_expression”是设置的默认值。8.1.2使用约束实施数据完整性控制1.约束的建立【例8-7】为CollegeMIS数据库中的Student表的Grade字段创建一个默认约束,约束名为DF_Grade,默认值为1。(4)默认约束的创建—使用Transact-SQL语句USECollegeMISGOALTERTABLEStudentADDCONSTRAINTDF_GradeDEFAULT1FORGradeGO8.1.2使用约束实施数据完整性控制1.约束的建立【例8-8】为CollegeMIS数据库中的Student表的创建一个外键约束,约束名为FK_Student_Class。约束对应的主键表为Class(引用的主键字段为ClassNo),本表(Student表)的外键字段为ClassNo。(5)外键约束的创建——使用企业管理器•打开表设计器。单击工具栏上的“管理关系”按钮,将会出现“属性”对话框的“关系”页。•单击“新建”按钮,在“关系名”后面的文本框中输入关系名“FK_Student_Class”,在“主键表”下面的下拉列表框中选中引用主键所在的表“Class”,并在其下的下拉式列表框中选中引用的主键“ClassNo”。在“外键表”下面的下拉列表框中选中外键所在的表“Student”,并在其下的下拉式列表框中选中外键“ClassNo”。•选择“级联更新相关的字段”和“级联删除相关的记录”两个复选框。8.1.2使用约束实施数据完整性控制1.约束的建立【格式】ALTERTABLEtable_nameADDCONSTRAINTconstraint_nameFOREIGNKEY(column_name[,...n])REFERENCESrel_table[(ref_column[,...n])][ONDELETE{CASCADE|NOACTION}][ONUPDATE{CASCADE|NOACTION}][NOTFORREPLICATION](5)外键约束的创建—使用Transact-SQL语句【功能】为由table_name作为表名指定的表创建一个由constraint_name作为约束名的外键约束。8.1.2使用约束实施数据完整性控制1.约束的建立【例8-9】为CollegeMIS数据库中的SelectCourse表的创建一个外键约束,约束名为FK_SelectCourse_Student。约束对应的主键表为Student(引用的主键字段为StuNo),本表(SelectCourse表)的外键字段为StuNo。并设置级联删除和级联更新。(6)默认约束的创建—使用Transact-SQL语句USECollegeMISGOALTERTABLESelectCourseADDCONSTRAINTFK_SelectCourse_StudentFOREIGNKEY(StuNo)REFERENCESStudent(StuNo)ONDELETECASCADEONUPDATECASCADEGO8.1.2使用约束实施数据完整性控制2.约束定义的查看在企业管理器中,使用表设计器可以查看主键约束、空值约束和默认值约束的定义。表设计器的“属性”窗口的各页,可以查看主键约束、惟一约束、外键约束和CHECK约束的定义。(1)使用企业管理器查看约束的定义(2)利用系统存储过程查看约束的定义系统存储过程sp_help可用来查看约束的名称、创建者、类型和创建时间等信息。[EXEC]sp_help约束名系统存储过程help_helptext可用来查看约束的定义文本。格式如下。[EXEC]sp_helptext约束名注意:只能查看当前数据库中约束的信息。8.1.2使用约束实施数据完整性控制3.删除约束使用企业管理器,在表设计器的窗口中,可以删除主键约束,去掉字段的默认值约束。在表设计器的“属性”窗口中,可以通过切换页,选择约束名称,单击“删除”按钮,分别删除主键约束、惟一约束、外键约束和CHECK约束。(1)使用企业管理器删除约束(2)使用T

1 / 81
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功