您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 人事档案/员工关系 > 第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
本文标题:第8章 SQL Server 2000数据库控制与维护
链接地址:https://www.777doc.com/doc-4073802 .html