欢迎光临散文网 会员登陆 & 注册

第五章SQLServer 2012数据完整性

2019-10-14 23:51 作者:游戏理想国  | 我要投稿

上一张章介绍了数据库的基本操作,对于数据的添加、删除、修改操作都可能对数据库中的数据造成破坏或出现相关数据不一致的现象。要保证数据的正确无误和相关数据的一致性,除了认真地进行操作外,更重要的时数据库系统本身需要提供维护机制。


一、概念:

数据完整性是指数据的精确性,和可靠性。它是防止数据库中存在不符合语义规定的数据。“学生”表中有 ’学号‘,’姓名’,’性别’,’班级代码’,等等。在这张表中都应该有唯一的学号,不能有两个或多个学生的学号相同;在’性别’ 字段里数据只能为’男’ 或‘女’ 不可能有其它数据。


完整的数据类型分四类:实体完整性、域完整性、参照完整性、用户定义的完整性。

1、实体完整性

实体完整性,规定表中的每一行在表中是唯一的实体。也可以这样说,在表中不可能存在完全相同的记录,主键的存在保证了任何记录都不重复的。

2、域完整性

域完整性是指数据表中的字段必须满足某种特定的数据类型或约束。其中约束又包括取值范围、精度等规定。

3、参照完整性

参照完整性是指两个表的主键和外键的数据应对应一致。它确保存了主键的表中对应其它表的外键的存在,即保证了表之间数据的一致性,防止了数据丢失或无意义的数据。禁止在从表中插入包含主表中不存在的关键字的数据行。

4、用户定义的完整性

不同关系数据库系统根据其应用环境的不同,往往还需要一些特殊的约束条件。用户定义的完整性针对某个特定关系数据库的约束条件,它反映了某一具体应用所涉及的数据必须满足的语义要求。


二、约束的类型

约束就是一种强制性的规定,在SQLSERVER 2005中提供的约整是通过定义字段的取值规则来维护数据完整性的。在SQLSERVER 中支持6类约束:NOTNULL(非空)约束、CHECK(检查约束)、UNIQUE(唯一束)、PRIMARYKEY (主键约束)、FOREIGNKEY (外键约束)和DEFAULT(默认约束)

三、约束的创建

约束可以在创建表的同时创建,也可以在已有的表上创建。通常,约束可可以在对象资源管理器中创建,也可以在查询分析中中使用SQL命令创建。

1、创建主键约束

2、创建外键约束


3、创建唯一约束

在一张数据表中,有时候除主键需要具有唯一性,还有某他字段也需要具有唯一性。例如,在’系部’ 表中,主键为 ‘系部代码’,但是另外一个字段‘系部名称’虽然不是主键,但也需要保证它的唯一性,这时就需要创建表中的唯一约束。

3.1使用对象资源管理器创建唯一约束

(1)在“对像资源管理器”窗口中,右击需要设置唯一约束的表,在弹出的菜单选“修改” 命令,打开“表设计器”

(2)在“表设置器”窗口中,右击需要设置为唯一约束的字段

在弹出的菜单中选择“索引/键”命令。然后添加唯一约束。



3.2使用SQL语句创建唯一约束

为已经存在的表创建唯一约束语法格式如下:

ALTERTABLE 表名

ADDCONSTRAINT 唯一约束的名称

UNIQUENONCLUSTERED(字段名称)

4、创建检查约束

检查约束对输入的数据的值做检查,可以限定数据输入,从而维护数据的域完整性。


4.1、使用对象资源管理器创建检查约束

(1)在“对象资源管理器”窗口中,右击需要设置唯一约束的表,在弹出的菜单中选“修改”命令。

(2)在”表设计器”窗口中右击需要创建检查约束的字段,选择“CHECK约束”命令,然后添加栓查约束

4.2、使用SQL 语句创建检查约束

ALTERTABLE table_name

ADDCONSTRAINT ck_name

CHECK(条件)

5、创建默认约束

在用户输入某些数据时,希望一些数据在没输入的情况下被自动输入,这个时候需要对数据表创建默认约束。


5.1、使用对象资源管理器创建检查约束

(1)在“对象资源管理器”窗口中,右击需要设置默认约束的表,在弹出的菜单中选“修改”命令。

(2)选择需要创建默认约束的字段,在“列属性”选项卡中的“默认值或绑定”文本框中输入默认值。

5.2使用SQL语句创建默认约束

ALTER TABLE table_name

ADDCONSTRAINT constraint_name

DEFAULT'默认值' FORcolumn_name


删除约束

  ALTER TABLE table_name

DROPCONSTRAINT ck_name

6、查看约束的定义

对于创建好的约束,根据实际需要可以查看其定义信息。SQLServer2005提供了多种查看约束信息的方法,经常使用的有利用对象资源管理器和系统储过程。

利用存储过程查看约束信息

存储过程sp_helptext是用来查看约束的一个系统提供的存储过程,可以通过查询分析器来查看约束的名称、创建者、类型和创建时间。其语法格式为:

EXECsp_help 约束名称

如果该约束有具体的定义和文本,那么可以用sp_helptext来查看其语法格式为:

EXECsp_helptext 约束名称

三、使用规则

规则类似于CHECK约束,是用来限制数据字段的输入值的范围,实现强制数据的域完整性,但是规则不同于CHECK约束,在前面用到的CHECK约束可以针对一个列应用多个CHECK约束,但一个列不能应用多个规则;规则需要被单独创建,只需要创建一次,以后可以多次使用,可以应用于多个表。

1、创建规则

规则作为一种数据库对像,在使用前必须被创建。创建规则的语法格式如下:

CREATERULE 规则名

as条件表达式

2、绑定规则

要使创建好的规则作用到指定的列或表等,还必须将规则绑定到列或用户定义的数据类型上。

EXECUTEsp_bindrule  ‘规则名’,表名.字段名’

3、解绑规则

如果说字段已经不再需要规则输入了,那么必须把已绑定了的规则去掉,这就是解绑规则,在查询分析器中,同样用存储过程来完成解绑定操作,语法如下:

EXECUTE sp_unbindrule ’表名.字段名’

4、删除规则

如果规则已经没有用了,那么可以将其删除。在删除前应该先对规则进行解绑,当规则不再作用于任何表或字段时,可以删除规则。

DROPRULE 规则名称

5、使用默认

默认(也称默认值)是一种数据对象,它与DEFAULT(默认)约束的作用相同,也是当向表中插入数据时,没有为列输入值时,系统自动给列赋一个“默认值”。与DEFAULT不同的是它类似规则,通过一次定义,可以多次使用。

1、创建默认:

在查询分析器中,创建默认对象的语法格式如下:

CREATEDEFAULT default_name

as常量表达式,可以包含常量、内置函数或数学表达式

2、绑定默认

默认值创建之后,必须将其绑定到表的字段才能产生作用,在查询分析器中使用系统存储过程来完成绑定。其语法格式如下:

EXECUTEsp_bindefault  ‘默认名称’,’表名.字段名’

3、解绑默认值

类似规则,对于不需要再利用默认的列,可以利用系统存储过程对其解绑。其语法格式如下:

EXECUTEsp_bindefault  ’表名.字段名’

4、删除默认值

当默认值不再有存在的必要时,可以将其删除。在删除前,必须先对默认值解绑。在查询分析器中使用DROP语句删除默认值。其语法格式如下:

DROPDEFAULT 默认名称


第五章SQLServer 2012数据完整性的评论 (共 条)

分享到微博请遵守国家法律