广工数据库实验报告-数据库完整性

合集下载

数据的完整性实验报告

数据的完整性实验报告

数据的完整性实验报告摘要:数据在当今信息时代中扮演着重要的角色。

数据的完整性是数据质量的一个重要方面,它涉及数据的准确性和完整性。

本实验报告旨在通过实验评估不同数据完整性技术的效果,并提供对数据完整性的讨论和分析。

引言:在现代社会中,数据的运用范围越来越广泛,涉及到各行各业。

然而,随着数据量的迅速增长,数据完整性问题也日益凸显。

数据完整性是指数据的准确性和完整性,即数据应当准确反映所要代表的事物,并包含所有必要的信息。

数据完整性对于任何组织或个人来说都是至关重要的,特别是在数据分析、决策制定和信息处理过程中。

方法:为了评估不同数据完整性技术的效果,我们使用了一个具体的实例,即一个销售数据集。

该数据集包含了各种关于销售订单的信息,包括订单号、产品编号、客户信息、销售日期等。

我们选择了以下几种数据完整性技术进行实验:校验和、冗余数据、数据验证规则和错误检测。

首先,我们使用校验和技术来确保数据的完整性。

校验和是一种简单而有效的技术,通过对数据进行加和计算,然后与事先计算好的校验和进行比较来检测数据是否完整。

我们计算了销售订单数据集的校验和,并与预期值进行了比较。

通过比较,我们可以确定是否存在数据完整性问题。

其次,我们使用了冗余数据技术来确保数据的完整性。

冗余数据是指在不同的数据集中存储相同的数据。

通过在销售订单数据集中引入冗余数据,并对比原始数据和冗余数据的差异来检测数据的完整性。

接下来,我们使用了数据验证规则技术来确保数据的完整性。

数据验证规则是指通过定义一组规则,来验证数据是否满足规定的条件。

我们在销售订单数据集中定义了一组数据验证规则,包括产品编号的有效性、客户信息的完整性等。

通过应用这些规则来检验数据的完整性。

最后,我们使用错误检测技术来确保数据的完整性。

错误检测技术是指通过对数据进行扫描和检测,来发现数据中的错误或异常。

我们扫描了销售订单数据集中的所有字段,并检测了可能存在的错误或异常情况。

数据库完整性实验总结(必备6篇)

数据库完整性实验总结(必备6篇)

数据库完整性实验总结第1篇时间流水,短短的两周就流逝了,回想在这两周的实训生活,我从单一,片面的学习进入了全面,系统的学习,学好它更是一项大任务。

而对于如何学好它,光靠理论知识是远远不够的,_同志曾经就说过“实践是检验真理的唯一标准”!正如大师傅炒菜,知道炒菜的程序,主料、调料一清二楚,不真正掌勺,永远也成不了“大厨”。

而学校给我们提供了这样一个机会,让我们自己_掌勺_,使我们从实践中,加深了对数据库的理解。

经过这次的实训,我们对数据库有了更深的了解,从书面的明白到实践的理解,接触到了自己以前没有接触到的东西,并让我加深了数据库知识的学习和理解,也使我进一步了解数据库,这次实训可以为我们以后真正的实际数据库系统设计提供很好的借鉴。

更使我明白遇到什么挫折,不气馁,不放弃,勇于探索,才会让自己离成功越来越近!俗话说:知之为知之,不知为不知!不要不懂装懂,有什么不懂的要敢于向_知之者_请教!知识是慢慢积累而成的,我们学习不仅要学习理论知识,而实践也是非常重要的,只有当两者结合,才会获得收获!我们这次实习对我们的认识起到了很大的启发作用,使我们以后在接触数据库的过程中少走点弯路。

也使我们对人生和社会有了更清楚的认识,任何的成功都有艰辛和汗水铺出来的,没有那么多的意外收获。

