一、 实验题目

数据库完整性定义与检查

二、 实验内容和要求

完整性语言实验包含3个实验项目,其中2个必修项目,1个选修项目。该实验的各个实验项目均为验证型实验项目。
掌握实体完整性的定义和维护方法。
掌握参照完整性的定义和维护方法。
掌握用户自定义完整性的定义和维护方法。

三、 实验步骤

(一) 实体完整性实验

定义实体完整性,删除实体完整性。能够写出两种方式定义实体完整性的SQL语句:创建表时定义实体完整性、创建表后定义实体完整性。设计SQL语句验证完整性约束是否起作用。
实验重点:创建表时定义实体完整性。
实验难点:有多个候选码时实体完整性的定义。

1. 创建表时定义实体完整性

在这里插入图片描述
在这里插入图片描述
还有主码由多个属性组成的实体完整性定义,必须定义在表级,如上图所示!

2. 创建表后定义实体完整性

在这里插入图片描述
使用ALTER TABLE <表名> ADD CONSTRAIN <名称> PRIMARY KEY(<属性组>);

3. 多个候选码时定义实体完整性

在这里插入图片描述
定义国家表的实体完整性,其中nationkey和name都是候选码,选择nationkey作为主码,name上定义唯一性约束。

4. 删除实体完整性

在这里插入图片描述

5. 验证实体完整性

在这里插入图片描述
两条主码相同的记录违反实体完整性,第二条无法插入。W

(二) 参照完整性实验

定义参照完整性,定义参照完整性的违约处理,删除参照完整性。写出两种方式定义参照完整性的SQL语句:创建表时定义参照完整性、创建表后定义参照完整性。
实验重点:创建表时定义参照完整性。
实验难点:参照完整性的违约处理定义。

1. 创建表时定义参照完整性

在这里插入图片描述
如图,创建表时定义参照完整性,有上图表级、列级两种方式;
CONSTRAINT <名称> FOREIGN KEY <属性> REFERENCES <表名>(<列名>)

2. 创建表后定义实体完整性

在这里插入图片描述
定义表后,使用ALTER TABLE <表名> ADD CONSTRAIN <名称> FOREIGN KEY(<属性名>) REFERNCES <表名>(列名);

3. 定义参照完整性的违约处理

在这里插入图片描述
在定义参照完整性时,设置违约处理,当删除或修改被参照记录时,设置参照表中相应记录值为空。
CONSTRAINT <名称> FOREIGN KEY <属性> REFERENCES <表名>(<列名>)
ON <操作>

4. 删除参照完整性

在这里插入图片描述
ALTER TABLE <表名> DROP CONSTRAINT <约束名>;

5. 插入记录验证参照完整性

在这里插入图片描述
在这里插入图片描述
当直接插入Supplier表中时,因为nation表中没有主键为101的记录,因此无法插入成功;
在这里插入图片描述

(三) 用户自定义完整性实验

针对具体应用语义,选择NULL/NOT NULL、DEFAULT、UNIQUE、CHECK等,定义属性上的约束条件。
实验重点:NULL/NOT NULL, DEFAULT。
实验难点:CHECK。

1. 定义NULL/NOT NULL约束、DEFAULT约束、UNIQUE约束在这里插入图片描述

2. 验证上述约束

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3. 定义check约束

定义订单表,returnflag表示退货标志,使用CHECK约束使之固定为几个值,shipdate、receiptdate分别为装运日期、签收日期,CHECK约束使之装运日期<签收日期。
在这里插入图片描述

4. 检查CHECK约束

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