版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、6.1完整性的概念完整性的概念 6.2 约束的类型约束的类型 6.3 约束的创建约束的创建 6.4 查看约束的定义查看约束的定义 6.5 删除约束删除约束 6.6 使用规则使用规则 6.7 使用默认使用默认 6.8 数据完整性强制选择方法数据完整性强制选择方法 6.9 应应 用用 举举 例例6.9 应应 用用 举举 例例 第5章介绍了数据库的基本操作,对于数据的添加、删除、修改操作都可能对数据库中的数据造成破坏或出现相关数据不一致的现象。要保证数据的正确无误和相关数据的一致性,除了认真地进行操作外,更重要的是数据库系统本身需要提供维护机制。 数据库中的数据是从外界输入的,由于种种原因,可能会输
2、入无效或错误的信息。保证输入的数据符合规定,是数据库系统尤其是多用户的关系数据库系统首要关注的问题。数据完整性因此而提出。本章将讲述数据完整性的概念及其在SQL Server中的实现方法。6.1完整性的概念完整性的概念 SQL Server 2005文档中将数据完整性解释为:存储在数据库中的所有数据值均正确。如果数据库中存储有不正确的数据值,则该数据库称为已丧失数据完整性。数据完整性(data integrity)是指数据的精确性(accuracy)和可靠性(reliability)。它是应防止数据库中存在不符合语义规定的数据和防止因错误信息的输入/输出造成无效操作或错误信息而提出的。例如:在
3、student数据库中,“学生”表中有“学号”、“姓名”、“性别”、“出生日期”、“入学时间”、“班级代码”、“系部代码”和“专业代码”等8个字段,各个字段的数据类型都有规定。在这张表中,每个学生(也就是每条记录)“学号”字段不能有重复,也就是说每个学生都应该有唯一的学号,不能有两个或多个学生的学号相同;“性别”字段中的数据只能为“男”或“女”,不能有其他数据填入;“出生日期”、“入学时间”、“班级代码”、“系部代码”和“专业代码”字段必须有值,不能为空。这时,由于数据的错误或应用程序的错误就会导致数据的不正确性和不符合规定的现象发生。研究数据完整性就是为了避免这样的问题产生。数据完整性分为四
4、类:实体完整性(entity integrity)、域完整性(domain integrity)、参照完整性(referential integrity)、用户定义的完整性(user-defined integrity)。1实体完整性实体完整性实体完整性(entity integrity)规定表中的每一行在表中是唯一的实体。也可以这样说,在表中不能存在完全相同的记录,而且每条记录都要有一个非空并且不重复的主键。主键的存在保证了任何记录都是不重复的,可以区分,在对数据进行操作时才可以和其他记录区分开。例如,要对“学生”表中姓名为“张斌”的记录进行更改,针对更新这个操作只能针对“张斌”这个人(这条
5、记录),那么选择查询或操作的时候就只能靠学号的唯一性来判断,而其他字段的内容可能与其他记录产生重复。表中定义的PRIMARY KEY和IDENTITY约束就是实体完整性的体现。2域完整性域完整性域完整性(domain integrity)是指数据库表中的字段必须满足某种特定的数据类型或约束。其中,约束又包括取值范围、精度等规定。例如,在“学生”表中,“学号”字段内容只能填入规定长度的学号,而“性别”字段只能填入“男”或“女”,“出生日期”和“入学时间”只能填入日期类型数据。表中的CHECK、FOREIGN KEY 约束和DEFAULT、NOT NULL定义都属于域完整性的范畴。3参照完整性参照
6、完整性参照完整性(referential integrity)是指两个表的主键和外键的数据应对应一致。它确保了有主键的表中对应其他表的外键的存在,即保证了表之间数据的一致性,防止了数据丢失或无意义的数据在数据库中扩散。参照完整性是建立在外键和主键之间或外键和唯一性关键字之间的关系上的。例如,在“学生”表中的“系部代码”的值必须是在“系部”表中存在的值。在SQL Server 2005中,参照完整性作用表现在如下三个方面:(1)禁止在从表中插入包含主表中不存在的关键字的数据行。(2)禁止会导致从表中相应值孤立的主表中的外键值改变。(3)禁止删除在从表中有对应记录的主表记录。4用户定义的完整性用户
7、定义的完整性不同的关系数据库系统根据其应用环境的不同,往往还需要一些特殊的约束条件。用户定义的完整性(user-defined integrity)即是针对某个特定关系数据库的约束条件,它反映了某一具体应用所涉及的数据必须满足的语义要求。SQL Server 2005提供了定义和检验这类完整性的机制,以便用统一的系统方法来处理它们,而不是用应用程序来承担这一功能。其他的完整性类型都支持用户定义的完整性。6.26.2约束的类型约束的类型 微软文档中将约束解释为:约束使您得以定义Microsoft SQL Server 2005自动强制数据库完整性的方式。约束定义关于字段中允许值的规则,是强制完整
8、性的标准机制。使用约束优先于使用触发器、规则和默认值。查询优化器也使用约束定义生成高性能的查询执行计划。约束就是一种强制性的规定,在SQL Server 2005中提供的约束是通过定义字段的取值规则来维护数据完整性的。严格说来,在SQL Server 2005中支持六类约束:NOT NULL(非空)约束、CHECK(检查)约束、UNIQUE(唯一)约束、PRIMARY KEY(主键)约束.FOREIGN KEY(外键)约束和DEFAULT(默认)约束。下面分别进行介绍。1NOT NULL指定不接受指定不接受NULL值的列值的列非空约束用来强制数据的域完整性,它用来设定某列值不能为空。例如,在“
9、学生”表中,“学号”字段值不能为空,在插入记录的时候这个字段里必须有值存在。2CHECK约束对可以放入列中的值进行限制,以强约束对可以放入列中的值进行限制,以强制执行域的完整性制执行域的完整性CHECK约束指定应用于列中输入的所有值的布尔(取值为TRUE或FALSE)搜索条件,拒绝所有不取值为TRUE的值。可以为每列指定多个CHECK约束。 3UNIQUE约束在列集内强制执行值的唯一性约束在列集内强制执行值的唯一性对于UNIQUE约束中的列,表中不允许有两行包含相同的非空值。主键也强制执行唯一性,但主键不允许空值。主键约束优先于唯一索引。例如,在“系部”表中可以将“系部代码”作为主键,用来保证
10、记录的唯一性 。4PRIMARY KEY约束标识列或列集,这些列或列约束标识列或列集,这些列或列集的值唯一标识表中的行集的值唯一标识表中的行在一个表中,不能有两行包含相同的主键值。不能在主键内的任何列中输入空值。在数据库中“空”是特殊值,代表不同于空白和 0 值的未知值。建议使用一个小的整数列作为主键。每个表都应有一个主键。例如,要在“学生”表中区分每一个学生,区分的唯一标志不是姓名,也不是出生日期,更不能是班级,而是每个学生唯一对应的“学号”值,“学号”在表中就应该设为主键。5FOREIGN KEY约束标识表之间的关系约束标识表之间的关系外键是在一个数据表中的一个列或多个列,它不应该是该表的
11、主键,但是它可以是其他表的主键。一个表的外键指向另一个表的候选键。当外键值没有候选键时,外键可防止操作保留带外键值的行。例如,在“学生”表中,“系部代码”字段的值不是该表的主键,而它却是“系部”表的主键。利用外键可以维护数据表之间的关系。 6 6DEFAULTDEFAULT约束为列填入默认值约束为列填入默认值利用默认值可以为未填入值的列强制填入一个默认情况下的值。例如,对“学生”表中的性别列,如未填入任何值则可把性别默认填入“男”。约束可以是列约束或表约束:约束被指定为列定义的一部分,并且仅适用于那个列。约束的声明与列的定义无关,可以适用于表中一个以上的列。 当一个约束中必须包含一个以上的列时
12、,必须使用表约束。 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.5创建外键约束创建外键约束 6.3.16.3.1创建主键约束创建主键约束 1用对象资源管理器创建主键约束用对象资源管理器创建主键约束下面以下面以“学生学生”表为例,介绍使用对象资源管理器创表为例,介绍使用对象资源管理器创建主键约束的操作步骤:建主键约束的操作步骤:(1 1)在)在“对象资源管理器对象资源管理器”窗格中依次展开窗格中依次展开“服
13、务服务器器”、“数据库数据库”、“student”student”、“表表”结点。结点。找到需要修改的表名(这里为找到需要修改的表名(这里为“学生学生”表),右表),右击该表,在弹出的快捷菜单中选择击该表,在弹出的快捷菜单中选择“修改修改”命令,命令,如图如图6-16-1所示。所示。(2 2)在)在“表设计器表设计器”窗口中,选择需要设为主键的窗口中,选择需要设为主键的字段,如果需要选择多个字段,可按住【字段,如果需要选择多个字段,可按住【CtrlCtrl】键再选择其他列键再选择其他列。 (3)选择好后,右击该字段,从弹出的快捷菜单中选择“设置主键”命令,如图6-2所示,或单击工具栏中的“设置
14、主键”按钮 。 图6-2 选择“设置主键”命令 图6-1 选择“修改”命令 执行完命令后,在该列前面会出现钥匙图样,说明主键设置成功,如图6-3所示。 图6-3 主键设置成功(5)设置完成主键后,关闭“表设计器”窗口。注意:因为主键是唯一的,所以表中的列原来有数据,并且数据有重复,那么在设置主键时会出现错误。如图6-4所示,学号第一条和第四条记录相同。图6-4 数据重复在设置主键的时候会出现如图6-5所示的错误提示。图6-5 错误提示 2. 2. 使用使用SQLSQL语句创建主键约束语句创建主键约束使用SQL语句创建主键,可以用CREATE TABLE命令在创建表的同时完成,也可以用ALTER
15、 TABLE命令为已经存在的表创建主键约束,语法格式如下:ALTER TABLE table_nameADDCONSTRAINT constraint_namePRIMARY KEY CLUSTERED|NONCLUSTERED(column,n)其中: constraint_name指主键约束名称; CLUSTERED表示在该列上建立聚集索引; NOCLUSTERED表示在该列上建立非聚集索引。下面分别使用建表命令和修改表命令创建主键约束。 【例6.1】在student数据库中,建立一个“教材”表,将“教材代码”设置为主键。“教材”表结构如表6-1所示。表6-1 “教材”表结构字 段 名 称
16、 数 据 类 型 字 段 长 度 是 否 为 空 教材代码 char 9否 教材名称 varchar 30是 书号 char 12是 出版社 varchar 30是 版本 char 10是 单价 tinyint 是 代码如下:USE studentGOCREATE TABLE 教材(教材代码 char(9) CONSTRAINT pk_jcdm PRIMARY KEY, 教材名称 varchar(30), 书号 char(12), 出版社 varchar(30), 版本 char(10), 单价 tinyint)GO【例6.2】如果在创建“教材”表时没有指定主键,可在创建好后的“教材”表中,将
17、“教材代码”设置为主键。代码如下:USE studentGOALTER TABLE 教材ADD CONSTRAINT pk_jcdmPRIMARY KEY CLUSTERED (教材代码)GO在对象资源管理器中可以看到如图6-6所示的主键创建好的效果。图6-6 主键已创建好 6.3.2创建唯一约束创建唯一约束 在一张数据表中,有时除主键需要具有唯一性外,在一张数据表中,有时除主键需要具有唯一性外,还有其他列也需要具有唯一性。例如,在还有其他列也需要具有唯一性。例如,在“系系部部”表中,主键为表中,主键为“系部代码系部代码”,但是另外一,但是另外一个字段个字段“系部名称系部名称”虽不是主键,也需
18、保证它虽不是主键,也需保证它的唯一性,这时就需要创建表中的唯一约束。的唯一性,这时就需要创建表中的唯一约束。1 1使用对象资源管理器创建唯一约束使用对象资源管理器创建唯一约束下面以下面以“系部系部”表为例,为表为例,为“系部名称系部名称”字段创建字段创建唯一约束。操作步骤如下:唯一约束。操作步骤如下:(1 1)在)在“对象资源管理器对象资源管理器”窗格中,右击需要设窗格中,右击需要设置唯一约束的表(本例为置唯一约束的表(本例为“系部系部”表),在弹表),在弹出的快捷菜单中选择出的快捷菜单中选择“修改修改”命令,打开命令,打开“表表设计器设计器”窗口。窗口。(2)在“表设计器”窗口中,右击需要设
19、置为唯一约束的字段(本例为“系部名称”字段),在弹出的快捷菜单中选择“索引/键”命令,如图6-7所示,也可以直接单击工具栏中的“管理索引和键”按钮,打开“索引/键”对话框,如图6-8所示。图6-7 选择“索引/键”命令图6-8 “索引/键”对话框(3)在打开的“索引/键”对话框中,单击“添加”按钮,结果如图6-9所示。图6-9 单击“添加”按钮创建唯一约束(4)设置好相关选项后,单击“关闭”按钮,完成唯一约束的创建。这时,不只是该表的主键必须为唯一,并且被设置为唯一约束的字段同样也必须为唯一。2使用SQL语句创建唯一约束 为已经存在的表创建唯一约束,其语法格式如下: ALTER TABLE t
20、able_nameADDCONSTRAINT constraint_nameUNIQUE CLUSTERED|NONCLUSTERED(column,n)其中: table_name为需要创建唯一约束的表名称; constraint_name为唯一约束的名称; column是表中需要创建唯一约束的字段名称 【例6.3】在student数据库的“教材”表中,为“书号”字段创建唯一约束。代码如下:USE studentGOALTER TABLE 教材ADD CONSTRAINT uk_shUNIQUE NONCLUSTERED (书号)GO执行完上述SQL语句后,可以打开“索引/键”对话框重新查看
21、该表的唯一约束,如图6-10所示。图6-10 表的唯一约束可以看到,刚才的SQL语句起了作用,将书号字段创建了一个名称为uk_sh的唯一约束。6.3.36.3.3创建检查约束创建检查约束 检查约束对输入的数据的值做检查,可以限定数据输入,从而维护数据的域完整性。例如,对“课程”表中“学分”字段的内容,只允许为17分,不允许小于1分的学分和大于7分的学分出现。可以利用对象资源管理器或SQL语句来创建检查约束。1使用对象资源管理器创建检查约束 下面以“课程”表为例,介绍如何对“学分”字段内容创建检查约束。操作步骤如下:(1)在“对象资源管理器”窗格中,右击需要设置唯一约束的表(本例为“课程”表),
22、在弹出的快捷菜单中选择“修改”命令,打开“表设计器”窗口。(2)在“表设计器”窗口中右击需要创建检查约束的字段(本例为“学分”字段),在弹出的快捷菜单中选择“CHECK约束”命令,如图6-11所示,打开“CHECK约束”对话框。 图6-11 选择“CHECK约束”命令 (3)在“CHECK约束”对话框中,单击“添加”按钮,然后在“(名称)”文本框中输入检查约束名称,在约束“表达式”文本框中输入约束条件,这里输入“(学分=1 AND 学分01/01/1978 AND 入学时间GETDATE()GO 6.3.46.3.4创建默认约束创建默认约束 在用户输入某些数据时,希望一些数据在没有特例的情况下
23、被自动输入,例如,学生的注册日期应该是数据录入的当天日期;学生的修学年限是固定的值;学生性别默认是“男”等情况,这个时候需要对数据表创建默认约束。下面分别用例子说明如何在对象资源管理器中和利用SQL语句创建默认约束。1使用对象资源管理器创建默认约束下面以“学生”表为例,在“性别”字段创建默认为“男”的默认约束。操作步骤如下:(1)在“对象资源管理器”窗格中,右击需要创建默认约束的表(这里为“学生”表),在弹出的快捷菜单中选择“修改”命令,打开“表设计器”窗口。(2)选择需要创建默认约束的字段(这里为“性别”字段),然后在下方的“列属性”选项卡中的“默认值或绑定”文本框中输入默认值,本例为选择“
24、性别”字段,在默认值中输入“男”,如图6-13所示。 图6-13 输入默认值注意注意:单引号不需要输入,在表保存后,在单引号外还会自动生成一对小括号。(3)关闭“表设计器”窗口。 2. 2. 使用使用SQLSQL语句创建默认约束语句创建默认约束在创建表的同时,可以对创建的表中的字段创建默认约束,如例6.6。【例6.6】在student数据库中新建“学生注册”表,并将“注册时间”设置为当前日期。代码如下:USE studentGOCREATE TABLE 学生注册(注册编码 int PRIMARY KEY, 学号 char(12), 注册时间 datetime DEFAULT GETDATE()
25、, 学期 tinyint,)GO当然,使用SQL语句同样可以为已存在的表创建默认约束。其语法格式如下:ALTER TABLE table_nameADD CONSTRAINT constraint_nameDEFAULT constraint_expressionFOR column_name其中: table_name是需要创建默认约束的表名称。 constraint_name是默认约束名称。 constraint_expression是默认值。 FOR column_name是需要创建默认约束的字段名称。【例6.7】在student数据库中的“教师”表中,为“学历”字段创建默认值为“本科”
26、的默认约束。代码如下:USE studentGOALTER TABLE 教师ADD CONSTRAINT df_xlDEFAULT 本科 FOR 学历GO6.3.56.3.5创建外键约束创建外键约束 外键是用来维护表与表之间对应唯一关系的一种方法。可以利用对象资源管理器或SQL语句来创建外键约束。1使用对象资源管理器创建外键约束 下面以“教师”表为例,为“系部代码”创建外键约束。操作步骤如下: (1)在“对象资源管理器”窗格中,右击需要创建外键约束的表(这里为“教师”表),在弹出的快捷菜单中选择“修改”命令,打开“表设计器”窗口。 (2)选择需要创建外键约束的字段(这里为“系部代码”字段),单
27、击工具栏中的“关系”按钮,或右击该字段,在弹出的快捷菜单中选择“关系”命令,打开“外键关系”对话框,如图6-14所示。 图6-14 “外键关系”对话框(3)在“外键关系”对话框中,单击“添加”按钮,然后单击“表和列规范”的按钮,打开“表和列”对话框。在“主键表”下拉列表中选择“系部”表,在“外键表”的下拉列表框中选择“教师”表,分别在“主键表”和“外键表”的下面选择“系部代码”字段,如图6-15所示。 图6-15 “表和列”对话框(4)单击“确定”按钮,然后在“外键关系”对话框中进行相关设置后单击“关闭”按钮即可。2. 2. 使用使用SQLSQL语句创建外键约束语句创建外键约束使用SQL语句创
28、建外键约束的语法格式为: ALTER TABLE table_name ADD CONTRAINT constraint_name FOREIGN KEY(column_name,n) REFERENCES ref_table(ref_column_name,n)其中: table_name是需要创建外键约束的表名称。 constraint_name是外键约束名称。 【例6.8】在student数据库中的“班级”表中,为“专业代码”字段创建一个外键约束,从而保证输入有效的专业代码。代码如下:USE studentGOALTER TABLE 班级ADD CONSTRAINT fk_zydmFOR
29、EIGN KEY (专业代码)REFERENCES 专业(专业代码)6.46.4查看约束的定义查看约束的定义 对于创建好的约束,根据实际需要可以查看其定义信息。SQL Server 2005提供了多种查看约束信息的方法,经常使用的有利用对象资源管理器和系统存储过程。 1利用对象资源管理器查看约束信息利用对象资源管理器查看约束信息 使用对象资源管理器查看约束信息的操作步骤如下:(1)在“对象资源管理器”窗格中,右击要查看约束的表,在弹出的快捷菜单中选择“修改”命令,打开“表设计器”窗口。(2)右击该表,在弹出的快捷菜单中分别选择“关系”、“索引/键”、“CHECK约束”等命令查看约束信息,如图6
30、-16所示。 图6-16 查看约束信息菜单2利用存储过程查看约束信息利用存储过程查看约束信息存储过程sp_helptext是用来查看约束的一个系统提供的存储过程,可以通过查询分析器来查看约束的名称、创建者、类型和创建时间。其语法格式为:EXEC sp_help 约束名称如果该约束有具体的定义和文本,那么可以用sp_helptext来查看。其语法格式为:EXEC sp_helptext 约束名称【例6.9】使用系统存储过程查看student数据库中定义的入学时间(名称为ck_rxsj)的约束信息和文本信息。代码如下,结果如图6-17所示。USE studentGOEXEC sp_help ck_
31、rxsjGOUSE studentGOEXEC sp_helptext ck_rxsjGO6.56.5删除约束删除约束 前面讲了约束如何建立,约束在建立后可能根据实际情况需要删除,可以使用对象资源管理器来删除约束,也可以使用SQL语句来删除约束。1用对象资源管理器来删除表约束 使用对象资源管理器删除约束非常方便,正如在建立约束时一样,只需要在“表设计器”窗口中,将如图6-2所示的“设置主键”前的复选框取消即可删除主键约束,或删除默认值以删除默认约束;如图6-8所示,单击“删除”按钮删除唯一约束;如图6-12所示,单击“删除”按钮删除检查约束;如图6-14所示,单击“删除”按钮删除外键约束。2使
32、用DROP命令删除表约束 利用SQL语句也可以方便地删除一个或多个约束。其语法格式如下: ALTER TABLE table_name DROP CONSTRAINT constraint_name,n【例6.10】删除“课程”表中的入学时间(ck_rxsj)约束。代码如下:USE studentGOALTER TABLE 学生DROP CONSTRAINT ck_rxsjGO 6.66.6使用规则使用规则 规则类似于CHECK约束,是用来限制数据字段的输入值的范围,实现强制数据的域完整性。但规则不同于CHECK约束,在前面用到的CHECK约束可以针对一个列应用多个CHECK约束,但一个列不能
33、应用多个规则;规则需要被单独创建,而CHECK约束在创建表的同时可以一起创建;规则比CHECK约束更复杂功能更强大;规则只需要创建一次,以后可以多次应用,可以应用于多个表多个列,还可以应用到用户定义的数据类型上。 使用规则包括规则的创建、绑定、解绑和删除。可以在查询分析器中用SQL语句完成。1创建规则 规则作为一种数据库对象,在使用前必须被创建。创建规则的SQL命令是CREATE RULE。其语法格式如下: CREATE RULE rule_name AS condition_expression其中: rule_name是规则的名称,命名必须符合SQL Server 2005的命名规则。 c
34、ondition_expression是条件表达式。2绑定规则要使创建好的规则作用到指定的列或表等,还必须将规则绑定到列或用户定义的数据类型上才能够起作用。在查询分析器中,可以利用系统存储过程将规则绑定到字段或用户定义的数据类型上。其语法格式如下:EXECUTE sp_bindrule 规则名称,表名.字段名|自定义数据类型名【例6.11】创建一个xb_rule规则,将它绑定到“学生”表的“性别”字段,保证输入数据只能为“男”或“女”。代码如下:USE studentGOCREATE RULE xb_ruleASxb in(男,女)GOEXEC sp_bindrule xb_rule,学生.性
35、别GO 3解绑规则如果字段已经不再需要规则限制输入了,那么必须把已经绑定了的规则去掉,这就是解绑规则。在查询分析器中,同样用存储过程来完成解绑操作。其语法格式如下:EXECUTE sp_unbindrule 表名.字段名|自定义数据类型名4删除规则如果规则已经没有用了,那么可以将其删除。在删除前应先对规则进行解绑,当规则已经不再作用于任何表或字段等时,则可以用DROP RULE删除一个或多个规则。其语法格式如下: DROP RULE 规则名称,n【例6.12】从student数据库中删除xb_rule规则。代码和结果如图6-18所示。 图6-18 删除xb_rule规则6.76.7使用默认使用
36、默认 默认(也称默认值、缺省值)是一种数据对象,它与DEFAULT(默认)约束的作用相同,也是当向表中输入数据的时候,没有为列输入值的时候,系统自动给该列赋一个“默认值”。与DEFAULT约束不同的是默认对象的定义独立于表,类似规则,可以通过定义一次,多次应用任意表的任意列,也可以应用于用户定义数据类型。 默认对象的使用方法类似于规则,同样包括创建、绑定、解绑和删除。这些操作可以在查询分析器中完成。 1创建默认值在查询分析器中,创建默认对象的语法格式如下:CREATE DEFAULT default_nameAS default_description其中:default_name是默认值名称
37、,必须符合SQL Server 2005命名规则。default_description是常量表达式,可以包含常量、内置函数或数学表达式。2绑定默认值默认值创建之后,必须将其绑定到表的字段或用户自定义的数据类型上才能产生作用。在查询分析器中使用系统存储过程来完成绑定。其语法格式如下:EXECUTE sp_bindefault 默认名称,表名.字段名|自定义数据类型名【例6.13】创建一个df_xf默认,将其绑定到“课程注册”表的“学分”字段,使默认学分为4。代码如下:USE studentGOCREATE DEFAULT df_xfAS 4GOEXEC sp_bindefault df_xf,
38、课程注册.学分GO3解绑默认值 类似规则,对于不需要再利用默认的列,可以利用系统存储过程对其解绑。其语法格式如下: EXECUTE sp_unbindefault 表名.字段名|自定义数据类型名4删除默认值当默认值不再有存在的必要时,可以将其删除。在删除前,必须先对默认值解绑。在查询分析器中使用DROP语句删除默认值。其语法格式如下:DROP DEFAULT default_name,n【例6.14】从student数据库中将df_xf默认值删除。代码如下:USE studentGOEXEC sp_unbindefault 课程注册.学分GODROP DEFAULT df_xfGO 6.86.
39、8数据完整性强制选择方法数据完整性强制选择方法 SQL Server 2005提供了许多实现数据完整性的方法。除了本章介绍的约束、默认和规则外,还有前面章节介绍的数据类型和后面需要学习的触发器等。对于某一问题可能存在多种解决办法,应该根据系统的实际要求,从数据完整性方法实现的功能和开销综合考虑。 下面来简单讨论一下各种实现数据完整性的方法的功能和性能开销。 触发器功能强大,既可以维护基础的数据完整性逻辑,又可以维护复杂的完整性逻辑,如多表的级联操作,但是开销较高;约束的功能比触发器弱,但开销低;默认和规则功能更弱,开销也更低;数据类型提供最低级别的数据完整性功能,开销也是最低的。 在选择完整性方案时,应该遵循在完成同样任务的条件下,选择开销低的方案解决。也就是说,能用约束完成的功能,就不用触发器完成;能用数据类型完成的功能,就不用规则来完成。 6.9 应应 用用 举举 例例 1使用约束(1)用SQL语句创建cust_sample表,在其中创建四个字段
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年吉林省经济管理干部学院马克思主义基本原理概论期末考试笔试真题汇编
- 2025年景德镇艺术职业大学马克思主义基本原理概论期末考试笔试真题汇编
- 2025年兰州铁路工程职工大学马克思主义基本原理概论期末考试笔试题库
- 2025年长江艺术工程职业学院马克思主义基本原理概论期末考试笔试题库
- 2024年滨州科技职业学院马克思主义基本原理概论期末考试真题汇编
- 2025高一秋季生物真题答案
- 员工职业发展培训方案
- 法律咨询公司企业法律顾问协议
- 应急管理部安全培训证课件
- 标准制定2026年网络内容审核合同协议
- 2025年大学《农药化肥-农药残留检测》考试模拟试题及答案解析
- 二氧化碳爆破施工技术方案
- 安全生产工作成效总结
- 16《我的叔叔于勒》公开课一等奖创新教学设计
- 骨科备皮课件
- 农资超市开业筹备与运营实施方案
- 药店代煎免责协议书10篇
- 大语言模型金融领域应用评测指南
- 产后恶露护理
- 基础胶水知识培训课件
- 2024年江苏省徐州市保安员证考试题库及答案
评论
0/150
提交评论