SQL数据库数据的完整性
来源:互联网 发布:哲学网络用语 编辑:程序博客网 时间:2024/06/10 08:54
数据有着复杂的数据类型,用来满足不同的需求。实际应用中的数据也有着一定的取值范围,如年龄不小于0,性别只有男女等。而表之间的联系使相连的字段要保持一致和完整。但是,实际操作无法保证插入和删除的数据都符合要求,不符合要求的操作极可能会破坏数据的完整性,对数据库的可靠性和运行能力造成威胁。
因此存放数据集的数据库必须要对数据表和列有所限制和规范,为此SQLServer系统使用一系列的方法来维护数据完整性。
数据的完整性:数据的完整性是指数据库中数据的正确性和一致性,表内的数据不相矛盾,表间的数据不相矛盾,关联性不被破坏。
为此有了以下实施完整性的途径:
1. 对列数据的控制:数据验证约束、默认值约束、规则。
2. 对列的控制:主键约束、唯一性约束、标识列。
3. 对表之间、列之间关系的控制:外键约束、数据验证约束、触发器、存储过程。
这些途径可以按照类型分为:约束、规则、默认值、触发器、存储过程。
约束分为以下几点:
l 主键约束
主键:PRIMARY KEY,主关键字,用来限制列的数据具有唯一性且不为空,即这一字段的数据没有重复的数据值且不能有空值。每个表只能有一个主键,一般用来做标识。
l 外键约束
外键:FOREIGN KEY,外键用来在两个表的数据之间建立连接,它可以是一列或者多列。一个表可以有一个或者多个外键。外键对应的是参照完整性,一个表的外键可以为空值,若不为空值则每一个外键值必须等于另一个表中主键的某个值。
l 标识列
可以自动编号的列称为标识列或IDENTITY约束。IDENTITY约束就是为那些数值顺序递增的列准备的约束,自动完成数值的添加。每个表只能有一个标识列,标志数据不能由用户输入,用户只需要填写标志种子(标识列的第一个数据)和标志增量(依次增加的数),系统自动生成数据并填入表。标志种子和标志增量都是非零整数,位数小于等于10。默认两者均为1。
l 唯一性约束
又叫UNIQUE约束,在主键约束中也用到了唯一性,不同的是一个表中可以有多个这样的唯一性列,却只能有一个主键。这里的唯一性列可以为空但是只能有一行数据为空。适用于不是主键但却仍旧要求具有唯一性的字段。
l 非空约束
一个列是否允许有空值,就是这里的空和非空约束,即NULL与NOT NULL约束。NULL就是允许为空,NOT NULL就是不允许为空。NULL不同于0和“”,0和“”都表示为该行有数据,而NULL是没有数据。
l 数据验证约束
又称做CHECK约束,它通过给定条件(逻辑表达式)来检查输入数据是否符合要求,以此来维护数据完整性。
l 默认值约束
又称作DEFAULT约束。将常用的数据值性以为默认值可以节省用户输入的时间,在非空字段中定义默认值可以减少错误发生。在实际应用中,默认值还可以是结果能变的函数。
规则:
规则是独立的SQL Server对象,跟表和视图一样是数据库的组成部分。规则的作用和CHECK约束类似,用于完成对数据值的检验。它可以关联到多个表,在数据库中有邮局插入、修改时,验证新数据是否符合规则,是实现域完整性的方式之一。规则在定义时并没有定义它的检测对象,而是在创建后绑定到对象来检测数据。
创建规则
CREATE RULE 规则名
AS
条件表达式
在这里的条件表达式使用逻辑表达式,表达式中要有一个@开头的变量,代表用户的输入数据,可以看做是代替WHERE后面的列名。
规则在绑定之后才可以使用,规则的绑定需要时用系统存储过程sp_bindrule.
USE 数据库名
GO
Sp_bindrule 规则名 表名.字段名
使用存储过程sp_help来查看规则。
规则的特点(与CHECK的不同)
1) 规则是SQL Server的对象而CHECK是一种约束,是表定义的一部分。
2) CHECK的优先级要高于规则。
3) 一个列只能使用一个规则却可以使用多个CHECK约束。
4) 规则可以应用于多个列,CHECK约束只针对它定义的列。
5) 规则创建一次可以使用多次而CHECK约束需要多次创建。
默认值:
CREATE DEFAULT 默认值名
AS 常亮表达式
与创建规则一样,默认值的定义不能包含列名,需要绑定到列或是其他数据库对象才能使用。一个列只能绑定一个默认值。
- SQL数据库数据的完整性
- 数据的完整性 SQL
- 数据库之数据的完整性
- sql server 2008 数据库的完整性约束
- SQl -维护数据的完整性--约束 -
- 弦月下的SQL<5> 数据完整性
- SQL SERVER 2012实现数据的完整性
- 数据库之表、保证数据的完整性
- 数据库的事务管理确保数据完整性
- SQL 数据库完整性
- 数据库SQL Server2012笔记(五)——维护数据的完整性——约束
- SQL Server数据完整性
- SQL Server数据完整性
- SQL Server数据完整性
- SQL保证数据完整性
- [mysql] SQL数据完整性
- sql数据完整性
- 数据库理论-数据完整性
- aaaaaaaaaaaaaaaa
- Android SlidingDrawer控件使用方法介绍
- 论内存分配初级
- IOS学习笔记2—Objective C—类、属性、方法
- LZ4 explained
- SQL数据库数据的完整性
- Android LayoutInflater详解
- 大数据分析的众包平台—Kaggle
- 梁美怀谈下自己在编程工作中的优缺点
- VC获取文件版本号
- android 权限集合
- 第12周项目1.1.2
- 更改Android AVD模拟器创建路径位置的方法
- Tigase集群设置