- 浏览: 171481 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
917380319:
找了N多个,就你的能在安卓远程调用,谢谢了
Web Service修炼之二Xfire+Spring -
alpenliebe:
马克一下,日后学习
知识收集9【原创】 -
leo_lnx:
very good,顶大兵!
知识收集3【原创】 -
fengyuan_2012:
不错...
SSH搭建的框架,提供源码 -
影非弦:
没有效果图看啊
FusionChart实现的动态统计图
定义
数据完整性用于保证数据库中数据的正确性、一致性和可靠性。
类型
• 实体完整性(Entity Integrity)
• 域完整性(Domain Integrity)
• 参照完整性(Referential Integrity)
• 用户定义完整性(User-defined Integrity)
图示
实体完整性(Entity Integrity)
实体完整性用于保证数据库中数据表的每一个特定实体的记录都是唯一的
域完整性(Domain Integrity)
域完整性是指保证指定列的数据具有正确的数据类型、格式和有效的数据范围。
参照完整性(Referential Integrity)
当增加、修改或删除数据库表中记录时,可以借助参照完整性来保证相关联表之间数据的一致性
用户定义完整性 (User- defined Integrity)
这是由用户定义的完整性。用户定义完整性可以定义不属于其他任何完整性分类的特定业务规则
数据完整性的实现方式
声明数据完整性和过程数据完整性
使用IDENTITY(标识符)列
语法格式:
CREATE TABEL 数据表名
(列名 列数据类型 IDENTITY [(种子, 增量)] [,…])
说明:标识种子为标识列的起始值,标识递增量为每次增加的数,二者的默认值均为1。
使用IDENTITY函数
语法格式:
IDENTITY ( 数据类型 [ , 种子 , 递增量 ] ) AS 列名
说明:只用在带有 INTO table 子句的 SELECT 语句中,可以将标识列插入到新表中。
尽管类似,但是 IDENTITY 函数不是与 CREATE TABLE 和 ALTER TABLE 一起使用的 IDENTITY 属性。
完整性类型 约束类型 描述
域 DEFAULT 指定列的默认值
CHECK 指定列的允许值
FOREIGN KEY 指定必须存在值的列
NULL 指定是否允许为NULL
实体 PRIMARY KEY 唯一标识每一行
UNIQUE 防止非主键重复
引用 FOREIGN KEY 定义值与同一个表或另一个表的主键值匹配的一列或多列组合
CHECK 指定根据同一个表中其他列的值可在列中接受的数据值
在SQL SERVER中,对于基本表的约束分为列约束和表约束。
完整性约束的基本语法格式为:
[CONSTRAINT constraint_name(约束名)] <约束类型>
约束不指定名称时,系统会给定一个名称。
在SQL Server 2005中有6种约束:主键约束(primary key constraint)、惟一性约束(unique constraint)、检查约束(check constraint)、默认约束(default constraint)、外部键约束(foreign key constraint)和空值(NULL)约束。
PRIMARY KEY 约束
PRIMARY KEY约束用于定义基本表的主键,它是惟一确定表中每一条记录的标识符,其值不能为NULL,也不能重复,以此来保证实体的完整性。PRIMARY KEY与UNIQUE约束类似,通过建立唯一索引来保证基本表在主键列取值的唯一性,但它们之间存在着很大的区别:
①一个表只能有一个 PRIMARY KEY 约束 ,但可定义多个UNIQUE约束;
②对于指定为PRIMARY KEY的一个列或多个列的组合,其中任何一个列都不能出现空值,而对于UNIQUE所约束的唯一键,则允许为空。
注意:不能为同一个列或一组列既定义UNIQUE约束,又定义PRIMARY KEY约束;
PRIMARY KEY既可用于列约束,也可用于表约束。
(2)使用Transact-SQL语句操作法设置主键约束,其语法形式如下:
PRIMARY KEY
CONSTRAINT constraint_name PRIMARY KEY ( column_name )
举例:建立一个SC表,定义SNO,CNO共同组成SC的主键
程序清单如下:
create table sc(
sno char(5) not null,
cno char(5) not null,
score numeric (3),
constraint sc_prim primary key(sno,cno)
)
UNIQUE约束
惟一性约束用于指定一个或者多个列的组合值具有惟一性,以防止在列中输入重复的值。定义了UNIQUE约束的那些列称为唯一键,系统自动为唯一键建立唯一索引,从而保证了唯一键的唯一性。
当使用惟一性约束时,需要考虑以下几个因素:
• 使用惟一性约束的字段允许为空值;
• 一个表中可以允许有多个惟一性约束;
• 可以把惟一性约束定义在多个字段上;
• 惟一性约束用于强制在指定字段上创建一个惟一性索引;
• 默认情况下,创建的索引类型为非聚集索引。
使用Transact-SQL语句完成惟一性约束的操作,其语法形式如下:
• UNIQUE
• CONSTRAINT constraint_name UNIQUE ( column_name )
CHECK 约束
检查约束对输入列或者整个表中的值设置检查条件,以限制输入值,保证数据库数据的完整性。
当使用检查约束时,应该考虑和注意以下几点:
• 一个列级检查约束只能与限制的字段有关;一个表级检查约束只能与限制的表中字段有关;
• 一个表中可以定义多个检查约束;
• 每个CREATE TABLE语句中每个字段只能定义一个检查约束;
• 在多个字段上定义检查约束,则必须将检查约束定义为表级约束;
• 当执行INSERT语句或者UPDATE语句时,检查约束将验证数据;
• 检查约束中不能包含子查询。
用Transact-SQL语句创建检查约束。其语法形式如下:
• CONSTRAINT constraint_name CHECK (logical_expression)
• CHECK (logical_expression)
create table sc(
sno char(5) not null,
cno char(5) not null,
score numeric(5,1) constraint score_chk check(score>=0 and score <=100),
constraint sc_prim primary key(sno,cno),
)
drop table sc
insert into sc values('1','2',3)
DEFAULT 约束
默认约束指定在插入操作中如果没有提供输入值时,则系统自动指定值。默认约束可以包括常量、函数、不带变元的内建函数或者空值。
使用默认约束时,应该注意以下几点:
(1)每个字段只能定义一个默认约束;
(2)如果定义的默认值长于其对应字段的允许长度,那么输入到表中的默认值将被截断;
(3)不能加入到带有IDENTITY属性或者数据类型为timestamp的字段上;
(4)如果字段定义为用户定义的数据类型,而且有一个默认绑定到这个数据类型上,则不允许该字段有默认约束。
创建默认约束的Transact-SQL语句操作法。其语法形式如下:
• CONSTRAINT constraint_name DEFAULT constraint_expression [FOR column_name]
• DEFAULT constraint_expression [FOR column_name]
举例:为 dept字段创建默认约束。
程序清单如下:
constraint con_dept default ‘计算机’ for dept
NULL 约束
空值约束用来控制是否允许该字段的值为NULL。NULL值不是0也不是空白,更不是填入字符串的“NULL”字符串,而是表示“不知道”、“ 不确定”或“没有数据”的意思。
当某一字段的值一定要输入才有意义的时候,则可以设置为NOT NULL。如主键列就不允许出现空值,否则就失去了唯一标识一条记录的作用。空值约束只能用于定义列约束。
FOREIGN KEY 约束
FOREIGN KEY约束是用于建立和加强两个表数据之间的链接的一列或多列。外部键约束用于强制参照完整性。
FOREIGN KEY 约束确保同一个表或者不同表之间的引用完整性
必须引用一个PRIMARY KEY或者UNIQUE约束
用户必须在应用表上具有REFERENCES权限
一个表中最多可以有31个外部键约束;
在临时表中,不能使用外部键约束;
主键和外部键的数据类型必须严格匹配 。
使用Transact-SQL语句设置外部键约束 ,其语法形式如下:
CONSTRAINT constraint_name
FOREIGN KEY (column_name[,…n])
REFERENCES ref_table [(ref_column[,…n])]
ALTER TABLE [Sales].[SalesOrderHeader] WITH CHECK
ADD CONSTRAINT [FK_SalesOrderHeader_Customer_CustomerID]
FOREIGN KEY([CustomerID])
REFERENCES [Sales].[Customer] ([CustomerID])
禁用 CHECK 和 FOREIGN KEY 约束:
当运行大型批处理作业时提高性能
当向表中添加新的约束的时候避免检查已经存在的数据
数据完整性用于保证数据库中数据的正确性、一致性和可靠性。
类型
• 实体完整性(Entity Integrity)
• 域完整性(Domain Integrity)
• 参照完整性(Referential Integrity)
• 用户定义完整性(User-defined Integrity)
图示
实体完整性(Entity Integrity)
实体完整性用于保证数据库中数据表的每一个特定实体的记录都是唯一的
域完整性(Domain Integrity)
域完整性是指保证指定列的数据具有正确的数据类型、格式和有效的数据范围。
参照完整性(Referential Integrity)
当增加、修改或删除数据库表中记录时,可以借助参照完整性来保证相关联表之间数据的一致性
用户定义完整性 (User- defined Integrity)
这是由用户定义的完整性。用户定义完整性可以定义不属于其他任何完整性分类的特定业务规则
数据完整性的实现方式
声明数据完整性和过程数据完整性
使用IDENTITY(标识符)列
语法格式:
CREATE TABEL 数据表名
(列名 列数据类型 IDENTITY [(种子, 增量)] [,…])
说明:标识种子为标识列的起始值,标识递增量为每次增加的数,二者的默认值均为1。
使用IDENTITY函数
语法格式:
IDENTITY ( 数据类型 [ , 种子 , 递增量 ] ) AS 列名
说明:只用在带有 INTO table 子句的 SELECT 语句中,可以将标识列插入到新表中。
尽管类似,但是 IDENTITY 函数不是与 CREATE TABLE 和 ALTER TABLE 一起使用的 IDENTITY 属性。
完整性类型 约束类型 描述
域 DEFAULT 指定列的默认值
CHECK 指定列的允许值
FOREIGN KEY 指定必须存在值的列
NULL 指定是否允许为NULL
实体 PRIMARY KEY 唯一标识每一行
UNIQUE 防止非主键重复
引用 FOREIGN KEY 定义值与同一个表或另一个表的主键值匹配的一列或多列组合
CHECK 指定根据同一个表中其他列的值可在列中接受的数据值
在SQL SERVER中,对于基本表的约束分为列约束和表约束。
完整性约束的基本语法格式为:
[CONSTRAINT constraint_name(约束名)] <约束类型>
约束不指定名称时,系统会给定一个名称。
在SQL Server 2005中有6种约束:主键约束(primary key constraint)、惟一性约束(unique constraint)、检查约束(check constraint)、默认约束(default constraint)、外部键约束(foreign key constraint)和空值(NULL)约束。
PRIMARY KEY 约束
PRIMARY KEY约束用于定义基本表的主键,它是惟一确定表中每一条记录的标识符,其值不能为NULL,也不能重复,以此来保证实体的完整性。PRIMARY KEY与UNIQUE约束类似,通过建立唯一索引来保证基本表在主键列取值的唯一性,但它们之间存在着很大的区别:
①一个表只能有一个 PRIMARY KEY 约束 ,但可定义多个UNIQUE约束;
②对于指定为PRIMARY KEY的一个列或多个列的组合,其中任何一个列都不能出现空值,而对于UNIQUE所约束的唯一键,则允许为空。
注意:不能为同一个列或一组列既定义UNIQUE约束,又定义PRIMARY KEY约束;
PRIMARY KEY既可用于列约束,也可用于表约束。
(2)使用Transact-SQL语句操作法设置主键约束,其语法形式如下:
PRIMARY KEY
CONSTRAINT constraint_name PRIMARY KEY ( column_name )
举例:建立一个SC表,定义SNO,CNO共同组成SC的主键
程序清单如下:
create table sc(
sno char(5) not null,
cno char(5) not null,
score numeric (3),
constraint sc_prim primary key(sno,cno)
)
UNIQUE约束
惟一性约束用于指定一个或者多个列的组合值具有惟一性,以防止在列中输入重复的值。定义了UNIQUE约束的那些列称为唯一键,系统自动为唯一键建立唯一索引,从而保证了唯一键的唯一性。
当使用惟一性约束时,需要考虑以下几个因素:
• 使用惟一性约束的字段允许为空值;
• 一个表中可以允许有多个惟一性约束;
• 可以把惟一性约束定义在多个字段上;
• 惟一性约束用于强制在指定字段上创建一个惟一性索引;
• 默认情况下,创建的索引类型为非聚集索引。
使用Transact-SQL语句完成惟一性约束的操作,其语法形式如下:
• UNIQUE
• CONSTRAINT constraint_name UNIQUE ( column_name )
CHECK 约束
检查约束对输入列或者整个表中的值设置检查条件,以限制输入值,保证数据库数据的完整性。
当使用检查约束时,应该考虑和注意以下几点:
• 一个列级检查约束只能与限制的字段有关;一个表级检查约束只能与限制的表中字段有关;
• 一个表中可以定义多个检查约束;
• 每个CREATE TABLE语句中每个字段只能定义一个检查约束;
• 在多个字段上定义检查约束,则必须将检查约束定义为表级约束;
• 当执行INSERT语句或者UPDATE语句时,检查约束将验证数据;
• 检查约束中不能包含子查询。
用Transact-SQL语句创建检查约束。其语法形式如下:
• CONSTRAINT constraint_name CHECK (logical_expression)
• CHECK (logical_expression)
create table sc(
sno char(5) not null,
cno char(5) not null,
score numeric(5,1) constraint score_chk check(score>=0 and score <=100),
constraint sc_prim primary key(sno,cno),
)
drop table sc
insert into sc values('1','2',3)
DEFAULT 约束
默认约束指定在插入操作中如果没有提供输入值时,则系统自动指定值。默认约束可以包括常量、函数、不带变元的内建函数或者空值。
使用默认约束时,应该注意以下几点:
(1)每个字段只能定义一个默认约束;
(2)如果定义的默认值长于其对应字段的允许长度,那么输入到表中的默认值将被截断;
(3)不能加入到带有IDENTITY属性或者数据类型为timestamp的字段上;
(4)如果字段定义为用户定义的数据类型,而且有一个默认绑定到这个数据类型上,则不允许该字段有默认约束。
创建默认约束的Transact-SQL语句操作法。其语法形式如下:
• CONSTRAINT constraint_name DEFAULT constraint_expression [FOR column_name]
• DEFAULT constraint_expression [FOR column_name]
举例:为 dept字段创建默认约束。
程序清单如下:
constraint con_dept default ‘计算机’ for dept
NULL 约束
空值约束用来控制是否允许该字段的值为NULL。NULL值不是0也不是空白,更不是填入字符串的“NULL”字符串,而是表示“不知道”、“ 不确定”或“没有数据”的意思。
当某一字段的值一定要输入才有意义的时候,则可以设置为NOT NULL。如主键列就不允许出现空值,否则就失去了唯一标识一条记录的作用。空值约束只能用于定义列约束。
FOREIGN KEY 约束
FOREIGN KEY约束是用于建立和加强两个表数据之间的链接的一列或多列。外部键约束用于强制参照完整性。
FOREIGN KEY 约束确保同一个表或者不同表之间的引用完整性
必须引用一个PRIMARY KEY或者UNIQUE约束
用户必须在应用表上具有REFERENCES权限
一个表中最多可以有31个外部键约束;
在临时表中,不能使用外部键约束;
主键和外部键的数据类型必须严格匹配 。
使用Transact-SQL语句设置外部键约束 ,其语法形式如下:
CONSTRAINT constraint_name
FOREIGN KEY (column_name[,…n])
REFERENCES ref_table [(ref_column[,…n])]
ALTER TABLE [Sales].[SalesOrderHeader] WITH CHECK
ADD CONSTRAINT [FK_SalesOrderHeader_Customer_CustomerID]
FOREIGN KEY([CustomerID])
REFERENCES [Sales].[Customer] ([CustomerID])
禁用 CHECK 和 FOREIGN KEY 约束:
当运行大型批处理作业时提高性能
当向表中添加新的约束的时候避免检查已经存在的数据
发表评论
-
数据库每日一练01
2010-06-12 18:08 1029部门月份业绩表 CREATE TABLE [dbo].[bm ... -
数据库总结十存储过程
2010-05-31 21:00 818 什么是存储过程存储过程(procedure)类似于C语言中 ... -
数据库总结九触发器
2010-05-20 20:09 1040在SQL Server 2005中,触发 ... -
数据库总结八分区表、索引和视图
2010-05-19 20:25 2627分区表: 分区表的目的是将同一张 ... -
数据库总结七事务
2010-05-16 10:54 909定义 事务(Transaction)是由对数据库的若干操作组 ... -
数据库总结六视图
2010-05-14 20:13 1294视图是由一个或多个数据表(基本表)或视图导出的虚拟表或查询表, ... -
数据库总结五游标
2010-05-13 21:17 856create table users( id int ... -
数据库总结四游标
2010-05-13 21:15 794打开游标 语法格式:OPEN [GLOBAL] 游标名 Ø ... -
数据库总结三游标
2010-05-13 21:13 952游标(Cursor)是用户从查询记录集中逐条逐行地访问(移动读 ... -
数据库总结二索引
2010-05-12 21:13 829非聚集索引 非聚集索引的数据存储在一 ... -
数据库总结一索引
2010-05-12 21:11 966索引是数据库随机检索的常用手段,它实际上就是记录的关键字与其 ... -
工作总结8——数据库小总结
2010-03-13 19:24 1040最近与一个哥们讨论了一晚上,数据库的并 ... -
工作总结7
2010-01-24 16:39 832在根据业务进行查询处理的时候,尽量把条件放到查询S ... -
工作总结6
2010-01-20 20:54 833在做数据查询的时候,利用了数据库中的 ... -
数据库连接不上解决方案
2009-12-05 13:17 2104在使用网站管理工具做登录页面的时候遇到的问题 所遇问题: ... -
数据库问题解决方案
2009-12-05 13:11 15721.右键服务器,属性--安全性,服务器身份验证选SQL Ser ... -
数据库三范式最简单最易记的解释
2009-07-30 14:30 914书上讲了好多, 归结起来3句话: 1NF:字段不可分; 2N ... -
SQL性能优化2
2009-07-23 15:14 5921 逻辑数据库和表的设 ... -
SQL性能优化1
2009-07-23 15:08 7861.对查询进行优化,应尽量避免全表扫描,首先应考虑在 wher ... -
Sql性能优化
2009-07-23 14:58 1973操作符优化 IN 操作符用IN写出来的SQL的优点是比较容易 ...
相关推荐
### 数据库实验八:完整性约束的实现 #### 实习目的 通过本次实验,学习者将掌握在SQL中实现数据完整性的方法,并进一步加深对关系数据模型中的三类完整性约束的理解。这不仅有助于确保数据的质量与一致性,还能...
本实验报告的主要目的是让学生掌握数据库完整性约束的创建和使用方法,包括实体完整性约束、参照完整性约束和用户自定义完整性约束。通过实验,学生将了解完整性约束的创建方法、运行检查机制、级联删除和修改方法等...
### Oracle数据库的完整性约束规则详解 #### 一、概述 Oracle数据库通过实施一系列的完整性约束规则来维护数据的准确性和一致性。这些约束规则是数据库设计中的核心组成部分,旨在防止不符合预定义规则的数据进入...
总结来说,本实验涵盖了数据库完整性约束的各个方面,通过具体操作加深了对完整性约束的理解和应用能力。实验中通过实际案例,指导我们如何在数据库中定义和维护完整性约束,确保数据的准确性和一致性。此外,文档的...
总结,本实验旨在让学生掌握数据库管理中的关键概念,包括完整性约束的设置与应用,视图的创建与查询,存储过程的使用,以及数据安全的实践,同时了解Oracle数据库的备份和恢复机制,以提升数据库管理的能力和实战...
本实验报告旨在加深对数据库完整性控制的认识和各种完整性约束概念的理解,熟悉掌握数据库完整性约束方法。实验环境采用PC机,操作系统为Microsoft Windows 2000或以上版本,数据库管理系统为Microsoft SQL Server ...
完整性约束验证是指对数据库中的完整性约束进行验证和测试。例如,验证主键、候选键、外键约束的正确性和有效性。 外键约束验证 外键约束验证是指对数据库中的外键约束进行验证和测试。例如,验证外键约束的正确性...
本实验“实验一_完整性约束_sql_”着重关注的是数据库设计中的一个重要概念——完整性约束。完整性约束确保了数据的质量和一致性,避免了错误的数据输入或更新,从而维护了数据库的准确性。 SQL提供了多种完整性...
总结来说,数据库完整性是数据库设计与管理中的关键环节,通过定义和实施完整性约束条件,可以确保数据的准确性和一致性,从而避免无效或矛盾的数据进入系统,提高数据的可信度和系统的可靠性。在实际应用中,理解和...
数据库的安全性和完整性约束...总结来说,这个PPT学习教案深入讲解了数据库安全和完整性的核心概念,包括视图的使用、访问控制策略以及完整性约束的种类和实现方式,这些都是保障数据库系统安全、可靠运行的重要手段。
"实验一 创建数据库及关系表、数据完整性约束" 这篇实验报告旨在让读者掌握 SQL Server 数据库管理系统的使用,创建数据库、关系表和数据完整性约束。实验报告分为六大部分,分别是创建数据库、创建关系表、修改表...
总结来说,本实验重点在于理解数据完整性的重要性,以及如何在数据库设计中应用各种完整性约束,包括主键、外键、自增列、默认值和用户定义的CHECK约束,以保证数据库的准确性和一致性。这对于任何处理数据库操作的...
实验1-数据库表的建立与编辑以及完整性约束的实现 本实验的主要目的是掌握通过表的基础知识,包括使用第三方管理工具创建表的方法、表的修改、查询、删除等基本操作方法,以及表中完整性约束的定义和作用。实验分为...
1. 数据库安全性与完整性控制实验概念: 数据运维实验通常包括数据库安全性和完整性控制的实践操作。安全性的目的是保护数据不被未授权的用户访问或篡改,而完整性则保证数据的准确性和一致性。MySQL数据库管理系统...
### 实现三类完整性约束条件 #### 概述 在关系数据库系统中,数据完整性是确保数据质量和准确性的关键因素之一。...在设计数据库时,合理地利用这些完整性约束对于维护数据的一致性和可靠性至关重要。
- 数据完整性约束:确保数据库中的数据始终保持一致性和准确性。 - 完整性规则定义:包括实体完整性、参照完整性和用户自定义完整性等。 #### 二、实验工具 本实验使用KingbaseES数据库管理系统及其交互式查询...
数据库面试基础知识总结是数据库领域的一份重要知识点总结,涵盖了数据库抽象、SQL语言、视图、完整性约束等方面的知识点。 一、数据库抽象 数据库抽象是指数据库系统中对数据的多层次描述,包括物理抽象、概念...
总结来说,这个实验主要探讨了SQL的CRUD操作与数据库完整性约束之间的关系,特别是如何处理域完整性、实体完整性和引用完整性。通过实验,我们可以理解数据库管理系统如何确保数据的准确性和一致性,这对于理解和...