《第6章 SQL Server 2000 数据完整性.ppt》由会员分享,可在线阅读,更多相关《第6章 SQL Server 2000 数据完整性.ppt(44页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第六章第六章 SQL Server 2000 SQL Server 2000 数据完整性数据完整性6.1完整性的概念完整性的概念6.2约束的类型约束的类型 6.3约束的创建约束的创建6.4查看约束的定义查看约束的定义6.5删除约束删除约束6.6使用规则使用规则6.7使用默认使用默认 6.8数据完整性强制选择方法数据完整性强制选择方法第六章第六章目录目录目录目录6.1完整性的概念完整性的概念1.实体完整性(实体完整性(EntityIntegrity)2.域完整性(域完整性(DomainIntegrity)3.参照完整性(参照完整性(ReferentialIntegrity)4.4.用户定义的完整
2、性(用户定义的完整性(User-definedIntegrity)数据完整性(数据完整性(DataIntegrity)是指数据的精是指数据的精确性(确性(Accuracy)和可靠性(和可靠性(Reliability)。)。它是应防止数据库中存在不符合语义规定的它是应防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。操作或错误信息而提出的。第六章第六章6.26.2约束的类型约束的类型1.NOTNULL指定不接受指定不接受NULL值的列值的列2.CHECK约束对可以放入列中的值进行限制,以约束对可以放入列中的值进行限
3、制,以强制执行域的完整性强制执行域的完整性3.UNIQUE约束在列集内强制执行值的唯一性约束在列集内强制执行值的唯一性4.PRIMARYKEY约束标识列或列集,这些列或列约束标识列或列集,这些列或列集的值唯一标识表中的行集的值唯一标识表中的行5.FOREIGNKEY约束标识表之间的关系。约束标识表之间的关系。6.DEFAULT约束为列填入默认值约束为列填入默认值6.36.3约束的创建约束的创建 6.3.16.3.1创建主键约束创建主键约束 6.3.26.3.2创建唯一约束创建唯一约束 6.3.36.3.3创建检查约束创建检查约束 6.3.46.3.4创建默认约束创建默认约束 6.3.56.3.
4、5创建外键约束创建外键约束第六章第六章6.3.16.3.1创建主键约束创建主键约束 1 1用企业管理器创建主键约束用企业管理器创建主键约束(1 1)打开)打开“企业管理器企业管理器”,依次展开,依次展开控制台根目录下的控制台根目录下的Microsoft SQL Microsoft SQL ServersServers、SQL ServerSQL Server组、服务器组、服务器(例如(例如locallocal)、)、数据库、数据库、studentstudent、表。这时在右方的表列表中显示出表。这时在右方的表列表中显示出studentstudent数据库中的所有表,包括数据库中的所有表,包括系
5、统表和用户表。系统表和用户表。第六章第六章(2 2)在表设计器中,选择需要设为)在表设计器中,选择需要设为主键的字段,如果需要选择多个字主键的字段,如果需要选择多个字段时,请按住段时,请按住CtrlCtrl再选择其他列。再选择其他列。(3 3)选择好后,用鼠标右击该字)选择好后,用鼠标右击该字段,从弹出的菜单中选择段,从弹出的菜单中选择“设置主设置主键键”如图如图6.26.2,(4 4)执行完命令后,在该列前面会)执行完命令后,在该列前面会出现钥匙图样,说明主键设置成功出现钥匙图样,说明主键设置成功 (5 5)设置完成主键后,关闭表设)设置完成主键后,关闭表设计器。计器。2.使用使用SQL语句
6、创建主键约束语句创建主键约束使用使用SQLSQL语句创建主键,可以用语句创建主键,可以用CREATE TABLECREATE TABLE命令在创建表的同时完成,也可以用命令在创建表的同时完成,也可以用ALTER ALTER TABLETABLE命令为已经存在的表创建主键约束,语命令为已经存在的表创建主键约束,语法格式如下:法格式如下:ALTER TABLE table_nameALTER TABLE table_nameADDADDCONSTRAINT constraint_nameCONSTRAINT constraint_namePRIMARY KEY PRIMARY KEY CLUSTE
7、RED|NONCLUSTEREDCLUSTERED|NONCLUSTERED(column,(column,n)n)第六章第六章其中:其中:l lconstraint_nameconstraint_name指指主键约束名称;主键约束名称;l lCLUSTEREDCLUSTERED表示在该表示在该列上建立聚集索引;列上建立聚集索引;l lNOCLUSTEREDNOCLUSTERED表示在表示在该列上建立非聚集索引。该列上建立非聚集索引。下面分别使用建表命令和修改表下面分别使用建表命令和修改表命令创建主键约束。命令创建主键约束。6.3.2创建唯一约束创建唯一约束1.1.使用企业管理器创建唯一约束使
8、用企业管理器创建唯一约束 2.2.(1 1)在企业管理器中,右击需要设置)在企业管理器中,右击需要设置唯一约束的表(本例为唯一约束的表(本例为“系部系部”表),表),在弹出的菜单中选择在弹出的菜单中选择“设计表设计表”,打,打开表设计器;开表设计器;3.3.(2 2)在表设计器中,右击需要设置)在表设计器中,右击需要设置为唯一约束的字段(本例为为唯一约束的字段(本例为“系部名系部名称称”),选择),选择“索引索引/键键”,如图,如图6.76.7,也可以直接单击工具栏中的,也可以直接单击工具栏中的“管理管理索引索引/键键”按钮进入按钮进入“索引索引/键键”属性属性对话框对话框 第六章第六章(3
9、3)在弹出的)在弹出的“索引索引/键键”属性对话框属性对话框中,选择中,选择“索引索引/键键”选项卡,单击选项卡,单击“新新建建”按钮,然后在按钮,然后在“索引名索引名”文本框中文本框中输入唯一约束的名称,再从列名选项下输入唯一约束的名称,再从列名选项下拉框中选择字段名称(本例为拉框中选择字段名称(本例为“系部名系部名称称”),最后选择),最后选择“创建创建UNIQUEUNIQUE”复选复选框和框和“约束约束”单选框,如图单选框,如图6.86.8。(4 4)单击)单击“关闭关闭”按钮,关闭对话框,按钮,关闭对话框,完成唯一约束的创建。这个时候,不只完成唯一约束的创建。这个时候,不只是该表的主键
10、必须为唯一,并且被设置是该表的主键必须为唯一,并且被设置成为唯一约束的字段同样必须为唯一。成为唯一约束的字段同样必须为唯一。2 2使用使用SQLSQL语句创建唯一约束语句创建唯一约束为已经存在的表创建唯一约束,其语为已经存在的表创建唯一约束,其语法格式如下:法格式如下:ALTER TABLE table_nameALTER TABLE table_nameADDADDCONSTRAINT constraint_nameCONSTRAINT constraint_nameUNIQUE UNIQUE CLUSTERED|NONCLUSTEREDCLUSTERED|NONCLUSTERED(colu
11、mn,n)(column,n)第六章第六章其中:其中:table_nametable_name为需要创建唯为需要创建唯一约束的表名称;一约束的表名称;l l constraint_name constraint_name为唯一为唯一约束的名称;约束的名称;columncolumn是表中需要创建是表中需要创建唯一约束的字段名称唯一约束的字段名称 6.3.36.3.3创建检查约束创建检查约束 (1 1)进入企业管理器控制台,找到需)进入企业管理器控制台,找到需要创建检查约束的表,右击该表,选要创建检查约束的表,右击该表,选择择“设计表设计表”,进入表设计器,我们,进入表设计器,我们这里选择这里选择
12、“课程课程”表;表;(2 2)在表设计器中右击需要创建检查)在表设计器中右击需要创建检查约束的字段,这里为约束的字段,这里为“学分学分”字段,字段,在弹出的菜单中选择在弹出的菜单中选择“CHECK CHECK 约束约束”,如图如图6.106.10;第六章第六章(3 3)在对话框中,单击)在对话框中,单击“新建新建”按钮,然后在按钮,然后在“约束名约束名”文本文本框中输入检查约束名称,在约束框中输入检查约束名称,在约束表达式中输入约束条件,我们这表达式中输入约束条件,我们这里输入里输入“(学分学分=1=1 AND AND 学分学分=7)=1950/01/011950/01/01 AND AND
13、csrqcsrq=getdategetdate()()”表达表达式,该表达式必须是以式,该表达式必须是以 开头开头的局部变量,用来表示在插入的局部变量,用来表示在插入或修改记录时所提供的值。如或修改记录时所提供的值。如图图6.176.17;(4 4)单击确定,关闭对话框。)单击确定,关闭对话框。2 2.规则的绑定和解绑规则的绑定和解绑将创建好的规则绑定到某列或将规则将创建好的规则绑定到某列或将规则从某列解绑都是在从某列解绑都是在“规则属性规则属性”对话对话框中完成的,步骤如下:框中完成的,步骤如下:(1 1)打开企业管理器,展开到数据库)打开企业管理器,展开到数据库节点;节点;(2 2)单击规
14、则图表,在右方打开规则)单击规则图表,在右方打开规则详细信息,右击需要绑定或解绑的规详细信息,右击需要绑定或解绑的规则,在弹出的快捷菜单中选择则,在弹出的快捷菜单中选择“属性属性”打开属性对话框,如图打开属性对话框,如图6.186.18;第六章第六章(3 3)在该对话框中,如果要将规则绑)在该对话框中,如果要将规则绑定到列上,那么单击定到列上,那么单击“绑定列绑定列”按钮,按钮,打开打开“将规则绑定到列将规则绑定到列”对话框;对话框;(4 4)在该对话框中,)在该对话框中,“表表”的下拉框的下拉框中选择需要绑定的表,在中选择需要绑定的表,在“未绑定的列未绑定的列”列表中选择需要绑定的列,然后单
15、击列表中选择需要绑定的列,然后单击“添加添加”按钮,将该列添加到按钮,将该列添加到“绑定列绑定列”列表中。如果要解绑规则,则在列表中。如果要解绑规则,则在“绑绑定列定列”中选择列后,单击中选择列后,单击“删除删除”按钮。按钮。点击点击“确定确定”按钮关闭对话框。如图按钮关闭对话框。如图6.196.19;(5 5)如果要将规则绑定到拥护定义的)如果要将规则绑定到拥护定义的数据类型上,可以单击数据类型上,可以单击“绑定绑定UDTUDT”按按钮。钮。3.3.删除规则删除规则在企业管理器中删除规则非常简便,步骤如在企业管理器中删除规则非常简便,步骤如下:下:(1 1)打开企业管理器,找到数据库下的规)
16、打开企业管理器,找到数据库下的规则节点;则节点;(2 2)单击)单击“规则规则”图标,在右方的详细列图标,在右方的详细列表中,选择需要删除的规则,右击规则名称,表中,选择需要删除的规则,右击规则名称,在弹出的快捷菜单中选择在弹出的快捷菜单中选择“删除删除”命令,弹命令,弹出出“除去对象除去对象”对话框,如图对话框,如图6.206.20;(3 3)在对话框中单击)在对话框中单击“全部除去全部除去”按钮,按钮,删除所选规则。删除所选规则。第六章第六章6.76.7使用默认使用默认 默认(也称默认值、缺省值)是一种数据对默认(也称默认值、缺省值)是一种数据对象,它与象,它与DEFAULTDEFAULT
17、(默认)约束的作用相同,默认)约束的作用相同,也是当向表中输入数据的时候,没有为列输也是当向表中输入数据的时候,没有为列输入值的时候,系统自动给该列赋一个入值的时候,系统自动给该列赋一个“默认默认值值”。与。与DEFAULTDEFAULT约束不同的是默认对象的约束不同的是默认对象的定义独立于表,类似规则,可以通过定义一定义独立于表,类似规则,可以通过定义一次,多次应用任意表的任意列,也可以应用次,多次应用任意表的任意列,也可以应用于用户定义数据类型。于用户定义数据类型。默认对象的使用方法类似规则,同样包括创默认对象的使用方法类似规则,同样包括创建、绑定、解绑和删除。这些操作可以在查建、绑定、解
18、绑和删除。这些操作可以在查询分析器中完成,也可以通过企业管理器来询分析器中完成,也可以通过企业管理器来管理。管理。第六章第六章6.7.16.7.1使用使用SQLSQL语句管理默认值语句管理默认值 1.1.创建默认值创建默认值 2.2.CREATE DEFAULT default_nameCREATE DEFAULT default_name3.3.AS default_description AS default_description 4.4.2 2.绑定默认值绑定默认值 5.5.EXECUTE sp_EXECUTE sp_bindefaultbindefault 默默认名称认名称,表名表名
19、.字段名字段名|自定义数据类型名自定义数据类型名 第六章第六章3.3.解绑默认值解绑默认值 EXECUTE EXECUTE sp_sp_unbindefaultunbindefault 表名表名.字段名字段名|自定义数据类自定义数据类型名型名 4.4.删除默认值删除默认值 DROP DEFAULT DROP DEFAULT default_name,default_name,nn6.7.26.7.2使用企业管理器管理默认值使用企业管理器管理默认值 在企业管理器中,管理默认值的方在企业管理器中,管理默认值的方法和管理规则的方法相似。法和管理规则的方法相似。下面简要介绍在企业管理器中管理下面简要介
20、绍在企业管理器中管理默认值的方法。展开控制台节点,默认值的方法。展开控制台节点,选择默认值节点,右击节点,在快选择默认值节点,右击节点,在快捷菜单中选择捷菜单中选择“新建默认新建默认”,在弹,在弹出的对话框中输入默认值名称和默出的对话框中输入默认值名称和默认值,关闭对话框。认值,关闭对话框。第六章第六章将默认值绑定到列也需要进入将默认值绑定到列也需要进入“默认属性默认属性”对话框,在其中对话框,在其中选择选择“绑定列绑定列”按钮或按钮或“绑定绑定UDTUDT”将默认绑定或解班到列将默认绑定或解班到列或用户自定义数据类型上。或用户自定义数据类型上。在默认值详细列表中,右击选在默认值详细列表中,右
21、击选择择“删除删除”命令后在弹出的对命令后在弹出的对话框中选择话框中选择“全部除去全部除去”可删可删除默认值。除默认值。6.86.8数据完整性强制选择方法数据完整性强制选择方法 实现数据完整性,实现数据完整性,SQL Server SQL Server 20002000提供了许多方法。除了本章介绍提供了许多方法。除了本章介绍的约束、默认和规则外,还有前面章的约束、默认和规则外,还有前面章节介绍的数据类型和后面需要学习的节介绍的数据类型和后面需要学习的功能强大的触发器等。对于某一问题功能强大的触发器等。对于某一问题可能存在多种解决办法,我们该如何可能存在多种解决办法,我们该如何选择呢?我们应该根
22、据系统的实际要选择呢?我们应该根据系统的实际要求,从数据完整性方法实现的功能和求,从数据完整性方法实现的功能和开销综合考虑。开销综合考虑。下面我们来简单讨论一下各种实现数下面我们来简单讨论一下各种实现数据完整性的方法的功能和性能开销。据完整性的方法的功能和性能开销。第六章第六章触发器功能强大,既可以维护基础的数触发器功能强大,既可以维护基础的数据完整性逻辑,又可以维护复杂的完整据完整性逻辑,又可以维护复杂的完整性逻辑,如多表的级联操作,但是开销性逻辑,如多表的级联操作,但是开销较高;约束的功能比触发器弱,但开销较高;约束的功能比触发器弱,但开销低;默认和规则功能最弱,开销也低;低;默认和规则功能最弱,开销也低;数据类型提供最低级别的数据完整性功数据类型提供最低级别的数据完整性功能,开销也是最低的。能,开销也是最低的。在选择完整性方案时,我们应该遵循在在选择完整性方案时,我们应该遵循在完成同样任务的条件下,选择开销低的完成同样任务的条件下,选择开销低的方案解决。也就是说,能用约束完成的方案解决。也就是说,能用约束完成的功能,就不用触发器完成;能用数据类功能,就不用触发器完成;能用数据类型完成的功能,就不用规则来完成。型完成的功能,就不用规则来完成。谢谢各位同学谢谢各位同学!返回主页第六章第六章