招银网络-测开笔试-数据库查询大题

【这是考试后与同学讨论的答案,可能存在问题,欢迎指正。】

数据库中有如下四个表:
【1】Student(Sno,Sname,Sage,Ssex)学生表。
Sno学号;Sname学生姓名;Sage学生年龄;Ssex学生性别。
【2】Course(Cno,Cname,Tno)课程表。
Cno课程编号;Cname课程名字;Tno教师编号。
【3】SC(Sno,Cno,Score)成绩表。
Sno学号;Cno课程编号;Score成绩。
【4】Teacher(Tno,Tname)教师表。
Tno教师编号;Tname教师姓名。

请根据要求写出响应的SQL语句:
(1)查询“Java”课程成绩在80分以上的学生学号、姓名和分数,按学号升序排列。

SELECT Student.Sno,Student.Sname,SC.Score
FROM Student INNER JOIN SC ON Student.Sno=SC.Sno
WHERE SC.Cno IN (SELECT Cno FROM Course WHERE Cname="Java") AND SC.Score > 80
ORDER BY Student.Sno;

(2)删除没有人选修的课程记录。

DELETE FROM Course WHERE Cno NOT IN (SELECT Cno FROM SC);

(3)查询所有学生的学号、选课数、平均成绩,按平均成绩降序排列。

SELECT Sno,Count(*) ,AVG(SCore) AS avg_score 
FROM SC
GROUP BY Sno
ORDER BY avg_score DESC;

你可能感兴趣的:(数据库MySQL)