《实现数据的完整性精.ppt》由会员分享,可在线阅读,更多相关《实现数据的完整性精.ppt(84页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、实现数据的完整性第1页,本讲稿共84页81数据完整性概述数据完整性概述 数据完整性的含义包括以下内容:1.数值的完整性,指数据类型与取值的正确性。例如取值为整型还是字符型,取值范围是否合理,是否允许空值等。2.表内数据不相互矛盾。例如指定一个表中的某些数据不得重复。3.表间数据不相互矛盾,指数据的关联性不被破坏。例如学生库中表学生信息的学号应与学生成绩表中的学号一致。第第8 8章章 实现数据的完整性实现数据的完整性 第2页,本讲稿共84页 8 8 8 81 1 1 11 1 1 1 数据完整性的分类数据完整性的分类数据完整性的分类数据完整性的分类数据完整性有不同的分类方法。(1)按照数据完整性
2、的功能可以将其分为四类:实实实实体体体体完完完完整整整整性性性性,要求表中每一条记录(每一行数据)是惟一的,即它必须至少拥有一个惟一标识以区分不同的数据行。实现方法有:主键约束PRIMARY KEY、惟一性约束UNIQUE、惟一索引UNIQUE INDEX、标识IDENTITY等 值值值值域域域域完完完完整整整整性性性性,限定表中输入数据的数据类型与取值范围。实现方法:默认值约束DEFAULT或默认对象、核查约束CHECK、外键约束FOREIGN KEY、规则RULE、数据类型、非空性约束NOT NULL等。引引引引用用用用完完完完整整整整性性性性,指对数据库进行添加、删除、修改数据时,要维护
3、表间数据的一致性。实现方法:外键约束外键约束外键约束外键约束FOREIGN KEYFOREIGN KEYFOREIGN KEYFOREIGN KEY、核查约束、核查约束CHECKCHECKCHECKCHECK、触发、触发、触发、触发器器器器TRIGGERTRIGGERTRIGGERTRIGGER、存储过程、存储过程、存储过程、存储过程PROCEDUREPROCEDUREPROCEDUREPROCEDURE。第第8 8章章 实现数据的完整性实现数据的完整性 第3页,本讲稿共84页 用用用用户户户户定定定定义义义义的的的的完完完完整整整整性性性性,用于实现用户特殊要求的数据规则或格式,例如在学生库
4、中,学生表的出生日期列数据可以规定格式为ddd-dd-dddd形式(d表示09之间的数据)。实现方法:默认值DEFAULT、核查约束CHECK、规则RULE等。(2)按照在数据库中实现数据完整性的作用级别,可以将其分为对象级与总体级对象级与总体级对象级与总体级对象级与总体级。对对对对象象象象级级级级:作用范围是数据库的某个表对象,是在定义表的同时定义的,删除表则失法作用,如约束。总总总总体体体体级级级级:是作为数据库的对象单独定义的,因此单独存在于数据库中,需要时可以绑定到数据库的表或用户定义的数据类型中,如默认对象、规则。(3)按照数据完整性的实施方法包括:约束、默认、规则、触约束、默认、规
5、则、触约束、默认、规则、触约束、默认、规则、触发器、存储过程等发器、存储过程等发器、存储过程等发器、存储过程等。第第8 8章章 实现数据的完整性实现数据的完整性实现数据的完整性实现数据的完整性 第4页,本讲稿共84页82执行数据完整性约束执行数据完整性约束 约束用于实现表内数据的完整性,属于对象级。SQL Server支持的约束有如下几种:非空约束NOT NULL,主键约束PRIMARY KEY、惟 一 约 束UNIQUE、核 查 约 束CHECK、外 键 约 束FOREIGNKEY、默认值约束DEFAULT。约束可以在创建表时定义,也可以在修改表时定义(即向已有的表中添加约束),但同一个数据
6、库中不同约束的名称不能相同。按约束的作用范围可以分为两类,在定义列时定义的约束,仅作用于本列,称之为列级约束:表中单独定义的约束,称之为表级约束。表级约束的声明与列的定义无关,当一个约束作用于一个以上的列时,必须使用表级约束。无论那种约束,其定义都离不开表的定义,因此删除表则约束失效。第第第第8 8 8 8章章章章 实现数据的完整性实现数据的完整性 第5页,本讲稿共84页8 8 8 82 2 2 21 1 1 1 主键约束主键约束PRIMARY KEYPRIMARY KEY 通常在表中将一个列或列组合的数据设置成具有各不相同的值,以便能惟一地标识表中的每一行。这样的一列或多列称为表的主键,通过
7、它可强制实现表的实体完整性,消除表的冗余数据,因此为了保证数据库的实体完整性,建议在大多数表中设置主键。第第第第8 8 8 8章章章章 实现数据的完整性实现数据的完整性 第6页,本讲稿共84页1.1.在企业管理器管理主键约束在企业管理器管理主键约束 实例实例8.18.1使用企业管理器查看学生库的学生信息表的PRIMARY KEY 约束。操作步骤:操作步骤:第第8 8章章 实现数据的完整性实现数据的完整性 第7页,本讲稿共84页2 2在在T-SQLT-SQL中创建主键约束中创建主键约束 实实例例8.2 8.2 在学生库创建一个表名为学生图书,定义图书编号为列级主键,列有:姓名、性别、年龄、专业、
8、相片。操作步骤:操作步骤:第第第第8 8 8 8章章章章 实现数据的完整性实现数据的完整性 第8页,本讲稿共84页归纳分析:归纳分析:主键具有如下特性:(1)不重复性。当将一列设置为主键时,则数据的取值在该列或列组合中是惟一的,因此主键列(或列组合)可以作为表中数据的标识列。(2)非空性。即主键列(或列组合)的每个数据不能出现空值。(3)惟一性。指一个表中最多只有一个主键。创建表时可通过定义PRIMARY KEY约束来创建主键。命令格式:命令格式:CREATE TABLE CREATE TABLE CREATE TABLE CREATE TABLE 表名表名表名表名 (列名列名列名列名 数据类
9、型数据类型数据类型数据类型 CONSTRAINT CONSTRAINT CONSTRAINT CONSTRAINT 主键约束名主键约束名主键约束名主键约束名 PRIMARY KEYPRIMARY KEYPRIMARY KEYPRIMARY KEY CLUSTERED|NON CLUSTERED 第第8 8章章 实现数据的完整性实现数据的完整性 第9页,本讲稿共84页 命令说明命令说明命令说明命令说明:CONSTRAINT主 键 约 束 名 为 可 选 项,关 键 字CONSTRAINT用于指定其后面的约束名称。如省略本选项,则系统自动给出一个约束名。建议选择约束名以便于识别。PRIMARY K
10、EY表示该列具有主键约束。CLUSTERED|NON CLUSTERED表示建立聚簇索引或非聚簇索引,省略此项则系统默认为聚簇索引。如果没有特别指定本选项,且没有为其他UNIQUE惟一约束指定聚簇索引,则默认对该PRIMARY KEY约束使用CLUSTERED。第第8 8章章 实现数据的完整性实现数据的完整性 第10页,本讲稿共84页 实实例例8.3 8.3 创建一个表图书信息,同时定义姓名和图书名称为列级主键“组合”,其他列名为编号,借书时间、还书时间、借书数量。操作步骤:操作步骤:第第第第8 8 8 8章章章章 实现数据的完整性实现数据的完整性 第11页,本讲稿共84页归纳分析:归纳分析:
11、定义表级主键。表级主键一般位于表定义中所有列定义之后,与列定义可以用逗号相隔,语法如下。命令格式:命令格式:CREATE TABLE CREATE TABLE CREATE TABLE CREATE TABLE 表名表名表名表名 (列名列名列名列名1 1 1 1 数据类型数据类型数据类型数据类型 CONSTRAINT CONSTRAINT CONSTRAINT CONSTRAINT 主键约束名主键约束名主键约束名主键约束名 PRIMARY KEYPRIMARY KEYPRIMARY KEYPRIMARY KEY CLUSTERED|NON CLUSTERED,(聚集索引 非聚集索引)主键列名主
12、键列名主键列名主键列名1 1 1 1 数据类型数据类型数据类型数据类型,主键列名主键列名主键列名主键列名2 2 2 2 数据类型数据类型数据类型数据类型)命令说明命令说明命令说明命令说明:(主键列名1 数据类型,主键列名2 数据类型)表示该表级主键可以作用于组合在一起的多列所构成的列组合。第第第第8 8 8 8章章章章 实现数据的完整性实现数据的完整性实现数据的完整性实现数据的完整性 第12页,本讲稿共84页3.删除表的主键约束 实例实例8.48.4 删除表图书信息中的主键约束。操作步骤:操作步骤:(1)启动“查询分析器”,输入如下SQL语句:ALTER TABLE 图书信息 DROP CON
13、STRAINT 组合(2)按“F5”键或单击工具栏“执行查询”图标。第第第第8 8 8 8章章章章 实现数据的完整性实现数据的完整性实现数据的完整性实现数据的完整性 第13页,本讲稿共84页归纳分析:归纳分析:将表的主键由当前列换到另一列。一般先删除主键,然后在另一列上添加主键。删除主键约束语法。命令格式:命令格式:ALTER TABLE ALTER TABLE ALTER TABLE ALTER TABLE 表名表名表名表名 DROP CONSTRAINT DROP CONSTRAINT DROP CONSTRAINT DROP CONSTRAINT 主键约束名主键约束名主键约束名主键约束名
14、 第第8 8章章 实现数据的完整性实现数据的完整性 第14页,本讲稿共84页4.更改表的主键约束 实实例例8.5 8.5 修改表图书信息,添加编号,将姓名和图书名称为列级主键改为编号和姓名。操作步骤:操作步骤:第第第第8 8 8 8章章章章 实现数据的完整性实现数据的完整性 第15页,本讲稿共84页归纳分析:归纳分析:更改表的主键约束包括在现有表中添加新的一个主键列、使一个表的某现有列成为主键、将现有表的主键由当前列换到另一列、删除表的主键等。以下语法对列级与表级主键同样适用。(1)在现有表中添加一列,同时将其设置为主键,要求表中原先没有主键,语法如下。第第8 8章章 实现数据的完整性实现数据
15、的完整性 第16页,本讲稿共84页命令格式:命令格式:ALTER TABLE ALTER TABLE ALTER TABLE ALTER TABLE 表名表名表名表名 ADD ADD ADD ADD 列名列名列名列名 数据类型数据类型数据类型数据类型 DEFAULT DEFAULT DEFAULT DEFAULT 默认表达式默认表达式默认表达式默认表达式|IDENTITY(|IDENTITY(|IDENTITY(|IDENTITY(标识,自动标号列标识,自动标号列标识,自动标号列标识,自动标号列)CONSTRAINT CONSTRAINT CONSTRAINT CONSTRAINT 主键约束名
16、主键约束名主键约束名主键约束名 PRIMARY KEY CLUSTERED|NON CLUSTERED PRIMARY KEY CLUSTERED|NON CLUSTERED PRIMARY KEY CLUSTERED|NON CLUSTERED PRIMARY KEY CLUSTERED|NON CLUSTERED 命令说明命令说明命令说明命令说明:ALTER TABLE只允许添加可包含空值或指定了DEFAULT定义的列。因为主键不能包含空值,所以需要指定DEFAULT定义,或指定IDENTITY。其他说明与创建主键约束类同。第第8 8章章 实现数据的完整性实现数据的完整性 第17页,本讲稿
17、共84页(2)使表中现有的一列(或列组合)成为主键,要求表中原先没有主键。且备选主键列中的已有数据不得重复或为空,语法如下。命令格式:命令格式:ALTER TABLE ALTER TABLE ALTER TABLE ALTER TABLE 表名表名表名表名 WITH CHECK|WITH NON CHECKWITH CHECK|WITH NON CHECKWITH CHECK|WITH NON CHECKWITH CHECK|WITH NON CHECK ADD CONSTRAINT ADD CONSTRAINT ADD CONSTRAINT ADD CONSTRAINT 约束名约束名约束名约
18、束名 PRIMARY KEY PRIMARY KEY PRIMARY KEY PRIMARY KEY CLUSTERED|NON CLUSTERED(列名列名列名列名n)n)n)n)命令说明命令说明命令说明命令说明:(1)WITH CHECK为默认选项,该选项表示将使用新的主键约束来检查表中已有数据是否符合主键条件;如果使用了WITH NOCHECK选项,则不进行检查。(2)ADD指定要添加的约束。第第8 8章章 实现数据的完整性实现数据的完整性 第18页,本讲稿共84页8 82 2 2 22 2 惟一约束惟一约束惟一约束惟一约束UNIQUEUNIQUEUNIQUEUNIQUE1.在企业管理器
19、中管理惟一约束 实实例例8.6 8.6 在企业管理器的学生数据库中,选定学生图书建立惟一约束。操作步骤:操作步骤:第第8 8章章 实现数据的完整性实现数据的完整性实现数据的完整性实现数据的完整性 第19页,本讲稿共84页2.用SQL语句创建惟一约束 实例实例8.7 8.7 建立表图书,其中列图书编号包含一个主键图书主键 操作步骤:操作步骤:第第第第8 8 8 8章章章章 实现数据的完整性实现数据的完整性 第20页,本讲稿共84页 归纳分析:归纳分析:惟一性约束指定一个或多个列的组合的值具有惟一性,以防止在列中输入重复的值。惟一性约束指定的列可以有空属性。由于主关键字值是具有惟一性的,因此主关键
20、字列不能再设定惟一性约束。惟一性约束最多由16 个列组成。命令格式:命令格式:CREATE TABLE CREATE TABLE CREATE TABLE CREATE TABLE 表名表名表名表名 (列名列名列名列名 数据类型数据类型数据类型数据类型 CONSTRAINT CONSTRAINT CONSTRAINT CONSTRAINT 约束名约束名约束名约束名 UNIQUEUNIQUEUNIQUEUNIQUE )显然,惟一约束与主键约束的定义十分相似,区别仅在于惟一约束采用关键字UNIQUE而主键约束采用关键字PRIMARY KEY。第第8 8章章 实现数据的完整性实现数据的完整性实现数据
21、的完整性实现数据的完整性 第21页,本讲稿共84页3.更改现有表的惟一约束 实例实例8.8 8.8 在表图书中添加一列出版日期,同时对该列设置表中第2个惟一约图书约束2。因为在例8中已经将第1个惟一约束图书约束设置为聚自选项(默认选项),因此第2个惟一约束必须设置为非聚簇选项。操作步骤:操作步骤:第第8 8章章 实现数据的完整性实现数据的完整性实现数据的完整性实现数据的完整性 第22页,本讲稿共84页8 8 8 82 2 2 23 3 3 3 核查约束核查约束CHECKCHECK1.使用企业管理器管理核查约束 实实例例8.9 8.9 使用企业管理器为学生图书中设置年龄不能小于15岁,创建CHE
22、CK 约束。操作步骤:操作步骤:第第第第8 8 8 8章章章章 实现数据的完整性实现数据的完整性实现数据的完整性实现数据的完整性 第23页,本讲稿共84页2.使用SQL语句创建核查约束 实例实例8.10 8.10 创建表图书并插入数据,其中的列图书编号的取值要求为4个字符,第1个字符为字母AE中的一个,第2个字符为数字15之间的整数,第3个和第4个字符均为09之间的整数。操作步骤:操作步骤:第第8 8章章 实现数据的完整性实现数据的完整性实现数据的完整性实现数据的完整性 第24页,本讲稿共84页注意注意:利用查询语句可知结果插入成功。若将插入的数据改为核查约束范围以外的数据,例如1999,则系
23、统报错,请读者自行试一试。归纳分析:归纳分析:核查约束用于检查输入数据的取值是否正确,只有符合核查约束条件的数据才能输入。在一个表中可以建立多个核查约束,在一列上也可以建立多个核查约束,只要它们不相互矛盾。创建表时定义核查约束。第第第第8 8 8 8章章章章 实现数据的完整性实现数据的完整性 第25页,本讲稿共84页命令格式:命令格式:CREATE TABLE CREATE TABLE CREATE TABLE CREATE TABLE 表名表名表名表名 (列名列名列名列名 数据类型数据类型数据类型数据类型 CONSTRAINT CONSTRAINT CONSTRAINT CONSTRAINT
24、 约束名约束名约束名约束名 CHECK CHECK CHECK CHECK NOT FOR REPLICATION (条件表达式条件表达式条件表达式条件表达式)第第第第8 8 8 8章章章章 实现数据的完整性实现数据的完整性 第26页,本讲稿共84页命令格式:命令格式:CREATE TABLE CREATE TABLE CREATE TABLE CREATE TABLE 表名表名表名表名 (列名列名列名列名 数据类型数据类型数据类型数据类型 CONSTRAINT CONSTRAINT CONSTRAINT CONSTRAINT 约束名约束名约束名约束名 CHECK CHECK CHECK CH
25、ECK NOT FOR REPLICATION (条件表达式条件表达式条件表达式条件表达式)第第8 8章章 实现数据的完整性实现数据的完整性实现数据的完整性实现数据的完整性 第27页,本讲稿共84页8 8 8 82 24 4 外健约束外健约束FOREIGN KEYFOREIGN KEYFOREIGN KEYFOREIGN KEY1.使用企业管理器管理外键约束使用企业管理器管理外键约束使用企业管理器管理外键约束使用企业管理器管理外键约束 实实例例8.12 8.12 使用企业管理器创建学生成绩表和学生信息表的FOREIGN KEY 约束。操作步骤:操作步骤:第第8 8章章 实现数据的完整性实现数据
26、的完整性实现数据的完整性实现数据的完整性 第28页,本讲稿共84页3.3.更改表的外键约束更改表的外键约束更改表的外键约束更改表的外键约束 实实例例8.148.14在表图书中增加一列图书编号,该列具有外键约束图书_约束1,它引自表学生图书中的主键编号。操作步骤:操作步骤:第第第第8 8 8 8章章章章 实现数据的完整性实现数据的完整性 第29页,本讲稿共84页归纳分析:归纳分析:当向表中插入一行数据时,若没有指定其中某一列字段的数值,则该字段的数值按如下次序取值:若该字段定义有默认值,则系统将默认值插入字段。若该字段定义没有默认值,但允许空,则插入空值。若该字段定义没有默认值,又不允许空,则报
27、错。显然,对于非空字段,默认值极为重要。默认值有两种设置方式,默认值约束与默认对象。默认值约束是对象级的,其作用范围仅限于一个表,删除表则删除默认值约束。默认值对象是数据库级的,作为数据库对象单独存在于数据库中,需要时可以绑定到任何一个表中。第第第第8 8 8 8章章章章 实现数据的完整性实现数据的完整性实现数据的完整性实现数据的完整性 第30页,本讲稿共84页归纳分析:归纳分析:(1)在现有表中添加新的一列,该列具有默认值约束。命令格式:命令格式:ALTER TABLE ALTER TABLE ALTER TABLE ALTER TABLE 表名表名表名表名 ADD CONSTRAINT A
28、DD CONSTRAINT ADD CONSTRAINT ADD CONSTRAINT 默认名默认名默认名默认名 DEFAULT DEFAULT DEFAULT DEFAULT 表达式表达式表达式表达式 (2)为表中现有列添加默认约束 命令格式:命令格式:ALTER TABLE ALTER TABLE ALTER TABLE ALTER TABLE 表名表名表名表名 ADD CONSTRAINT ADD CONSTRAINT ADD CONSTRAINT ADD CONSTRAINT 默认名默认名默认名默认名 DEFAULT DEFAULT DEFAULT DEFAULT 表达式表达式表达式表
29、达式 FOR FOR FOR FOR 列名列名列名列名 命令说明:命令说明:命令说明:命令说明:默认表达式的值 用于关键字FOR所指定的列名。(3)删除默认值约束的语法同删除主键。第第第第8 8 8 8章章章章 实现数据的完整性实现数据的完整性实现数据的完整性实现数据的完整性 第31页,本讲稿共84页 命令说明命令说明命令说明命令说明:规则表达式,与WHERE子句中的条件表达式类似,可以使用比较表达式、逻辑表达式、LIKE子句等,所不同的是需要将WHERE子句中的列名改为一个以开头并符合SQL Server命名规则的参数。将规则绑定到列上时,该参数代表INSERT语句或UPDATE语句所输入的
30、数据,因此其参数名字可以随意。注意注意:规则表达式不能引用表中的列或其他数据库对象。第第第第8 8 8 8章章章章 实现数据的完整性实现数据的完整性实现数据的完整性实现数据的完整性 第32页,本讲稿共84页归纳分析:归纳分析:当表中不再需要规则时,可以将规则与列分离,称为解除绑定。解除绑定需要使用系统存储过程sp_unbindmle。命令格式:命令格式:sp_unbindrule sp_unbindrule sp_unbindrule sp_unbindrule 表名表名表名表名.列名列名列名列名|用户定义的数据类型用户定义的数据类型用户定义的数据类型用户定义的数据类型 命令说明命令说明:解除
31、绑定后规则仍然存在于数据库系统中,只不过它与表的联系没有了。第第8 8章章 实现数据的完整性实现数据的完整性实现数据的完整性实现数据的完整性 第33页,本讲稿共84页归纳分析:归纳分析:使用默认的过程与使用规则的过程类似,依次为创建默认一绑定默认一解除绑定一删除默认,其中语法项目的表述及用法也类似。命令格式:命令格式:CREATE DEFAULT CREATE DEFAULT CREATE DEFAULT CREATE DEFAULT 默认对象名称默认对象名称默认对象名称默认对象名称 AS AS AS AS 默认表达式默认表达式默认表达式默认表达式 第第8 8章章 实现数据的完整性实现数据的完
32、整性实现数据的完整性实现数据的完整性 第34页,本讲稿共84页8 84 45 5 5 5 删除默认删除默认删除默认删除默认 实例实例8.26 8.26 删除默认对象。操作步骤:操作步骤:(1)启动“查询分析器”,输入如下SQL语句:DROP DEFAULT df_DROP DEFAULT df_图书图书 GOGO (2)按“F5”键或单击工具栏“执行查询”图标。归纳分析:归纳分析:删除默认之前要先解除默认绑定。删除默认的命令格式:命令格式:DROP DEFAULT DROP DEFAULT DROP DEFAULT DROP DEFAULT 默认对象名称默认对象名称默认对象名称默认对象名称 第
33、第第第8 8 8 8章章章章 实现数据的完整性实现数据的完整性 第35页,本讲稿共84页8.6本章总结本章总结1.数据的完整性指数据库中数据的一致性与正确性。在SQL Server 2000中,可以通过约束、默认、规则、触发器等来达到保证数据完整性的目的。2.SQL Server支持的约束有如下几种:非空约束NOT NULL,主键约束PRIMARY KEY、惟一约束UNIQUE、核查约束CHECK、外键约束FOREIGNKEY、默认值约束DEFAULT。3.主键具有不重复性、非空性、惟一性的特性。4.惟一性约束指定一个或多个列的组合的值具有惟一性,以防止在列中输入重复的值。惟一性约束指定的列可
34、以有空属性。5核查约束用于检查输入数据的取值是否正确,只有符合核查约束条件的数据才能输入。在一个表中或列中可以建立多个核查约束,只要它们不相互矛盾。第第8 8章章 实现数据的完整性实现数据的完整性 第36页,本讲稿共84页7.什么是惟一性约束?在数据完整性中使用时应注意的问题是什么?8.什么是核查约束?在数据完整性中使用时应注意的问题是什么?9.什么是外键约束?在数据完整性中使用时应注意的问题是什么?10.什么是默认值约束?在数据完整性中使用时应注意的问题是什么?11.什么是规则?如何使用规则?12.什么是默认?如何使用默认?13.试说明自动编号的特点?第第第第8 8 8 8章章章章 实现数据
35、的完整性实现数据的完整性 第37页,本讲稿共84页(11)建立表商品,其中型号默认值为1111,然后在该表中增加一列出厂日期默认值为“2004/1/1”,最后为表中的列品种添加默认值为60完成插入表。(12)创建规则range1,使数据范围在10-200之间。(13)创建表商品1字段为商品编号,品种,型号,再将12题创建的规则绑定在表中的品种列上。(14)解除表商品中列品种所绑定的规则。(15)建立默认df商品,其默认值为5。再将该默认对象绑定到表销售的列包装数上,然后插入数据。(16)建立表商品1,字段为商品序号和商品名称,表中“商品序号”为自动编号属性,然后再该表中插入数据,注意不能向“商
36、品序号”插入数据。第第第第8 8 8 8章章章章 实现数据的完整性实现数据的完整性 第38页,本讲稿共84页命令说明命令说明命令说明命令说明:(1)NOT FOR REPLICATION:该选项表示在复制表时禁用核查约束。(2)CHECK:该关键字表示定义的约束为核查约束。(3)条件表达式:为核查准则,一般是条件表达式,与WHERE子句中的查询条件表达式类似,可以采用:算术表达式,如:数量1000,逻辑表达式,如:s数量1000 AND数量3000 LIKE子句,如:编号LIKE a-z0-90-9109 IN 或NOT IN,如:性别(M,F,)BETWEEN或NOT BETWEEN,如:数
37、量 BETWEEN 1000 AND 3000第第8 8章章 实现数据的完整性实现数据的完整性 第39页,本讲稿共84页3.更改表的核查约束更改表的核查约束 实实例例8.11 8.11 在实例8.10所建立的表图书中插入一列包装数,要求该列为1位整数,且取值范围在16之间,并在该列设置核查约束图书检查约束2,以实现检查包装数输入数据正确性。操作步骤:操作步骤:第第8 8章章 实现数据的完整性实现数据的完整性实现数据的完整性实现数据的完整性 第40页,本讲稿共84页 归纳分析:归纳分析:在现有表中添加新的一列,该列具有核查约束。命令格式:命令格式:ALTER TABLE ALTER TABLE
38、ALTER TABLE ALTER TABLE 表名表名表名表名 ADD ADD ADD ADD 列名列名列名列名 数据类型数据类型数据类型数据类型 CONSTRAINT CONSTRAINT CONSTRAINT CONSTRAINT 检查约束名检查约束名检查约束名检查约束名 CHECK CHECK CHECK CHECKNOT FOR REPLICATION (检查约束条件检查约束条件检查约束条件检查约束条件)4.4.删除核查约束删除核查约束删除核查约束删除核查约束删除核查约束的语法与删除主键约束相同。第第8 8章章 实现数据的完整性实现数据的完整性实现数据的完整性实现数据的完整性 第41
39、页,本讲稿共84页8 8 8 82 24 4 4 4 外健约束外健约束外健约束外健约束FOREIGN KEYFOREIGN KEYFOREIGN KEYFOREIGN KEY1.使用企业管理器管理外键约束使用企业管理器管理外键约束使用企业管理器管理外键约束使用企业管理器管理外键约束 实实例例8.12 8.12 使用企业管理器创建学生成绩表和学生信息表的FOREIGN KEY 约束。操作步骤:操作步骤:第第8 8章章 实现数据的完整性实现数据的完整性实现数据的完整性实现数据的完整性 第42页,本讲稿共84页2.2.2.2.在在在在T-SQLT-SQLT-SQLT-SQL中创建外键约束中创建外键约
40、束中创建外键约束中创建外键约束 实实例例8.13 8.13 建表图书,其中列编号具有外键约束名为图书_约束,它引自表学生图书的对应同名列。操作步骤:操作步骤:第第8 8章章 实现数据的完整性实现数据的完整性 第43页,本讲稿共84页归纳分析:归纳分析:外键是最能体现关系型数据库引用完整性特点的约束。将一个表的一列(或列组合)定义为引用其他表的主键或惟一约束列,则引用表中的这个列(或列组合)就称为外键。被引用的表称为主键约束(或惟一约束)表;引用表称为外键约束表。外键的这种引用关系如图8.11所示。命令格式:命令格式:CREATE TABLE CREATE TABLE CREATE TABLE
41、CREATE TABLE 表名表名表名表名 (列名列名列名列名 数据类型数据类型数据类型数据类型 CONSTRAINT CONSTRAINT CONSTRAINT CONSTRAINT 约束名约束名约束名约束名 FOREIGN KEY REFERENCES FOREIGN KEY REFERENCES FOREIGN KEY REFERENCES FOREIGN KEY REFERENCES 外键表名(对应列名外键表名(对应列名外键表名(对应列名外键表名(对应列名)第第8 8章章 实现数据的完整性实现数据的完整性 第44页,本讲稿共84页命令说明命令说明命令说明命令说明:外键表名(对应列名):
42、必须是主键或惟一约束列。关于外键有如下几点需要注意:(1)由外键所引用的列(或列组合)必须是主键或具有惟一约束的列,其数据值不能重复。(2)外键列中的数据介许重复。(3)外键也可以引用其自身所在表中的主键或惟一约束列,这种引用称为自引用。(4)外键仅能引用同一数据库下的某个表。(5)一个表可以有多个外键约束。(6)具有外键约束的列(或列组合),其数据类型及其列组合中的列数必须与它所引用的主键或惟一约束列(或列组合)相同,但列名不必一定相同。第第第第8 8 8 8章章章章 实现数据的完整性实现数据的完整性实现数据的完整性实现数据的完整性 第45页,本讲稿共84页3.3.3.3.更改表的外键约束更
43、改表的外键约束 实实例例8.148.14在表图书中增加一列图书编号,该列具有外键约束图书_约束1,它引自表学生图书中的主键编号。操作步骤:操作步骤:第第第第8 8 8 8章章章章 实现数据的完整性实现数据的完整性实现数据的完整性实现数据的完整性 第46页,本讲稿共84页归纳分析:归纳分析:修改或删除外键所对应的主键时,都将受到外键约束关系的限制而使该操作不可实现。例如,假设学生图书表与图书表具有外键关系,如果在学生图书表中删除一条记录,而由于这条记录的主键学生图书在图书表中被使用,则将导致这两个表之间关联的完整性被破坏,图书表中该姓名等记录因为与学生图书表中的数据没有链接而变得孤立了。外键约束
44、防止了这种情况的发生。如果主键表中数据的更改使之与外键表中数据的链接失效,则这种更改是不能实现的,从而确保了引用完整性。若要成功地更改或删除外键约束所对应的主键行记录,则可以先在外键表中删除或更改外键数据,然后将外键链接到另一个不同的主键数据上去。同样,删除主键所在表时,必须首先删除该主键所对应的外键所在表,或删 除外键关系。第第第第8 8 8 8章章章章 实现数据的完整性实现数据的完整性实现数据的完整性实现数据的完整性 第47页,本讲稿共84页命令格式:命令格式:ALTER TABLE ALTER TABLE ALTER TABLE ALTER TABLE 表名表名表名表名 (ADD(ADD
45、(ADD(ADD 列名列名列名列名 数据类型数据类型数据类型数据类型 CONSTRAINT CONSTRAINT CONSTRAINT CONSTRAINT 约束名约束名约束名约束名 FOREIGN KEY REFERENCES FOREIGN KEY REFERENCES FOREIGN KEY REFERENCES FOREIGN KEY REFERENCES 外键表名外键表名外键表名外键表名(对应列名对应列名对应列名对应列名)第第8 8章章 实现数据的完整性实现数据的完整性 第48页,本讲稿共84页8 82 25 5 5 5默认值约束默认值约束默认值约束默认值约束1.1.使用企业管理器管
46、理默认值约束使用企业管理器管理默认值约束 实实例例8.15 8.15 在企业管理器中将学生库中的图书信息表中借书时间,设置默认值为2007年01月01日。操作步骤:操作步骤:第第第第8 8 8 8章章章章 实现数据的完整性实现数据的完整性 第49页,本讲稿共84页归纳分析:归纳分析:当向表中插入一行数据时,若没有指定其中某一列字段的数值,则该字段的数值按如下次序取值:若该字段定义有默认值,则系统将默认值插入字段。若该字段定义没有默认值,但允许空,则插入空值。若该字段定义没有默认值,又不允许空,则报错。显然,对于非空字段,默认值极为重要。默认值有两种设置方式,默认值约束与默认对象。默认值约束是对
47、象级的,其作用范围仅限于一个表,删除表则删除默认值约束。默认值对象是数据库级的,作为数据库对象单独存在于数据库中,需要时可以绑定到任何一个表中。第第8 8章章 实现数据的完整性实现数据的完整性实现数据的完整性实现数据的完整性 第50页,本讲稿共84页创建表时定义默认值约束。命令格式:命令格式:CREATE TABLECREATE TABLECREATE TABLECREATE TABLE表名表名表名表名 (列名列名列名列名 数据类型数据类型数据类型数据类型 CONSTRAINT CONSTRAINT CONSTRAINT CONSTRAINT 默认名默认名默认名默认名 DEFAULT DEFA
48、ULT DEFAULT DEFAULT 表达式表达式表达式表达式 )第第8 8章章 实现数据的完整性实现数据的完整性实现数据的完整性实现数据的完整性 第51页,本讲稿共84页命令说明命令说明命令说明命令说明:(1)DEFAULT关键字用以指明其后的常数表达式,为该列的默认值,常数表达式中除了允许使用常数、NULL值和表达式作为默认值外,还可以使用SQL Server系统函数如current_user、system_user、user、getdate()等的值作为默认值。默认值的数据类型必须与列定义的数据类型一致,且不能与CHECK约束矛盾。(2)DEFAULT约束定义的默认值仅在执行INSER
49、T操作插入数据时生效。(3)一列至多有一个默认值,其中包括NULL值。(4)具有IDENTITY属性或TIMESTAMP数据类型属性的列不能使用默认值,text与image类型的列只能以NULL为默认值。第第第第8 8 8 8章章章章 实现数据的完整性实现数据的完整性实现数据的完整性实现数据的完整性 第52页,本讲稿共84页2.2.2.2.更改表的默认约束更改表的默认约束 实实例例8.16 8.16 创创建建图书登记表,列名有图书编号、图书名称、借阅次数和图书类别。借阅次数设置默认值为1。然后在图书登记中添加借阅日期列,并设置默认值为2007年01月01日,在向表中输入数据查看结果。操作步骤:
50、操作步骤:第第第第8 8 8 8章章章章 实现数据的完整性实现数据的完整性实现数据的完整性实现数据的完整性 第53页,本讲稿共84页归纳分析:归纳分析:(1)在现有表中添加新的一列,该列具有默认值约束。命令格式:命令格式:ALTER TABLE ALTER TABLE ALTER TABLE ALTER TABLE 表名表名表名表名 ADD CONSTRAINT ADD CONSTRAINT ADD CONSTRAINT ADD CONSTRAINT 默认名默认名默认名默认名 DEFAULT DEFAULT DEFAULT DEFAULT 表达式表达式表达式表达式 (2)为表中现有列添加默认约