数据操作和完整性约束的作用_数据的完整性约束

其他范文 时间:2020-02-28 21:29:06 收藏本文下载本文
【www.daodoc.com - 其他范文】

数据操作和完整性约束的作用由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“数据的完整性约束”。

计算机科学与技术系

实 验 报 告

专业名称 计算机科学与技术 课程名称 数据库系统及应用 项目名称 数据操作和完整性约束的作用

班 级

学 号 姓 名

实验日期 2015/11/3

一、实验目的与要求:(一)实验目的熟练掌握SQL的INSERT、UPDATE和DELETE命令,深刻理解数据完整性约束的作用以及约束机制。(二)实验要求

(1)读者自行设计各个表的记录,其中院系表至少10条记录、学生表至少30条记录、课程表至少10条记录、教师表至少10条记录、选课表至少50条记录。

(2)使用INSERT命令完成记录的插入操作,要求分别设计若干违反实体完整性、参照完整性和用户自定义完整性和用户定义完整性约束的插入操作,并分析原因。

(3)设计若干删除操作,体会执行删除时检查参照完整性规则的效果(要求涉及拒绝删除、空值删除和级联删除等不同的处理方式)。

(4)设计若干更新操作,体会执行更新操作时检查实体完整性规则、参照完整性规则和用户自定义完整性规则的效果。

(5)在实验报告中要给出具体的记录和设计的操作,并针对各种数据完整性检查给出具体的分析和讨论。

二、实验方法:(代码)

