数据库系统教程(第三版)第三章部分课后题答案
(2010-10-02 10:01:44)
标签:
数据库系统第三章部分课后题答案教育 |
分类: 学习心得 |
数据库系统教程(第三版)施伯乐 丁宝康 汪卫编著,第三章部分课后题答案。
简单的我就没有写上去了,因为太没有意思了、
3.2
4.检索至少选修两门课程的学生学号。
SELECT DISTINCT X.S#
FROM SC AS X, SC AS Y
WHERE X.S#=Y.S# AND X.C#<>Y.C#
5.检索至少有学号为S2和S4学生选修的课程的课程号。
SELECT DISTINCT X.S#
FROM SC AS X, SC AS Y
WHERE X.S#='S2' AND Y.S#='S4' AND X.C#=Y.C#
6.检索WANG同学不学的课程的课程号。
SELECT C#
FROM C
WHERE NOT EXISTS
(SELECT *
FROM S,SC
WHERE S.S#=SC.S# AND SNAME='WANG' AND SC.C#=C.C#)
//或者程序代码可以这样改
7.检索全部学生都选修的课程的课程号与课程名。
SELECT C# ,CNAME
FROM C
WHERE NOT EXISTS
(SELECT *
FROM S
WHERE NOT EXISTS
(SELECT *
FROM SC
WHERE S.S#-SC.S# AND SC.C#=S.S# ))
8.检索选修课程包含LIU老师所授全部课程的学生学号。
SELECT S#
FROM S
WHERE NOT EXISTS
(SELECT *
FROM C,T
WHERE C.T#=T.T# AND TNAME='LIU' AND NOT EXISTS
(SELECT *
FROM SC
WHERE S.S#=SC.S# AND SC.C#=C.C#))
3.7
1.统计有学生选修的课程门数。
SELECT COUNT(DISTINCT C#)
FROM SC
2.求选修C4课程的女生的平均年龄。
SELECT AVG(AGE)
FROM S,SC
WHERE SC.C#='C4' AND S.S#=SC.S# AND SEX='F'
3.求LIU老师所授课程的每门课程的平均成绩。
SELECT C.C#,AVG(GRADE)
FROM C,T,SC
WHERE C.T#=T.T# AND C.C#=SC.C# AND TNAME='LIU'
GROUP BY C.C#;
4.统计每门课程的学生选修人数(超过10人的课程才统计)。要求显示课程号和人数,查询结果按人数降序
排列,若人数相同,按课程号升序排列。
SELECT DISTINCT C#,COUNT(DISTINCT S#)
FROM SC
GROUP BY C#
HAVING COUNT(S#)>10
ORDER BY COUNT(DISTINCT S#) DESC,C#
5.检索学号比WANG同学大,而年龄比他小的学生姓名。
SELECT SNAME
FROM S
WHERE S#>ALL
(SELECT S#
FROM S
WHERE SNAME='WANG')AND AGE<ALL
(SELECT AGE
FROM S
WHERE SNAME='WANG')
)
6.在表SC中检索成绩为空值的学生学号与课程号。
SELECT S#,C#
FROM SC
WHERE GRADE IS NULL;
7.检索姓名以L打头的所有学生的姓名和年龄。
SELECT SNAME ,AGE
FROM S
WHERE SNAME LIKE 'L%'
8.求年龄大于女同学平均年龄的男同学的姓名与年龄。
SELECT SNAME ,AGE
FROM S
WHERE SEX='M' AND AGE>ALL
(SELECT AVG(AGE)
FROM S
WHERE SEX='F'
);
9.求年龄大于女同学年龄的男学生姓名和年龄。
SELECT SNAME ,AGE
FROM S
WHERE SEX='M' AND AGE>ALL
(SELECT AGE
FROM S
WHERE SEX='F'
);