互评批阅
实验04 数据库的更新操作与完整性约束
互评指标:
(1)请按照答案中给的评分标准判分; (2)若有扣分项,必须在评语区给出扣
分说明
一. 简答题(共21题)
1. (简答题) 本实验的实验目的是:
/***的答案:/
1.掌握使用sql语句实现更新操作的方法
插入数据
修改数据
删除数据
2.认识完整性约束对数据库的重要性
3.掌握在mysql中对完整性约束创建和修改的方法
实现完整性约束
参照完整性约束
用户定义完整性约束
/正确答案:/
(1)掌握使用SQL语句实现更新操作的方法;
(2)认识完整性约束对数据库的重要性;
(3)掌握在MySQL中对完整性约束创建和修改的方法。
评分 分
评语
段落格式
字体
字号
点击上传
x
2. (简答题)
请写出下列操作的SQL语句:"在学院表中增加一个新的学院,外国语学院,
学院编号为15,院长暂时不设置。"
请根据要求完成操作,并将操作结果截图(可打开学院表,将新增加的信息
截图),截图的右下角要求标上你的学号最后两位
/***的答案:/
insert into department08 values (15,'外国语学院',null);
/正确答案:/
(1)MySQL语句(2分)
INSERT INTO Department(Dno,Dname)
VALUES ('15','外国语学院');
(2)结果截图(1分)
评分 分
评语
段落格式
字体
字号
点击上传
x
3. (简答题)
请写出下列操作的SQL语句:"学号为2014112103的学生的数据结构课程的补
考成绩为63分,请用补考成绩更新原有的考试成绩。"
请根据要求完成操作,并将操作结果截图(可用SELECT语句查询更新后的结
果),截图的右下角要求标上你的学号最后两位
/***的答案:/
update reports08 set Grade=63 where Sno=2014112103 and Cno='112p0015';
/正确答案:/
(1)MySQL语句(2分)
UPDATE Reports
SET Grade=63
WHERE Sno='2014112103'
AND Cno=
(SELECT Cno FROM Courses
WHERE Cname='数据结构'
);
(2)结果截图(1分)
评分 分
评语
段落格式
字体
字号
点击上传
x
4. (简答题)
请写出下列操作的SQL语句:"为表Tutors增加新列Tutid,将该列设置为第
一列,并将Tutid列设置为自动增长的整数列,同时设置该列为主键”。
请根据要求完成操作,并将操作后的结果截图(可打开Tutors表,将最后5
条信息截图),截图的右下角要求标上你的学号最后两位
/***的答案:/
alter table tutors08 add Tutid int auto_increment primary key first;
/正确答案:/
(1)MySQL语句(2分)
ALTER TABLE tutors
ADD Tutid INT AUTO_INCREMENT PRIMARY KEY FIRST;
(2)结果截图(1分)
评分 分
评语
段落格式
字体
字号
点击上传
x
5. (简答题)
请写出下列操作的SQL语句:"2018学年第1学期,为20171151班的所有学生
开设了计算机网络课程,并由“许永军”教授进行授课"。
请根据要求完成操作,并将操作结果截图(可打开各表,将新增加的信息截
图),截图的右下角要求标上你的学号最后两位
提示:(1)以上操作需要对多个数据表进行更新操作,所用到的数据必须
是根据要求中提供的数据完成;(2)某一个属性列的取值可以由子查询获得
/***的答案:/
insert into tutors08(Tacademicyear,Tterm,Sclass,Cno,Tno) value
(2018,1,20171151,'112p0024','T007');
/正确答案:/
(1)MySQL语句(4分)
-- ① 先插入授课信息
INSERT INTO Tutors
(Tno,Cno,Tacademicyear,Tterm,Sclass)
VALUES
((SELECT Tno FROM Teachers WHERE Tname='许永军'),
(SELECT Cno FROM Courses WHERE Cname='计算机网络'),
2018,1,'20171151');
-- ② 再插入选课信息
INSERT INTO Reports
(Sno,Cno,Racademicyear,Rterm)
(SELECT Sno,Cno,2018,1
FROM Students, Courses
WHERE Sclass='20171151' AND Cname='计算机网络');
(2)结果截图(1分)
① 授课表新增加的信息(注意新增的授课记录的Tutid的值)
② 选课表新增加的信息(若学生表中20171151班不止一位学生,这里将有多条
选课记录)
评分 分
评语
段落格式
字体
字号
点击上传
x
6. (简答题)
请写出下列操作的SQL语句:"李桂清教授光荣退休了,需要将他在2018学年
第2学期给20161121班的学生所上的数字图像制作课程将改由李力授课"。
请根据要求完成操作,并将操作结果截图(可用SELECT语句查询更新后的结
果),截图的右下角要求标上你的学号最后两位
提示:(1)所用到的数据必须是根据要求中提供的数据完成;(2)某一个
属性列的取值可以由子查询获得
/***的答案:/
update tutors08 set Tno='T005' where Tacademicyear=2018 and
Sclass=20161121 and Tterm=2 and Cno='112p0098';
/正确答案:/
(1)MySQL语句(3分)
UPDATE Tutors
SET Tno=(SELECT Tno FROM Teachers WHERE Tname='李力')
WHERE Tno=(SELECT Tno FROM Teachers WHERE Tname='李桂清')
AND Cno=(SELECT Cno FROM Courses WHERE Cname='数字图像制作')
AND Sclass ='20161121' AND Tacademicyear=2018 AND Tterm=2;
(2)结果截图(1分)
评分 分
评语
段落格式
字体
字号
点击上传
x
7. (简答题)
请写出下列操作的SQL语句:"李桂清教授光荣退休了,需要将他的信息从教
师表中删除"。
请根据要求完成操作,并回答以下问题:
① 能删除成功吗?
② 若删除失败,请说明原因;若删除成功,请用SELECT语句在授课表中查询
李桂清教授的授课信息
/***的答案:/
delete from Teachers08 where Tname='李桂清';
1.
能
2.
/正确答案:/
(1)MySQL语句(2分)
DELETE FROM Teachers
WHERE Tname='李桂清';
(2)回答问题(2分)
① 删除失败
② 因为授课表中有李桂清教授的授课信息,违反参照完整性约束
评分 分
评语
段落格式
字体
字号
点击上传
x
8. (简答题) 请回答以下问题:“李桂清教授虽然退休了,但是很明显不能
直接将他从教师信息表中删除,因为在授课表中还有他往年的授课信息,那
么这个问题该如何解决呢?既能分辨教师是否退休,又不会影响到他之前的
授课信息”
/***的答案:/
在教师表中添加一个列,用来分辨教师是否退休。
/正确答案:/
参考问题:(3分)(注意,此处仅为参考答案,可根据学生答题分析可行性
予以评分)
可以在教师表中增加一个新的属性列,标识是否在岗TInWork,数据类型设置
为VARCHAR(4),默认可设置为“在岗”,若教师退休,可将该属性列的值修改为
“退休”。还可以标识为其他状态,如“进修”、“读博”、“病假”等。
评分 分
评语
段落格式
字体
字号
点击上传
x
9. (简答题)
请写出下列操作的SQL语句:"学号为2017120202的学生因病退学了,请从学
生表中将他的信息删除"。
请根据要求完成操作,并回答以下问题:
① 能删除成功吗?
② 若删除失败,请说明原因;若删除成功,请用SELECT语句在学生表中查询
该位学生的相关信息
/***的答案:/
delete from students08 where Sno=2017120202;
1.
不能
2. 外键约束
/正确答案:/
(1)MySQL语句(2分)
DELETE FROM Students
WHERE Sno='2017120202';
(2)回答问题(2分)
① 删除失败
② 因为选课表中有该位学生的选课信息,违反参照完整性(外键)约束
评分 分
评语
段落格式
字体
字号
点击上传
x
10. (简答题)
请写出下列操作的SQL语句:"① 将选课表中对Sno的外键声明重新设置可为
级联删除;② 再从学生表中将学号2017120202的学生信息删除"。
请根据要求完成操作,并回答以下问题:
① 能删除成功吗?
② 若删除失败,请说明原因;若删除成功,请说明删除后的结果是怎样的。
/***的答案:/
ALTER TABLE Reports08 ADD CONSTRAINT FK_Rep_Sno FOREIGN KEY (Sno)
REFERENCES Students08(Sno) on update cascade on DELETE cascade ;
delete from students08 where Sno=2017120202;
1.能
2.
/正确答案:/
(1)MySQL语句(6分)
① 重新设置外键
ALTER TABLE reports
DROP CONSTRAINT FK_Sno;
ALTER TABLE reports
ADD CONSTRAINT FK_Sno FOREIGN KEY(Sno)
REFERENCES students(Sno)
ON DELETE CASCADE;
② 删除学生信息
DELETE FROM Students
WHERE Sno='2017120202';
(2)回答问题(2分)
① 删除成功
② 因为设置了级联删除,所以当删除学生表中的学生信息时,系统会自动将选
课表中该位学生的选课信息一起删除
评分 分
评语
段落格式
字体
字号
点击上传
x
11. (简答题)
请写出下列操作的SQL语句:"由于人才培养方案的变更,数学与统计学院的
数据科学与大数据技术(非师范)专业的编号将变更为编号1203,请直接将
专业表中的专业编号1202更改为1203的信息"。
请根据要求完成操作,并回答以下问题:
① 能更新成功吗?
② 若更新失败,请说明原因;若更新成功,请用SELECT语句在专业表中查询
数据科学与大数据技术(非师范)专业的相关信息
/***的答案:/
update major08 set Mno=1203 where Dno='数据科学与大数据技术(非师
范)' and Dno=12;
1.
不能
2.
外键约束
/正确答案:/
(1)MySQL语句(2分)
UPDATE major
SET Mno='1203'
WHERE Mno='1202';
(2)回答问题(2分)
① 更新失败
② 因为学生表中有与该专业相关联的学生信息,违反参照完整性(外键)约束
评分 分
评语
段落格式
字体
字号
点击上传
x
12. (简答题)
请写出下列操作的SQL语句:"① 将学生表中对Mno的外键声明重新设置可为
级联更新;② 再重新更新专业表中数据科学与大数据技术(非师范)专业的
专业编号"。
请根据要求完成操作,并回答以下问题:
① 能更新成功吗?
② 若更新失败,请说明原因;若更新成功,请说明更新后的结果是怎样的。
/***的答案:/
alter table Students08 add constraint fk_st foreign key(Mno)
references Major08(Mno) on update cascade on DELETE cascade;
update major08 set Mno=1203 where Dno='数据科学与大数据技术(非师
范)' and Dno=12;
1.
能
2.
/正确答案:/
(1)MySQL语句(6分)
① 重新设置外键
ALTER TABLE students
DROP CONSTRAINT FK_Mno;
ALTER TABLE students
ADD CONSTRAINT FK_Mno FOREIGN KEY(Mno)
REFERENCES major(Mno)
ON UPDATE CASCADE;
② 更新专业信息
UPDATE major
SET Mno='1203'
WHERE Mname='数据科学与大数据技术(非师范)';
(2)回答问题(2分)
① 更新成功
② 因为设置了级联更新,所以当更新专业表中的专业编号时,系统会自动将学
生表中该专业编号更新为新的专业编号
评分 分
评语
段落格式
字体
字号
点击上传
x
13. (简答题)
请写出下列操作的SQL语句:"分别任命李力、张兰和张雪为本学院的院
长"。要求:使用一条更新语句完成次操作。
请根据要求完成操作,并将操作结果截图(可用SELECT语句查询更新后的结
果),截图的右下角要求标上你的学号最后两位
提示:(1)所用到的数据必须是根据要求中提供的数据完成;(2)可以先
用子关系查询获得三位教师的教师编号和所在学院编号,然后再用关联子关
系的更新语句修改Department中的数据。
/***的答案:/
update Department08 set Dheader = DT.Tno from Department D,(select
Dno,Tno from Teachers
where Tname in ('李力','张兰','张雪')) DT where D.Dno = DT.Dno;
/正确答案:/
(1)MySQL语句(3分)
UPDATE Department D,
( SELECT Dno, Tno
FROM Teachers
WHERE Tname IN ('李力', '张兰', '张雪')
) DH
SET Dheader=DH.Tno
WHERE D.Dno=DH.Dno;
(2)结果截图(1分)
评分 分
评语
段落格式
字体
字号
点击上传
x
14. (简答题)
请写出下列操作的SQL语句:"创建一个教师工作量统计表TeaQuantity,其
中包含统计编号Qid、教师编号Tno、学年Tacademicyear和工作量
Tquantity,其中Tno和Tacademicyear的数据类型与Tutors表中的设置相
同,Qid的数据类型定义为Binary(16),默认输入UNIQUEINDETIFIER(UUID)
的二进制数,且设置为该表的主键,Tquantity的数据类型设置为整数,并
且在属性列Tno和Tacademicyear上设置唯一性约束,即约束该表中每个教师
编号,每个学年只统计一个工作量"
请根据要求完成操作,并将操作结果截图(可对左端列表中TeaQuantity表
的相关信息截图),截图的右下角要求标上你的学号最后两位
/***的答案:/
CREATE TABLE TeaQuantity
(
Qid BINARY(16) PRIMARY KEY default
(uuid_to_bin(uuid())) comment '统计编号',
Tno char(4) comment '教师编号',
Tacademicyear year comment '学年',
Tquantity int comment '工作量',
constraint unique_Tno_Tacademicyear unique (Tno, Tacademicyear)
) comment '教师工作量统计表';
/正确答案:/
(1)MySQL语句(3分)
CREATE TABLE TeaQuantity
(Qid Binary(16) PRIMARY KEY DEFAULT (UUID_TO_BIN(UUID())),
Tno CHAR(4),
Tacademicyear YEAR,
Tquantity INT,
CONSTRAINT UK_Tno UNIQUE KEY(Tno,Tacademicyear)
);
(2)结果截图(1分)
评分 分
评语
段落格式
字体
字号
点击上传
x
15. (简答题)
请写出下列操作的SQL语句:"对所有教师的授课工作量按学年进行统计,即
统计出每个学年该位教师所上课程的总课时量,并将统计结果添加到
TeaQuantity表中"。
请根据要求完成操作,并将操作结果截图(将TeaQuantity表中编号为
'T004'的教师的工作量的查询结果截图),截图的右下角要求标上你的学号
最后两位
/***的答案:/
insert into teaquantity (Tno, Tacademicyear, Tquantity) (select
Tno,Tacademicyear,sum(chours) from Tutors08 t,courses08 c where
t.Cno=c.Cno group by Tno,Tacademicyear);
/正确答案:/
(1)MySQL语句(3分)
INSERT INTO TeaQuantity(Tno, Tacademicyear, Tquantity)
(SELECT Tno,Tacademicyear,SUM(Chours)
FROM Tutors Tut,Courses C
WHERE Tut.Cno=C.Cno
GROUP BY Tno,Tacademicyear);
(2)结果截图(UUID是随机值)(1分)
评分 分
评语
段落格式
字体
字号
点击上传
x
16. (简答题)
请写出下列操作的SQL语句:"① 2019学年第1学期,为20171202班的所有学
生开设了数据库系统原理,并由“王平”老师进行授课;② 重新对“王平”老师
的授课工作量按学年进行统计,再次将统计结果添加到TeaQuantity表中"。
请根据要求完成操作,并将每步操作结果截图,截图的右下角要求标上你的
学号最后两位
提示:① 第一步操作与前面的操作类似,需对多个表完成操作;② “将统计
结果添加到TeaQuantity表中”,指的是执行数据插入语句
/***的答案:/
insert into tutors08(tno, cno, tacademicyear, tterm, sclass)values
((select teachers08.Tno from teachers08 where Tname='王平'),(select
courses08.Cno from courses08 where Cname='数据库系统原理
'),'2019',1,'20171202');
insert into reports08(sno, cno, racademicyear, rterm)
(select Sno,courses08.Cno,'2019','1' from students08,courses08 where
Sclass='20171202' and Cname='数据库系统原理');
insert into teaquantity(tno, tacademicyear, tquantity)
(select Tno,Tacademicyear,sum(Chours) from tutors08,courses08 where
Tno=(select teachers08.Tno from teachers08 where Tname='王平') and
tutors08.Cno=courses08.Cno group by Tno, Tacademicyear);
/正确答案:/
(1)MySQL语句(6分)
① 添加授课记录
INSERT INTO Tutors(Tno,Cno,Tacademicyear,Tterm,Sclass)
VALUES
((SELECT Tno FROM Teachers WHERE Tname='王平'),
(SELECT Cno FROM Courses WHERE Cname='数据库系统原理'),
2019,1,'20171202');
-- ② 再插入选课信息
INSERT INTO Reports(Sno,Cno,Racademicyear,Rterm)
(SELECT Sno,Cno,2019,1
FROM Students, Courses
WHERE Sclass='20171202' AND Cname='数据库系统原理');
③ 插入授课工作量统计表
INSERT INTO TeaQuantity(Tno,Tacademicyear,Tquantity)
(SELECT Tut.Tno,Tacademicyear,SUM(Chours)
FROM Tutors Tut,Courses C, Teachers T
WHERE Tut.Cno=C.Cno AND T.Tno=Tut.Tno AND Tname='王平'
GROUP BY Tno,Tacademicyear);
(2)结果截图(3分)
① 插入授课信息
②插入选课信息
③(因设置了唯一性约束,所以语句无法正确执行)
评分 分
评语
段落格式
字体
字号
点击上传
x
17. (简答题)
请写出下列操作的SQL语句:"重新对“王平”老师的授课工作量按学年进行统
计,并将统计结果更新到TeaQuantity表中"。
请根据要求完成操作,并将操作结果截图(用SELECT语句在TeaQuantity表
中查询王平的工作量),截图的右下角要求标上你的学号最后两位
/***的答案:/
update teaquantity,
(select Tno,Tacademicyear,sum(Chours) a from tutors08,courses08 where
Tno=(select teachers08.Tno from teachers08 where Tname='王平') and
tutors08.Cno=courses08.Cno group by Tno, Tacademicyear) r
set Tquantity=r.a where TeaQuantity.Tno=r.Tno and
TeaQuantity.Tacademicyear=r.Tacademicyear;
/正确答案:/
(1)MySQL语句(3分)
UPDATE TeaQuantity,
(SELECT Tut.Tno,Tacademicyear,SUM(Chours) SumofQuantity
FROM Tutors Tut,Courses C, Teachers T
WHERE Tut.Cno=C.Cno AND T.Tno=Tut.Tno AND Tname='王平'
GROUP BY Tno,Tacademicyear) TQ
SET TeaQuantity.Tquantity= TQ.SumofQuantity
WHERE TeaQuantity.Tno=TQ.Tno AND
TeaQuantity.Tacademicyeart=TQ.Tacademicyear;
(2)结果截图(1分)
评分 分
评语
段落格式
字体
字号
点击上传
x
18. (简答题)
请写出下列操作的SQL语句:"① 在学生表中增加CHECK约束:Sno的长度必须
为10个字符长度;② 分别向学生表中添加一条正确的学生信息和一条错误的
学生信息,验证CHECK约束是否能正确执行。"
请根据要求完成操作,并将操作结果截图,截图的右下角要求标上你的学号
最后两位
/***的答案:/
1.alter table students08 add constraint check_sno check (
length(Sno)=10 );
2.insert into Students08(Sno,Sname,
Sgender,sbirth,snative,dno,mno,SCLASS) values
('2022030381', '张xx','男', '1965-3-20','广东广州', '11',
'1121', '20141121');
insert into Students08(Sno,Sname,
Sgender,sbirth,snative,dno,mno,SCLASS) values
('2022', '李xx','男', '1965-3-20','广东广州', '11', '1121',
'20141121');
/正确答案:/
(1)MySQL语句(6分)
① CHECK约束
ALTER TABLE Students
ADD CONSTRAINT CHK_LenSno CHECK (CHAR_LENGTH(Sno)=10);
② 错误信息验证
INSERT INTO Students(Sno,Sname)
VALUES ('202311','李四');
③ 正确信息验证
INSERT INTO Students(Sno,Sname)
VALUES ('2023115101','李四');
截图各1分
评分 分
评语
段落格式
字体
字号
点击上传
x
19. (简答题)
请写出下列操作的SQL语句:"在教师表中增加CHECK约束:
若教师的职称是教授,则其工资Tsal要在3500元以上;
若教师的职称是副教授,则其工资要在2600元到3500元之间;
若教师的职称是讲师,则其工资要在1600元到2600元之间;
若教师的职称是助教,则其工资要在800元到1600元之间。"
请根据要求完成操作,并将操作结果截图(约束正确执行的截图),截图的
右下角要求标上你的学号最后两位
/***的答案:/
alter table teachers08 add constraint check_tpts
check ( (Tprof='教授' and Tsal>3500) or (Tprof='副教授' and
Tsal>=2600 and Tsal<=3500)
or (Tprof='讲师' and Tsal>=1600 and Tsal<=2600) or
(Tprof='助教' and Tsal>=800 and Tsal<=1600));
/正确答案:/
(1)MySQL语句(4分)
ALTER TABLE Teachers
ADD CONSTRAINT CHK_Tprof_Tsal
CHECK (Tprof = '教授' and Tsal > 3500
OR Tprof = '副教授' and Tsal BETWEEN 2600 AND 3500
OR Tprof = '讲师' and Tsal BETWEEN 1600 AND 2600
OR Tprof = '助教' and Tsal BETWEEN 800 AND 1600);
(2)结果截图(1分)
评分 分
评语
段落格式
字体
字号
点击上传
x
20. (简答题)
请写出下列操作的SQL语句:"张兰老师因评上教授,需将其职称(Tprof)由
副教授改为教授,并将工资(Tsal)改为3300,岗位津贴(Tcomm)改为2400。"
请根据要求完成操作,并回答以下问题:
① 能更新成功吗?
② 若更新失败,请说明原因;若更新成功,请用SELECT语句在教师表中查询
该位教师的相关信息
/***的答案:/
update teachers08 set Tprof='教授',Tsal=3300,Tcomm=2400 where
tname='张兰';
不行,check约束
/正确答案:/
(1)MySQL语句(2分)
UPDATE Teachers
SET Tprof='教授', Tsal=3300, Tcomm=2400
WHERE Tname='张兰';
(2)回答问题(2分)
① 更新失败
② 因为输入的工资不满足CHECK约束
评分 分
评语
段落格式
字体
字号
点击上传
x
21. (简答题)
请写出下列操作的SQL语句:"许红霞老师评上了副教授,需将其职称
(Tprof)由讲师改为副教授,并将工资(Tsal)改为2700,岗位津贴(Tcomm)改
为2000。"
请根据要求完成操作,并回答以下问题:
① 能更新成功吗?
② 若更新失败,请说明原因;若更新成功,请用SELECT语句在教师表中查询
该位教师的相关信息
/***的答案:/
update teachers08 set Tprof='副教授',Tsal=2700,Tcomm=2000 where
tname='许红霞';
/正确答案:/
(1)MySQL语句(2分)
UPDATE Teachers
SET Tprof='副教授', Tsal=2700, Tcomm=2000
WHERE Tname='许红霞';
(2)回答问题(2分)
① 更新成功
② SELECT * FROM Teachers WHERE Tname='许红霞';
评分 分
评语
段落格式
字体
字号
点击上传
x
一. 简答题
* 1
* 2
* 3
* 4
* 5
* 6
* 7
* 8
* 9
* 10
* 11
* 12
* 13
* 14
* 15
* 16
* 17
* 18
* 19
* 20
* 21
总分:91分
客观题得分:0分
提交 <javascript:;>
<javascript:;>
提示
<javascript:;> <javascript:;>
<javascript:;>
提示
<javascript:;> <javascript:;>
提示
<javascript:;>
<javascript:;>
评分量表模板详情
确定 <javascript:;> 取消 <javascript:;>