数据库_第四章习题参考解答
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第四章 习题参考解答
4.2 题 对于教学数据库的 3 个基本表:
S (SNO , SNAM ,E AGE ,SEX ,SDEPT ) SC (SNO ,CNO ,
GRAD )E C (CNO , CNAM ,E CDEPT ,TNAM )E
SQL 的查询语句表达下列查询: 检索 LIU 老师所授课程的课程号和课程名。 检索年龄大于 23 岁的男同学的学号和姓名。 检索学号为 S3 的 学生呢个所学课程的课程名和任课教师名。 检索至少选修 LIU 老师所授课程中一门课程的女学生姓名。 检索WAN 同学不学的课程的课程号。
检索至少选修两门课程的学生学号。 检
索全部学生都选修的课程的课程号与课程名。 检索选修课程包含 LIU 老师所授课
程的学生学号。 WHERE TNAME= ‘LIU ';
2) SELECT SNO ,SNAME
FROM S
WHERE AGE>23 AND SEX= ‘M ';
3) SELECT CNAM ,ETNAME
FROM C WHERE CNO IN
( SELECE CNO
FROM SC
WHERE SNO=
4) 联接查询方式
SELECT SNAME
FROM S ,SC , C
WHERE = AND = AND SEX=
嵌套查询方式: SELECT SANME
SELECT SNO
FROM SC
WHERE CNO IN
(SELECT CNO
FROM C
WHERE TNAME= ' LIU '));
存在量词方式:
SELECT SNAME
试用
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8) 解: ( 1) SELECT CNO CNAME FROM C
'S3'));
'F ' AND TNAME='LIU '; FROM S
WHERE SEX= ' F ' AND SNO IN
FROM S WHERE SEX '= F ' AND EXISTS
SELECT * FROM SC
WHERE SNO= AND EXISTS
FROM C
WHERE CNO=
AND TNAME= 'LIU '));
SELECT CNO
FROM C
WHERE CNO NOT IN
SELECT CNO
FROM SC
WHERE SNO IN
SELECT SNO
FROM S
SELECT DISTINCT
FROM SC X
WHERE SNO IN
SELECT SNO
FROM SC Y
WHERE = AND =);
方法(二):
SELECT SNO
FROM SC
GROUP BY SNO
HAVING COUNT ( * ) >=2;
SELECT CN ,O CNAME
FROM C
WHERE NOT EXISTS
(SELECT *
FROM S
WHERE NOT EXISTS
(SELECT *
FROM SC
FROM SC X
WHERE NOT EXISTS
SELECT *
FROM C
SELECT *
FROM SC Y
WHERE = AND =));
4. 6题 试用SQL 查询语句表达下列对数据库中 3个基本表S 、SC C 的查询。 (
1) 统计有学生SELECT *
WHERE TNAME= 'LIU ' AND NOT EXISTS
WHERE SNAME= ' WAN 'G ));
6) 方法(一):
7) WHERE = AND = ));
8) SELECT DISTINCT SNO
选修的课程门数。
2)
3)
4) (5
)(6)(7)(8)(9)求选修C4 课程的学生的平均年龄。
求LIU 老师所授课程的每门课程的学生平均成绩。
统计每门课程的学生选修人数(超过10 人的课程才统计) 。要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列。
检索学号比WAN(同学大,而年龄比他小的学生姓名。检索姓名以WANG丁头的所有学生的姓名和年龄。
在SC中检索成绩为空值的学生学号和课程名。求年龄大于女同学平均年龄的男同学姓名和年龄。求年龄大于所有女同学年龄的男同学姓名和年龄。
解:(1)SELECT COUNTDISTINCT CNQ
FROM SC ;
2)SELECT AVG
(AGE) FROM S
WHERE SNO IN
(SELECT SNO
FROM SC
WHERE CNO= ‘ C4');
(3)SELECT CN,O AVG(GRAD)E
FROM SC
WHERE CNO IN
(SELECT CNO
FROM C
WHERE TNAME= LIU')GROUP BY CNO
(4)SELECT CNO,COUN(T SNO)
FROM SC
GROUP BY CNO
HAVING COUNT (*)>10
ORDER BY 2 DESC ,CNO;
(5)方法(一):
SELECT
FROM S X ,S Y
WHERE = ‘ WAN'G AND > AND <;
方法(二):
SELECT SNAME
FROM S
WHERE SNO>( SELECT SNO
FROM S
WHERE SNAM'EW=AN'G)AND AGE<( SELECT AGE
FROM S
WHERE SNAME= 6)SELECT SNAME,AGE FROM S WAN'G );
WHERE SNAME LINGK ‘ WA N G'%;7)SELECT SNO,CNO