我们要学的还有很多,要接触的还不知道有多少,以后的路还很漫长,我相信我会更加努力的,把握现在,为自己的未来而奋斗,展开双翅飞向美好的未来!在这里很感谢xxx老师给我们传授了这么多的知识和经验,让我们在毕业之际更好的填补自己的不足。

数据库完整性实验总结第2篇在学习《数据库原理及应用》这门课之前,就和课本上提到的一个观点一样,认为它只是存放数据的仓库而已,但是现在我深深体会到这个观点是多么的片面。

数据库是长期存储在计算机内,有组织、可共享的大量的数据集合,前者只能表达它的一方面而已。

数据库技术发展到今天已经是一门非常成熟的技术,它的技术水平、应用水平多比初始时都有了很大的改变,但是它的最基本的特征却没有变,概括起来有以下几个方面:第一点:数据库是相互关联的的数据集合;即在数据库中不仅要能够表示数据本身,还要能够表示数据与数据之间的关系。

数据完整性实验报告

数据完整性实验报告

实验名称:数据完整性验证实验实验日期:2023年4月10日实验地点:XX大学计算机实验室实验目的:1. 了解数据完整性的概念和重要性。

2. 掌握数据完整性验证的方法和工具。

3. 提高对数据质量控制和数据管理的认识。

实验原理:数据完整性是指数据的准确、一致和可靠。

在数据管理过程中,数据完整性是保证数据质量的基础。

数据完整性验证是指通过各种方法对数据进行检查,确保数据的准确性和一致性。

实验器材:1. 实验计算机:一台配置较高的计算机,用于运行数据完整性验证工具。

2. 数据库管理系统:如MySQL、Oracle等,用于存储实验数据。

3. 数据完整性验证工具:如SQL Profiler、DataGrip等,用于检测数据完整性问题。

实验步骤:1. 数据准备(1)创建一个数据库,并在数据库中创建一个表,用于存储实验数据。

(2)向表中插入一些数据,包括正常数据和异常数据。

2. 数据完整性验证(1)使用SQL Profiler工具对数据库进行数据完整性验证。

(2)在SQL Profiler中配置监控参数,如监控类型、监控对象等。

(3)启动SQL Profiler,运行数据库操作,如插入、更新、删除等。

(4)观察SQL Profiler的输出结果,检查数据是否发生异常。

3. 结果分析(1)分析SQL Profiler的输出结果,找出数据完整性问题。

(2)根据问题类型,提出解决方案。

实验结果:1. 数据完整性问题(1)在插入异常数据时,发现部分数据未满足数据类型约束。

(2)在更新数据时,发现部分数据未满足唯一性约束。

2. 解决方案(1)针对数据类型约束问题,修改数据类型,确保数据满足约束条件。

(2)针对唯一性约束问题,修改数据,确保数据满足唯一性条件。

实验结论:1. 数据完整性验证对于保证数据质量至关重要。

2. 使用SQL Profiler等工具可以有效检测数据完整性问题。

3. 通过数据完整性验证,可以及时发现并解决数据质量问题,提高数据管理水平。

数据库安全性及完整性 实验报告

数据库安全性及完整性 实验报告
GRANT R1TO U7;
以U7的身份进入查询分析器,进行对Student表的DELETE权限测试。
DELETEFROM "S-C".STUDENT
WHERE SNO='200215128';
SELECT * FROM "S-C".STUDENT;
例4.13减少角色R1对Student表的select权限
实验报告
课程名称:数据库系统概论
学院:工程学院
专业:
年级:班级:
姓名:学号:
指导教师:
年月日
教务处制
实验名称:
数据库安全性及完整性
时间:2015-12-17
地点:三教205机房
班组:
教师评语
成绩
教师签名
实验报告
1实验目的
1.熟悉通过SQL对数据进行安全性控制。
2实验工具KingbaseES
KingbaseES及其交互式查询工具ISQLW。
GRANT R1TO U7;
以U7的身份进入查询分析器,对Student表进行查询
SELECT *FROM "S-C"."STUDENT";
也可以一次性地通过R1来收回U7的这三个权限。
以system的身份进入查询分析器,一次性地通过R1来收回U7的这三个权限。
REVOKE R1
FROM U7;
以U7的身份进入查询分析器,对Student表进行查询
5.可以看用户手册研究企业管理器的更多功能,还有kingbase的其它各种功能。
GRANT SELECT
ON TABLE "S-C"."SC"
TO PUBLIC;

