实现数据的完整性精.ppt
《实现数据的完整性精.ppt》由会员分享,可在线阅读,更多相关《实现数据的完整性精.ppt(84页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
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章章 实现数据的完整性实现数据
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实现 数据 完整性
限制150内