create database 学生管理系统 use 学生管理系统 create table yuanxi(编号 smallint primary key, 名称 char(20)unique not null,负责人 char(10), 办公地点 char(20))--drop table yuanxi create table xuesheng(学号 char(8)primary key, 院系 smallint foreign key references yuanxi(编号), 姓名 char(10)not null, 性别 char(2)check(性别 = '男' or 性别 = '女'), 生源 char(6), 状态 char(4)check(状态 = '正常' or 状态 = '留级' or 状态 = '休学' or 状态 = '退学'))create table jiaoshi(教师编号 char(8)primary key, 院系 smallint foreign key references yuanxi(编号), 姓名 char(10)not null, 性别 char(2)check(性别 = '男' or 性别 = '女'), 职称 char(6)check(职称 = '教授' or 职称 = '副教授' or 职称 = '讲师' or 职称 = '助教'), 专业 char(10))create table kecheng(课程编号 char(8)primary key, 课程名称 char(20)not null, 负责讲师 char(8)foreign key references jiaoshi(教师编号), 学时 smallint not null, 课程性质 char(10)check(课程性质 = '公共基础' or 课程性质 = '专业基础' or 课程性质 = '专业选修' or 课程性质 = '任意选修'))create table xuanke(学号 char(8)foreign key references xuesheng(学号), 课程编号 char(8)foreign key references kecheng(课程编号), 成绩 smallint check(成绩 >= 0 and 成绩

insert into 院系 values(1,'计科系','马主任','36栋')insert into 院系 values(2,'电气系','赵主任','35栋')insert into 院系 values(3,'机械系','钱主任','34栋')insert into 院系 values(4,'园林系','孙主任','33栋')insert into 院系 values(5,'艺术系','李主任','32栋')insert into 院系 values(6,'人文系','周主任','31栋')insert into 院系 values(7,'物理系','吴主任','30栋')insert into 院系 values(8,'外语系','郑主任','2栋')insert into 院系 values(9,'体育系','王主任','4栋')insert into 院系 values(10,'国贸系','汝主任','8栋')--在学生表中插入30条记录

insert into 学生 values('1',1,'王艳','女','阜阳市','正常',NULL)insert into 学生 values('2',1,'李婷','女','南京市','正常',NULL)insert into 学生 values('3',1,'张三','男','阜阳市','正常',NULL)insert into 学生 values('4',2,'赵玉','男','阜阳市','正常',NULL)

insert into 学生 values('5',2,'李雷','男','上海市','正常',NULL)insert into 学生 values('6',2,'张琪','女','六安市','正常',NULL)insert into 学生 values('7',3,'夏雨','男','上海市','正常',NULL)insert into 学生 values('8',3,'李信','男','阜阳市','正常',NULL)insert into 学生 values('9',4,'黎姿','女','南京市','正常',NULL)insert into 学生 values('10',4,'汝闻闻','女','六安市','正常',NULL)insert into 学生 values('11',4,'翟凤亚','男','六安市','正常',NULL)insert into 学生 values('12',5,'郑微','女','亳州市','留级',NULL)insert into 学生 values('13',5,'赵立英','女','亳州市','留级',NULL)insert into 学生 values('14',5,'李晨','男','亳州市','正常',NULL)insert into 学生 values('15',6,'郭靖','女','宿州市','退学',NULL)insert into 学生 values('16',6,'陈欣然','女','宿州市','正常',NULL)insert into 学生 values('17',6,'李然','男','郑州市','退学',NULL)insert into 学生 values('18',7,'王凯','男','宿州市','正常',NULL)insert into 学生 values('19',7,'宫正','男','郑州市','退学',NULL)insert into 学生 values('20',7,'翟丹丹','女','北京市','正常',NULL)insert into 学生 values('21',8,'陈瑞','女','郑州市','正常',NULL)insert into 学生 values('22',8,'郝壮','男','北京市','正常',NULL)insert into 学生 values('23',8,'李毅','男','北京市','正常',NULL)insert into 学生 values('24',9,'吴建','男','界首市','休学',NULL)insert into 学生 values('25',9,'习武','男','界首市','正常',NULL)insert into 学生 values('26',9,'张翠翠','女','界首市','休学',NULL)insert into 学生 values('27',10,'郑雨薇','女','芜湖市','正常',NULL)

insert into 学生 values('28',10,'谌敏','女','芜湖市','退学',NULL)insert into 学生 values('29',10,'徐松','男','合肥市','休学',NULL)insert into 学生 values('30',3,'朱茵','女','合肥市','正常',NULL)

--在课教师中插入10条记录

insert into 教师 values('1',1,'赵燕','女','教授','汽车与智能',3200.00)insert into 教师 values('2',2,'李敏','女','教授','电子应用',3400)insert into 教师 values('3',3,'王艳艳','女','讲师','机械应用',2900)insert into 教师 values('4',4,'谭维维','女','副教授','园林园艺',3600)insert into 教师 values('5',5,'李佳薇','女','副教授','素描',2500)insert into 教师 values('6',6,'杨会伟','男','讲师','人文',4000)insert into 教师 values('7',7,'王丽玲','女','副教授','万有引力',3800)insert into 教师 values('8',8,'陶维成','男','教授','英语',3250)insert into 教师 values('9',9,'万振宇','男','助教','乒乓球',2600)insert into 教师 values('10',10,'方梁雨','女','助教','商代',4500)--在课程表中插入10条记录

insert into 课程 values('1','汽车智能与应用','1',16,'公共基础')insert into 课程 values('2','模拟电路','2',16,'公共基础')insert into 课程 values('3','器械基础','3',8,'专业基础')insert into 课程 values('4','嫁接技术','4',16,'专业基础')

insert into 课程 values('5','素描','5',8,'专业基础')insert into 课程 values('6','大学语文','6',16,'专业选修')insert into 课程 values('7','万有引力','7',8,'任意选修')insert into 课程 values('8','口语','8',16,'专业选修')insert into 课程 values('9','乒乓球','9',16,'任意选修')insert into 课程 values('10','商代渠道','10',8,'专业基础')--在选课表中插入10条记录

insert into 选课 values('1','1',100)insert into 选课 values('1','2',99)insert into 选课 values('1','3',95)insert into 选课 values('1','4',89)insert into 选课 values('1','5',89)insert into 选课 values('2','6',78)insert into 选课 values('2','7',78)insert into 选课 values('2','8',78)insert into 选课 values('2','9',78)insert into 选课 values('2','10',78)insert into 选课 values('3','1',98)insert into 选课 values('3','2',98)insert into 选课 values('3','3',98)insert into 选课 values('3','4',98)insert into 选课 values('3','5',98)insert into 选课 values('4','1',90)

insert into 选课 values('4','2',90)insert into 选课 values('4','3',90)insert into 选课 values('4','5',90)insert into 选课 values('4','4',90)insert into 选课 values('5','5',69)insert into 选课 values('5','6',69)insert into 选课 values('5','7',69)insert into 选课 values('5','8',69)insert into 选课 values('5','9',69)insert into 选课 values('6','1',75)insert into 选课 values('6','2',75)insert into 选课 values('6','3',75)insert into 选课 values('6','4',75)insert into 选课 values('6','5',75)insert into 选课 values('7','7',65)insert into 选课 values('7','8',65)insert into 选课 values('8','9',65)insert into 选课 values('9','7',65)insert into 选课 values('10','7',65)insert into 选课 values('8','8',65)insert into 选课 values('9','8',65)insert into 选课 values('10','8',65)--删除操作

DELETE 选课 WHERE 学号='1' DELETE 学生 WHERE 状态 = '退学'--更新操作

UPDATE 选课 SET 成绩=89 WHERE 课程编号 ='6' UPDATE 教师 SET 职称 = '教授' WHERE 职称='助教'

三、实验分析与小结(一)实验分析

1.使用INSERT命令完成记录的插入操作,要求分别设计若干违反实体完整性、参照完整性和用户自定义完整性和用户定义完整性约束的插入操作

1>违反实体完整性规则即主关键字为空或重复。例如:

insert into 院系 values(NULL,'计科系','马主任','36栋301室')insert into 院系 values(2,'电气系','赵主任','35栋302室')上例中的第一行代码的主键值为空,第二行代码的主键值与院系表中的主键值重复,故以上两个插入操作失败。要想使其代码成功,应当遵守主关键字中的属性的唯一性和非空值规则。或者删除约束,如:

ALTER TABLE 院系 ADD CONSTRAINT yx_pk PRIMARY KEY(编号)ALTER TABLE 院系 DROP CONSTRAINT yx_pk 因为删除主键将会影响后期的操作,不建议删除约束。

2>违反参照完整性规则即外键取空值或等于所参照表中的主关键字的值。例如

insert into 选课 values(NULL,'1',100)删除参照完整性约束可用如下删除约束语句

ALTER TABLE 选课 ADD CONSTRAINT xk_fk FOREIGN KEY(学号)REFERENCES

学生(学号)ALTER TABLE 选课 DROP CONSTRAINT xk_fk 或者按照参照完整性规则进行输入。3>违反用户定义完整性约束举例: insert into 选课 values('10','8',150)insert into 课程 values('10','商代渠道','10',10,'专业基础')insert into 课程 values('10','商代渠道','10',8,'基础专业')由建表示的check约束可知选课表的成绩字段只能取0-100之间;课程表中的学时字段只能取8的倍数;和课程表的课程数据的取值只能为“公共基础”、“专业基础”、“专业选修”和“任意选修”。故这三个例子中的红色部分的数据都违反了用户定义完整性约束,不能进行插入。只有插入正确的数据或删除约束时才可以进行插入。

ALTER TABLE 选课 ADD CONSTRAINT chance_xk CHECK(成绩>= 0 AND 成绩

ALTER TABLE 选课 ADD CONSTRAINT chance_xueshi1 CHECK(课程性质='公共基础' OR 课程性质='专业基础' OR 课程性质='专业选修' OR 课程性质='任意选修')ALTER TABLE 选课 DROP CONSTRAINT chance_xueshi1 删除操作和更新操作与插入操作的实体完整性规则、参照完整性规则和用户完整性类似,不同的是插入操作用INSERT,删除用DELETE,更新用UPDATE

命令而已。(二)总结

在这个实验中却教会了我们在插入、删除和更新操作时若违反了实体完整性、参照完整性和用户自定义完整性规则时,怎么解决。

得分(百分制)

下载数据操作和完整性约束的作用word格式文档
下载数据操作和完整性约束的作用.doc
将本文档下载到自己电脑,方便修改和收藏。
点此处下载文档

文档为doc格式

    热门文章
      整站推荐
        点击下载本文