数据库原理实验报告-实验三-数据完整性与安全性控制

数据库原理实验报告-实验三-数据完整性与安全性控制

《数据库原理》实验报告题目:实验三数据完整性与安全性控制学号班级日期2016.10.18一、实验容、步骤以及结果1.利用图形用户界面对实验一中所创建的Student库的S表中,增加以下的约束和索引。

(18分,每小题3分)(1)非空约束:为出生日期添加非空约束。

非空约束:取消表S中sbirth的勾。

可能需要重建表。

(2)主键约束:将学号(sno)设置为主键,主键名为pk_sno。

设主键:单击数据库Student-->单击表-->单击S-->右击sno-->选择‘修改’命令-->对话框中右击sno-->选择‘设置主键’-->修改主键名为‘pk_sno’-->保存(3)唯一约束:为(sname)添加唯一约束(唯一键),约束名为uk_sname。

唯一约束:单击数据库Student-->单击表-->单击S-->右击sname-->选择‘修改’命令→右击sname-->选择‘索引和键’命令-->打开‘索引和键’框图-->添加-->是否唯一改为‘是’-->名称改为‘us_sname’-->关闭。

(4)缺省约束:为性别(ssex)添加默认值,其值为“男”。

设默认约束:单击数据库Student→单击表→单击S→右击sno→选择‘修改’命令→单击cno-->在默认值栏输入‘男’→保存(5)CHECK约束:为SC表的成绩(grade)添加CHECK约束,约束名为ck_grade,其检查条件为:成绩应该在0-100之间。

(6)外键约束:为SC表添加外键约束,将sno,cno设置为外键,其引用表分别是S表和C表,外键名称分别为fk_sno,fk_cno。

2.在图形用户界面中删除以上小题中已经创建的各种约束,用SQL语言分别重新创建第1题中的(2)-(6)小题.(15分,每小题3分,提示:alter table add constraint)删除约束:单击数据库Student-->表-->单击S-->展开键、约束。

数据库完整性测试报告

数据库完整性测试报告

数据库完整性测试报告一、引言数据库完整性测试是保证数据的准确性和一致性的关键步骤。

本报告旨在分析和评估数据库的完整性,并提供测试结果和相应的建议。

二、测试目的本次数据库完整性测试的目的是评估数据库中的数据约束和完整性规则是否正常运行,以及确认数据库能否有效地保持数据的一致性、准确性和唯一性。

三、测试方法我们使用了以下几种测试方法来检验数据库的完整性:1. 字段约束测试:验证表中的字段是否满足数据类型、长度、非空等约束条件。

2. 主键约束测试:检查表中的主键是否唯一,并验证相关的外键约束。

3. 唯一约束测试:验证表中的唯一约束是否有效,确保每个被约束的字段只能有唯一的值。

4. 默认值约束测试:确认默认值约束是否正确地应用到相应的字段。

5. 触发器测试:测试触发器是否能够正确地触发和执行相关的动作。

四、测试结果经过数据库完整性测试,我们得出以下结果:1. 字段约束测试:所有字段约束条件都被满足,数据类型、长度以及非空约束均正常。

2. 主键约束测试:所有主键约束都被满足,表中每个主键都是唯一的,并且没有出现误设置外键约束的情况。

3. 唯一约束测试:唯一约束条件都生效,每个被约束的字段都保持了唯一性。

