问答题 某教学管理数据库中有如下3个基本表。
学生:S(S#,SNAME,AGE,SEX),属性分别表示学号、姓名、年龄和性别。
学习:SC(S#,C#,GRADE),属性分别表示学号、课程号和成绩。
课程:C(C#,CNAME,TEACHEK),属性分别表示课程号、课程名和教师姓名。
试用SQL语句完成下列操作:

问答题 查询年龄大于20岁的男学生的学号和姓名。
【正确答案】SELECT S#,SNAME
FROM S
WHERE (AGE>20) AND (SEX='男')
【答案解析】
问答题 查询选修课程名为“操作系统”课程的学生的平均年龄。
【正确答案】SELECT AVG(AGE)
FROM S
WHERE S# IN
(SELECT S#
FROM SC
WHERE C# IN
(SELECT C#
FROM C
WHERE CNAME='操作系统'
)
)
【答案解析】
问答题 查询教师“王明”所授课程的课程号和课程名。
【正确答案】SELECT C#,CNAME
FROM C
WHERE TEACHER='王明'
【答案解析】
问答题 查询选修课程包含教师“王明”所授课程的学生学号。
【正确答案】SELECT DISTINCT S#
FROM SC
WHERE C# IN
(SELECT C#
FROM C
WHERE TEACHER='王明'
)
【答案解析】
问答题 查询教师“王明”所授课程的每门课程的学生平均成绩。
【正确答案】SELECT CNAME,AVG(GRADE)
FROM SC JOIN C ON SC.C#=C.C#
WHERE TEACHER='王明'
GROUP BY C#
【答案解析】
问答题 统计每门课程的学生选修人数(超过10人的课程才统计),要求输出课程号和选修人数,查询结果按选修人数降序排列,若人数相同,则按课程号升序排列。
【正确答案】SELECT DISTINCT C#,COUNT(S#)
FROM SC
GROUP BY C#
HAVING COUNT(S#)>10
ORDER BY 2 DESC,C# ASC
【答案解析】
问答题 查询姓张的所有学生的姓名和年龄。
【正确答案】SELECT SNAME,AGE
FROM S
WHERE SNAME LIKE '张%'
【答案解析】
问答题 查询成绩为空值的学生学号和课程号。
【正确答案】SELECT S#,C#
FROM SC
WHERE GRADE IS NULL
【答案解析】
问答题 查询年龄大于女学生平均年龄的男学生姓名和年龄。
【正确答案】SELECT SNAME,AGE
FROM S AS X
WHERE X.SEX='男' AND X.AGE>
(SELECT AVG(AGE)
FROM S AS Y
WHERE Y.SEX='女')
【答案解析】
问答题 查询年龄大于所有女学生年龄的男学生姓名和年龄。
【正确答案】SELECT SNAME,AGE
FROM S AS X
WHERE X.SEX='男' AND X.AGE>ALL
(SELECT AGE
FROM S AS Y
WHERE Y.SEX='女')
【答案解析】
问答题 查询选修课程门数超过学号为S0001的学生选修门数的所有学生信息。
【正确答案】SELECT *
FROM S
WHERE S# IN
(SELECT S#
FROM SC
GROUP BY S# HAVING COUNT(S#)>
(SELECT COUNT(*)
FROM SC
WHERE S#='S0001'
)
)
【答案解析】
问答题 查询每个学生的学号、选修课程门数(COUNT_C)和总成绩(TOTAL_G),将查询结果保存在一个名为RESULT的新表中。
【正确答案】SELECT S.S#,COUNT(S.S#) AS COUNT_C,SUM(GRADE) AS TOTAL G
INTO RESULT
FROM S JOIN SC ON S.S#=SC.S#
GROUP BY S.S#
【答案解析】
问答题 将SC中尚无成绩的选课记录删除。
【正确答案】DELETE FROM SC
WHERE GRADE IS NULL
【答案解析】
问答题 将学生“张三”的学习选课信息全部删去。
【正确答案】DELETE FROM SC
WHERE S# IN
(SELECT S#
FROM S
WHERE SNAME='张三')
【答案解析】
问答题 将选修“操作系统”课程且不及格的成绩全改为空值。
【正确答案】UPDATE SC
SET GRADE=NULL
WHERE GRADE<60 AND C# IN
(SELECT C#
FROM C
WHERE CNAME='操作系统')
【答案解析】
问答题 将低于总平均成绩的女学生成绩提高10%。
【正确答案】UPDATE SC
SET GRADE=GRADE*1.1
WHERE GRADE<(SELECT AVG(GRADE)FROM SC.AND
S# IN(SELECT S# FROM S WHERE SEX='女')
【答案解析】