Sql server 2008 数据库的完整性约束
作者:网络转载 发布时间:[ 2015/11/16 11:51:15 ] 推荐标签:数据库
一、数据库完整性概述
1.数据库的完整性:
①数据库的完整性是指数据的正确性和相容性
②数据库完整性是防止不合语义或不正确的数据进入数据库
③完整性体现了是否真实地反映现实世界
例:
学生的年龄必须是整数,取值范围为14-29;
学生的性别只能是男或女;
学生的学号一定是的;
学生所在的系必须是学校开设的系;
2.DBMS维护数据库完整性的机制:
①提供定义完整性约束条件的机制
DBMS应提供定义数据库完整性约束条件,并把它们存入数据库中。
②提供完整性检查的方法
检查数据是否满足完整性约束条件的机制称为完整性检查。一般在INSERT、UPDATE、DELETE语句执行后开始检查。
3.违约处理
DBMS若发现用户的操作违背了完整性约束条件,采取一定的动作以保证数据的完整性,如拒绝执行该操作,或级联执行其他操作。
二、缺省(默认值)和规则
缺省和规则来源于由Sybase开发的S默认值QLServer,在老版本的SQLServer或者升级版本中都有缺省和规则的使用。
缺省是为列提供数据的一种方式,如果用户进行INSERT操作时不为列输入数据,则使用缺省值。
规则是当用户进行INSERT或uPDATE操作时,对输入列中的数据设定的取值范围,是实现域完整性的方式之一。
缺省与规则有以下特点:
(1)缺省与规则是数据库对象,它们是独立于表和列而建立的。
(2)缺省与规则建立后与列或数据类型产生关联,列和数据类型具有了缺省与规则的属性。
(3)缺省与规则定义后,可以重复使用,可以绑定到多个列或数据类型上。
(4)缺省与规则不随表同时调入内存,当用到时才被调入内存,这可能会使程序执行出现延时。
缺省和规则对象通常只在它所创建的数据库中有效,不是ANSI标准,一般不提倡使用。
应尽可能使用约束,任何可以使用缺省与规则的地方都有可以使用约束。
1.缺省
在SQLServer中,有两种使用默认值的方法:
①在创建表时,指定默认值。
用SQLServerManagementStudio创建表时在设计表时指定默认值,可以在输入字段名称后,设定该字段的默认值。
或使用CREATETABLE语句中的DEFAULT子句指定默认值。
②使用CREATEDEFAULT语句创建默认对象后,使用存储过程sp_bindefault将该默认对象绑定到列上。
默认值对象是单独存储的,删除表的时候,DEFAULT约束会自动删除,但是默认值对象不会被删除。
创建默认值对象后,需要将其绑定到某列或者用户自定义的数据类型上。
主要操作:
①创建默认值对象
②绑定默认值对象
③解除默认值对象的绑定
④查看默认值对象
⑤删除默认值对象
①创建默认对象
可以使用CREATEDEFAULT语句创建默认对象。其语法格式如下:
CREATEDEFAULTdefaultASconstant_expression
例如:createdefaultd_gradeas1
②绑定默认对象
默认对象创建后不能使用,必须首先将其绑定到某列或者用户自定义的数据类型上。其使用语法格式如下:
sp_bindefault[@defname=]'default',[@objname=]'object_name'[,[@futureonly=]'futureonly_flag']
其中:[,[@futureonly=]‘futureonly_flag’]仅在此之后将默认值绑定到用户定义的数据类型时才使用。
例如:execsp_bindefault'd_grade',‘sc.grade'
③解除默认对象的绑定
解除绑定可以使用sp_unbindefault存储过程。其语法格式如下:
sp_unbindefault[@objname=]'object_name'
例如:execsp_unbindefault‘sc.grade'
④查看默认对象
execsp_helpd_grade
execsp_helptextd_grade
⑤删除默认对象
在删除默认对象之前,首先要确认默认对象已经解除绑定。删除默认对象使用DROPDEFAULT语句。其语法格式如下:
DROPDEFAULT{default}[,…n]
例如:dropdefaultd_grade
2.规则
规则用以限制存储在表中或用户自定义数据类型的值,是独立的数据库对象。
将规则绑定到列或用户自定义数据类型时,规则才起作用。
表中的每列或每个用户定义数据类型只能和一个规则绑定。但每列可应用多个CHECK约束。
如果要删除规则,应确定规则已经解除绑定。
①创建规则
CREATERULE语句,其语法格式如下:
CREATERULErulenameAScondition_expression
其中各参数含义如下:
rulename是新规则的名称。
condition_expression是定义规则的条件。
例如:createruler_gradeas@grade<=100and@grade>=0
②绑定规则
使用sp_bindrule存储过程,语法格式为:
sp_bindrule[@rulename=]'rulename',[@objname=]‘object_name’
例如:execsp_bindrule'r_grade','sc.grade‘
注意:
规则不能绑定到text、image或timestamp列。
如果规则与绑定的列不兼容,SQLServer将在插入值时返回错误信息。
未解除绑定的规则,如果再次将一个新的规则绑定到列,旧的规则将自动被解除,只有近一次绑定的规则有效
如果列中包含CHECK约束,则CHECK约束优先。
③解除规则的绑定
使用sp_unbindrule存储过程。语法格式如下:
sp_unbindrule[@objname=]'objectname'[,[@futureonly=]'futureonly_lag']
例如:
execsp_unbindrule'sc.grade'
④删除规则
首先要解除规则的绑定,然后才能删除绑定
例如:dropruler_grade
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11