4. 默认值约束测试:默认值约束都正确地应用到了相应的字段。

5. 触发器测试:所有触发器能够正确地触发和执行所需的动作,没有出现错误或异常。

五、建议与改进措施基于测试结果,我们提出以下建议和改进措施,以进一步提高数据库的完整性:1. 针对数据库中可能存在的冗余数据,建议进行数据清理,确保每条数据的准确性和一致性。

2. 定期维护和更新数据约束和完整性规则,以适应数据库中数据的变化和业务需求的变更。

3. 加强对数据库备份和恢复机制的测试,确保在数据丢失或故障情况下能够及时有效地恢复数据库。

4. 定期进行数据库完整性测试,以确保数据库的数据一致性和准确性得到持续保证。

5. 对于触发器和存储过程等复杂逻辑的操作,建议进一步进行测试和优化,以提高数据库的性能和稳定性。

数据库的完整性和安全性实验报告

数据库的完整性和安全性实验报告

信息工程学院实验报告课程名称:《数据库原理》实验项目名称:数据库的完整性和安全性一、实 验 目 的:(1)掌握数据库约束的概念;(2)熟悉SQL SERVER 的完整性约束技术。

(3)了解SQL SERVER 的违反完整性处理措施。

(4)了解登录账户的管理理念与具体方法。

(5)了解数据库用户的管理的要则。

(6)了解用户权限管理的内涵与方法。

二、实 验 设 备 与 器 件 Win7 +Sql server 2008 三、实 验 内 容 与 步 骤(一)测试完整性运行附录中的SQL 语句,理解SQL 语句中包含的完整性定义。

然后执行下面的SQL 语句,看是否能正常运行,若无法执行,请说明原因。

1.对dept 表进行数据增删改,并检查完整性规则 Dept 已存在的完整性规则如下: dno CHAR(2)PRIMARY KEYdnameV ARCHAR(20) NOT NULL,UNIQUE(1)增加数据INSERT INTO dept V ALUES('D1','计科系');----正常插入INSERT INTO dept V ALUES('D2','电信系');----正常插入INSERT INTO dept V ALUES(NULL,'机械系'); ----违反dno 主键(NOT NULL )规则INSERT INTO dept V ALUES('D2','机械系'); ----违反dno 主键(UNIQUE )INSERT INTO dept V ALUES('D3',NULL); ----违反dname 的NOT NULL 规则INSERT INTO dept V ALUES('D3','计科系'); ----违反dname 的UNIQUE 规则INSERT INTO dept V ALUES('D3','机械系');----正常插入(2)删除数据DELETE FROM dept WHERE dno='D3';----正常删除(3)修改数据UPDA TE dept SET dname='计算机科学系' WHERE dno='D1';----正常修改UPDA TE dept SET dname='电信系' WHERE dno='D1'; ----违反dname的UNIQUE规则UPDA TE dept SET dname=NULL WHERE dno='D1'; 违反dname的UNIQUE规则2.对student表进行数据增删改,并检查完整性规则Student已存在完整性规则如下:sno CHAR(2) PRIMARY KEYsname V ARCHAR(20) NOT NULL,ssex CHAR(2) NOT NULL, CHECK(ssex in('男','女'))sage INT NOT NULL,dno CHAR(2) NOT NULL, FOREIGN KEY REFERENCES dept(dno)ON DELETE CASCADE ON UPDATE CASCADE(1)增加数据INSERT INTO student V ALUES('S1','张刚','男',20,'D1');----正常插入INSERT INTO student V ALUES('S2','李梅','女',21,'D2');----正常插入INSERT INTO student V ALUES('S2','吴敏','男',20,'D1'); ----正常插入INSERT INTO student V ALUES(NULL,'吴敏','男',20,'D1'); ----违反sno 的主键(NOT NULL)规则INSERT INTO student V ALUES('S3','吴敏','男',NULL,'D1'); 违反sage 的主键(NOT NULL)规则INSERT INTO student V ALUES('S3','吴敏','M',20,'D1'); 违反ssex 的CHECK规则INSERT INTO student V ALUES('S3','吴敏','男',20,'D3'); ----正常插入INSERT INTO student V ALUES('S3','吴敏','男',20,'D1');----正常插入(2)删除数据DELETE FROM student WHERE sno='S3'; ----正常删除(3)修改数据UPDA TE student SET sname='赵强',dno='D2' WHERE sno='S1'-----正常修改UPDA TE student SET ssex='F' WHERE sno='S1'; -----违反ssex的CHECK 规则UPDA TE student SET sno='S2' WHERE sno='S1'; -----违反sno的主键(UNIQUE)规则UPDA TE student SET dno='D3' WHERE sno='S1'; 违反dno 的外键规则UPDA TE dept SET dno='D3' WHERE dno='D1';----检查dno的外键ON UPDATE规则,观察运行后效果DELETE FROM dept WHERE dno='D2';----检查dno的外键ON DELETE规则,观察运行后效果(二)使用规则实现数据完整性(1)在查询分析器中,利用命令(CREATE RULE),创建一个关于年龄(sage)约束的规则,将“sage”列的值约束在0~200之间;然后将所创建的规则绑定到“sage”列(提示:用命令Sp_bindrule)。

