关系数据库语言SQL 课后练习(三)


前言

文章用到的S、SC、C、T均为教学使用的传统教学数据库,属性不再作出说明。

一、题干

试用SQL更新语句表达对教学数据库中关系S SC C T的更新操作:

二、解题步骤

1.往关系c中插入一个课程元组(‘c8’, ‘vc++’, ‘T6’)。

代码如下:

INSERT INTO C
VALUES(‘C8’,’VC++’,’T6’)

2.检索所授没门课平均成绩均大于80的教师姓名,并把检索值送往FACULTY(TNAME)中。

代码如下:

INSERT INTO FACULTY(TNAME)
SELECT DISTINCT TNAME
FROM(SELECT TNAME,C.C#,AVG(SCORE)
FROM T,C,SC
WHERE T.T#=C.T#AND C.C#=SC.C#
GROUP BY TNAME,C.C#)
AS RESULT(TNAME,C#,AVG—SCORE)AS X
WHERE 80<=ALL(SELECT AVG—SCORE
FROM RESULT AS Y
WHERE Y.TNAME=X.TNAME)

3.在SC中删除无成绩的选课元组

DELETE FROM SC WHERE SCORE IS NULL

4.把选修LIU老师课程的女同学选课元组全部删除

DELETE FROM SC
WHERE S# IN(SELECT S# FROM S WHERE SEX=’F’)
AND C# IN(SELECT C# FROM C.T WHERE C.T#=T.T#AND TNA

5.把MATHS课不及格的成绩全改为60

UPDATE SC
SET SCORE=60
WHERE SCORE<60
AND C# IN(SELECT C#FROM C WHERE CNAME=’MATHS’)

6. 把低于平均成绩的女同学成绩提高百分之五

UPDATE SC
SET SCORE=SCORE*1.05
WHERE S # IN(SELECT S# FROM S WHERE SEX='F’)
AND SCORE<(SELECT AVG(SCORE)FROM SC);

7. 当C4<=70提高百分之五,反之提高百分之四(使用两种方法)

UPDATE SC
SET SCORE=SCORE*1.04
WHERE C#=’C4’AND SCORE>70;
UPDATE SC
SET SCORE=SCORE*1.05
WHERE C#=’C4’AND SCORE<=70;

UPDATE SC
SET SCORE=SCORE*CASE
WHEN SCORE>70 THEN 1.O4
ELSE l.05
END
WHERE C#=’C4’:

8.SC中当某个成绩低于全部课程平均成绩,提高百分之五

UPDATE SC
SET SCORE=SCORE*105
WHERE SCORE<(SELECT AVG(SCORE)
FROM SC)

总结

文章发布的稍有仓促,敬请指正

猜你喜欢

转载自blog.csdn.net/Skylar_tramp/article/details/114931739