《第12章约束(精品).ppt》由会员分享,可在线阅读,更多相关《第12章约束(精品).ppt(31页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第12章 约束在数据库的设计和管理的过程中,维护数据完整性是一项重要的工作。数据完整性关系到数据库中数据的精确性、可用性。本章将详细介绍数据库的完整性含义和实现数据完整性的方式,即定义约束的具体操作。12.1 约束概述在数据库管理系统中,保证数据库中的数据完整性是非常重要的。数据完整性,是指存储在数据库中数据的一致性、正确性、精确性和可用性。约束是SQL Server 2005数据库实现数据的强制完整性的标准机制。本节将对约束的概念做一说明。12.1.1 数据完整性数据完整性对于数据管理信息系统是十分重要,因为数据的完整,是用户使用和管理数据库的基础。完整的数据,为客户提供可用的数据服务。数据
2、完整性,主要是指数据的一致性和正确性。在SQL Server2005数据库中,根据数据完整性涉及方式的不同,它所作用的数据库对象和范围也不同,可以将数据完整性分为实体完整性、域完整性和引用完整性,(具体内容请参照书。)12.1.2 约束的概念和类型约束是实现强制数据完整的ANSI标准的方法,是SQL Server 2005数据库实现强制数据完整性的重要方式。约束确保合法的数据值存入数据列中,并满足表间的约束关系。SQL Server 2005提供了下列机制,以强制数据的完整性,(具体内容请参照书。)12.2 设计约束本节将讲述约束的设置和具体的操作。这包括使用SQL Server Manage
3、ment Studio工具建立主键约束、外键约束、UNIQUE约束、默认值等,通过本节的讲述,用户可以深入理解约束的使用,并可以对数据进行强制完整性的基础维护。12.2.1 定义约束的方式定义约束的方式有许多种,指定PRIMARY KEY、FOREIGN KEY、UNIQUE或CHECK等约束,可以使用ALTER TABLE添加到表中的新列定义中;也可以使用SQL Server Management Studio图形工具为数据列、表增加约束。用户可以使用SQL Server Management Studio工具定义约束,也可以通过T-SQL脚本实现约束的创建和修改删除等工作。12.2.2 定
4、义约束的语法结构。指定PRIMARY KEY、FOREIGN KEY、UNIQUE或CHECK约束的属性,可以通过ALTER TABLE的语句添加到表中的定义,这种方式也可以在CREATE TABLE操作的同时实现。以下为CREATE TABLE和ALTER TABLE时进行约整定义的语法结构。12.3 主键约束一般在SQL Server 2005数据库中,保存数据的表都要设置主键。设置完主键约束的数据表将符合两项数据完整性规则:一是列不允许有空值,即指定的PRIMARY KEY约束,将数据列隐式转换为NOT NULL约束。二是不能有重复的值。如果对具有重复值或允许有空值的列添加PRIMARY
5、 KEY约束,则数据库引擎将返回一个错误并且不添加约束。12.3.1 一个主键约束的示例。示例:在AdventureWorks数据库中,几乎所有的数据表都有主键约束,可以通过以下步骤查看示例数据库中dbo.DatabaseLog数据表的主键约束。(具体内容请参照书。)12.3.2 使用表设计器定义主键约束。用户可以使用SQL Server Management Studio工具为数据表建立主键约束,使用表设计器建立主键约束的过程如下。(具体内容请参照书。)12.3.3 使用T-SQL定义主键约束。示例:以下示例在CREATE TABLE语句中,使用PRIMARY KEY NONCLUSTERE
6、D关键字为数据表定义非聚集的主键约束。(具体内容请参照书。)12.4 外键约束外键是用于建立和加强两个表数据之间关系的约束,它链接两表的一列或多列。通过将数据表中主键值的列添加到另一个数据表中,可创建两个表之间的关系。这个主键列就成为第二个表的外键。一般表现为两个数据表中,一张数据表的某一列的所有值,全部取自另外一张表的主键值。外键关系特性是关系型数据库二维表间关系的最重要的组成之一。12.4.1 一个外键约束的示例。在AdventureWorks数据库中,许多数据表都有外键约束,可以通过以下步骤查看示例数据库中Production.Product数据表的外键约束。(具体内容请参照书。)12.
7、4.2 使用表设计器定义外键约束。用户可以使用表设计器定义外键约束,具体的操作可以参考如下步骤实现。(具体内容请参照书。)12.4.3 使用T-SQL定义外键约束。示例:以下示例在ALTER TABLE语句中,使用FOREIGN KEY(employeeid)REFERENCES dbo.new_employees(id_num)为数据表增加外键约束,(具体内容请参照书。)12.5 UNIQUE约束UNIQUE约束是指表中的任何两行都不能有相同的列值。主键也强制实施唯一性,但主键不允许 NULL的出现。一般情况下UNIQUE约束用于确保在非主键列中不输入重复的值。用户可以在创建表时,将UNIQ
8、UE约束作为表定义的一部分。也可以在已经存在的数据表中,使用图形工具或者T-SQL脚本添加UNIQUE约束。一个表可含有多个UNIQUE约束。12.5.1 一个UNIQUE约束的示例。用户可以使用T-SQL在建立数据表时建立UNIQUE约束。(具体内容请参照书。)12.5.2 使用表设计器定义UNIQUE约束。用户可以使用表设计器定义UNIQUE约束,具体操作可以参考如下的步骤。(具体内容请参照书。)12.5.3 使用T-SQL定义UNIQUE约束。示例:以下示例在ALTER TABLE语句中,使用ADD CONSTRAINT U_phone UNIQUE(phone)语句为数据表增加UNIQ
9、UE约束,具体操作请参考如下步骤。(具体内容请参照书。)12.6 CHECK约束CHECK约束是限制列可接受的值,它可以强制域的完整性。在数据库中,一般会经常使用CHECK约束。用户可以通过代码和SQL Server Management Studio图形工具建立CHECK约束。12.6.1 一个CHECK约束的示例。使用SQL Server Management Studio工具的表设计器建立、修改和查看CHECK约束。具体操作请参考如下操作。(具体内容请参照书。)12.6.2 使用表设计器定义CHECK约束。使用表设计器建立CHECK约束比较简单,具体操作请参考如下步骤。(具体内容请参照书
10、。)12.6.3 使用T-SQL定义CHECK约束。示例:以下示例在ALTER TABLE语句中,使用ADD CONSTRAINTCHECK语句为数据表增加CHECK约束,具体操作请参考如下步骤。(具体内容请参照书。)12.7 DEFAULT约束默认值是一种常用的约束。在数据表中插入行时没有为列指定值,默认值则指定列中使用什么值。默认值可以是计算结果为常量的任何值,例如常量、内置函数或数学表达式。12.7.1 使用表设计器定义DEFAULT约束。用户可以使用SQL Server Management Studio工具的表设计器定义DEFAULT约束,具体操作可以参考如下的步骤。(具体内容请参照
11、书。)12.7.2 使用T-SQL定义DEFAULT约束。示例:以下示例在ALTER TABLE语句中,使用ADD CONSTRAINTDEFAULTFOR语句为数据表增加DEFAULT约束,具体操作请参考如下步骤。用户也可以通过T-SQL语句定义DEFAULT约束,请参考如下过程。(具体内容请参照书。)12.8 禁用约束用户有的时候需要禁用约束,例如在大容量的导入导出数据、临时性的数据维护或者其他操作时,SQL Server 2005数据表为用户提供了禁用约束的方法,这将帮助用户更好的维护数据。本节将列举一些禁用约束的示例。12.8.1 对复制禁用外键约束对复制用户可以禁用外键约束,这是约束关系的一个属性,具体操作可以参考如下步骤。(具体内容请参照书。)12.8.2 对复制禁用CHECK约束对复制用户可以禁用CHECK约束,这也是约束关系的一个属性,具体操作可以参考如下步骤。(具体内容请参照书。)12.8.3 对INSERT和UPDATE语句禁用外键约束对INSERT和UPDATE用户可以禁用外键约束,这也是约束关系的一个属性,具体操作可以参考如下步骤。(具体内容请参照书。)12.8.4 对INSERT和UPDATE语句禁用CHECK 约束对INSERT和UPDATE用户可以禁用CHECK约束,这也是约束关系的一个属性,具体操作可以参考如下步骤。(具体内容请参照书。)