数据库的完整性实验报告

数据库的完整性实验报告

数据库的完整性实验报告数据库的完整性实验报告引言:数据库的完整性是指数据库中存储的数据必须满足预定的一致性要求,包括实体完整性、域完整性、参照完整性和用户定义的完整性。

本实验旨在通过设计一个简单的数据库,并通过实际操作验证其完整性。

一、实验目的本实验的目的是通过设计和操作数据库,了解数据库的完整性概念,并掌握如何保证数据的完整性。

二、实验环境本实验使用MySQL数据库管理系统,并在Windows操作系统上进行实验。

三、实验步骤1. 创建数据库首先,我们需要创建一个数据库来存储我们的数据。

在MySQL中,可以使用以下命令创建一个新的数据库:```CREATE DATABASE integrity;```2. 创建数据表接下来,我们需要创建一个数据表来存储我们的数据。

假设我们要创建一个学生信息表,包括学生的学号、姓名和年龄。

可以使用以下命令创建该表:```USE integrity;CREATE TABLE students (id INT PRIMARY KEY,name VARCHAR(50),age INT);```3. 插入数据现在,我们可以向刚刚创建的数据表中插入一些数据。

例如,我们可以插入几个学生的信息:```INSERT INTO students (id, name, age) VALUES (1, '张三', 20);INSERT INTO students (id, name, age) VALUES (2, '李四', 22);INSERT INTO students (id, name, age) VALUES (3, '王五', 21);```4. 实体完整性实体完整性是指每个实体都必须具有一个唯一的标识符。

在我们的学生信息表中,学生的学号是唯一的标识符。

为了保证实体完整性,我们可以在创建表时使用PRIMARY KEY约束来定义学号为主键:```CREATE TABLE students (id INT PRIMARY KEY,name VARCHAR(50),age INT);```这样,如果有重复的学号插入到表中,系统会报错并拒绝插入。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验三数据库完整性一实验目的1.加深对数据库完整性的理解。

2.研究具体DBMS提供的完整性措施,通过SQL对数据进行完整性控制,掌握不同的设置数据库完整性的方法。

二实验平台1.硬件:PC机,windows72.操作系统:WIN7-64bit3.软件和工具:SQL Server2008的企业管理器或者查询分析器。

三实验准备研究具体DBMS所支持的完整性措施,并综述下列内容:1.数据库完整性概念数据库完整性是指数据库中数据的正确性和相容性。

数据库完整性由各种各样的完整性约束来保证,因此可以说数据库完整性设计就是数据库完整性约束的设计。

数据库的完整性包括:(1)实体完整性实体完整性将行定义为特定表的唯一实体。

实体完整性通过索引、UNIQUE 约束、PRIMARY KEY约束或IDENTITY属性强制表的标识符列或主键的完整性。

(2)参照完整性参照完整性保证在主键(在被参考表中)和外键之间的关系总是得到维护(通过FOREIGN KEY和CHECK 约束),确保键值在所有表中一致,要求不能引用不存在的值,如果键值更改了,那么在整个数据库中,对该键值的所有引用要进行一致的更改;(3)用户定义的完整性用户定义完整性使得用户得以定义不属于其它任何完整性分类的特定业务规则。

所有的完整性类型都支持用户定义完整性(CREA TE TABLE 中的所有列级和表级约束、存储过程和触发器)。

(4)触发器触发器是一种特殊类型的存储过程,与表格紧密相连。

当用户修改表中的数据时,触发器将自动执行。

触发器可是使用T-SQL语句进行复杂的逻辑处理。

一般可以实现:级联修改数据库中相关的表、执行比检查约束更为复杂的约束操作、拒绝或回滚违反参照完整性的操作以及比较表修改前后数据之间的差别。

四实验内容及要求用SQL语言对数据进行完整性控制。

一、实体完整性1.创建表并设置主键/*student (sno,sname,sex,sage,sdept)学生表:学生号,姓名,性别,年龄,院系course (cno,cname,tname,cdept)课程表:课程号,课程名,授课老师名,所属院系sc (sno,cno,grade)选课表:学生号,课程号,成绩*/create table student(sno char(8),sname char(10)not null,sex char(2),sage smallint,sdept char(10),primary key (sno)/*在表级定义主码*/)create table course(cno char(8),cname char(10)not null,tname char(8),cdept char(10),primary key (cno)/*在表级定义主码*/)create table sc(sno char(8),cno char(8),grade smallint,primary key(sno,cno),foreign key (sno)references student(sno),foreign key (cno)references course(cno))2.对表进行增加、删除和修改操作,证实当操作违反了实体完整性的时候,系统如何处理。

用primary key短语定义了关系的主码后,对基本表插入一条记录或者对主码更新操作时RDBMS会按照实体完整性规则自动进行检查。

包括:1、检查主码值是否唯一,如果不是唯一则拒绝插入或修改。

2、检查主码的各个属性是否为空,只要有一个为空就拒绝插入或修改。

实体完整性测试:(1)正常情况(插入合法元组):insertinto student(sno,sname,sex,sage,sdept)values('s1','詹姆斯','男','22','计算机学院')执行结果:(2)违反实体完整性(插入非法元组):1、尝试插入重复键值insertinto student(sno,sname,sex,sage,sdept)values('s1','韦德','男','19','外国语学院')执行结果:错误分析:插入s1为主码sno值,s1已存在学生表中。

2、尝试插入空值insertinto student(sno,sname,sex,sage,sdept)values(NULL,'韦德','男','19','外国语学院')执行结果:错误分析:sno为主码值,不能为空。

上面验证了单属性主码值唯一和非空的情况,由多属性组成的主码这里也一并验证。

SC表当中主码值为属性组(sno,cno),为了方便验证,先在C表插入一个合法的元组。

insertinto course(cno,cname,tname,cdept)values('c1','数据库概论','何老师','计算机学院')执行结果:C表成功录入数据,开始对主码(sno,cno)的实体完整性检查。

1、正常情况(插入元组)insertinto sc(sno,cno,grade)values('s1','c1','80')执行结果:2、违反实体完整性(插入重复键)insertinto sc(sno,cno,grade)values('s1','c1','99')3、违反实体完整性(插入空值)情况1:insert into sc(sno,cno,grade) values(NULL,'c1','80')错误分析:sno为主码当中的属性,不能插入空值。

情况2:insert into sc(sno,cno,grade) values('s1',NULL,'80')错误分析:cno为主码当中的属性,不能插入空值。

情况3:insert into sc(sno,cno,grade) values(NULL,NULL,'80')错误分析:实际上系统检测到sno插入空值就已经拒绝插入,所以该情况也是不允许的。

4、违反实体完整性(更新元组为空值)1、把学生表中学号为s1的学生的学号置空update studentset sno=NULLwhere sno='s1'执行结果:系统默认拒绝为s1更新为空值。

错误分析:sno为主码值,不能为空。

2、把SC表中学号为s1的学生的学号和选课号置空update sc set sno=NULL where sno='s1'update sc set cno=NULL where sno='s1'执行结果:系统默认拒绝为s1更新为空值。

错误分析:sno,cno为主码当中的属性,不能为空。

二、参照完整性1.创建表并设置外键create table sc(sno char(8),cno char(8),grade smallint,primary key(sno,cno),foreign key (sno)references student(sno)on delete cascade/*当删除student表中的元组时,级连删除SC表中相应的元组*/on update cascade,/*当更新student表中的sno时,级连更新SC表中相应的元组*/foreign key (cno)references course(cno)on delete no action/*当删除course表中的元组造成了与SC表不一致时拒绝删除*/on update cascade,/*当更新course表中的cno时,级连更新SC表中相应的元组*/)剩余的学生表和课表仍为实体完整性引用的表。

2.对相关表进行增加、删除和修改操作,证实当操作违反了参照完整性的时候,系统如何处理。

要求逐个验证拒绝执行、级联操作和设置为空值等几种处理方式。

情况1:插入元组(对于参照表,即SC表)往SC表增加一个元组,该元组的sno属性的值在student表中无法找到等值的sno。

SQL语句: Insert into sc(sno,cno,grade) values('s2','c1','87')执行结果:系统拒绝执行错误分析:SC表中学生号s2在学生表中找不到对应的值。

情况2:修改外码值(对于参照表,即SC表)修改SC表中的一个元组,修改后该元组的sno属性的值在student表中无法找到等值的sno。

SQL语句:update sc set sno='s2'where sno='s1'执行结果:系统拒绝执行错误分析:SC表中学生号s2在学生表中找不到对应的值。

情况3:删除元组(对于被被参照表,即Student表)从Student表中删除一个元组,造成SC表中某些元组的sno值在student表中无法找到等值的sno。

SQL语句:delete from student where sno='s1'执行结果:删除了sno值为s1的元组,级联删除sc表当中sno值为s1的元组。

情况4:修改主码值(对于被被参照表,即Student表)修改Student表中的一个元组的sno属性,造成SC表中某些元组的sno值在student表中无法找到等值的sno。

SQL语句:update student set sno='g1'where sno='s1'执行结果:成功把Student表中元组的sno为s1的值修改为g1,级联更新SC表中的sno值。

3、可能破坏参照完整性的情况及违约处理:三、用户自定义的完整性1.创建表并设置某些属性值满足空与非空、唯一性约束和满足一个条件(布尔表达式)等限制;创建表:create table student1(sno char(8),sname char(10)NOT NULL,/*姓名不允许取空值*/sex char(2)check (sex in('男','女')),/*性别sex只能选取男或女*/sage smallint check (sage>0 and sage<100),/*年龄sage范围须在~100*/class_no char(8)unique,sdept char(10),primary key (sno),/*在表级定义主码*/)create table sdept_all(sdept_no char(20)unique,/*要求院系号sdept_no唯一*/sdept char(10))(1)允许空值SQL语句:Insert into student1(sno,sname,sex,sage,sdept)values('s2','韦德','男','19',NULL)(2)不允许取空值SQL语句:Insert into student1(sno,sname,sex,sage,sdept)values('s3',NULL,'女','19','外国语学院')执行结果:系统拒绝执行错误分析:基本表定义中声明姓名不可取空值。

相关文档
最新文档