《数据库》第4章习题答案.pdf
文本预览下载声明
4 .2 对于教学数据库的三个基本表
S (SNO,SNAME,AGE,SEX,SDEPT)
SC (SNO,CNO,GRADE)
C (CNO,CNAME, CDEPT,TNAME)
试用 SQL的查询语句表达下列查询:
①检索 LIU 老师所授课程的课程号和课程名。
②检索年龄大于 23 岁的男学生的学号和姓名。
③检索至少选修 LIU 老师所授课程中一门课程的女学生姓名。
④检索 WANG 同学不学的课程的课程号。
⑤检索至少选修两门课程的学生学号。
⑥检索全部学生都选修的课程的课程号与课程名。
⑦检索选修课程包含 LIU 老师所授 (全部 )课程的学生学号。
参考答案:
SELECT CNO,CNAME
FROM C
WHERE TNAME=‘ LIU’;
SELECT SNO,SNAME
FROM S
WHERE AGE>23 AND SEX=‘ M ’;
SELECT SNAME (联接查询方式)
FROM S,SC,C
WHERE S.SNO=SC.SNO AND SC.CNO=C.CNO
AND SEX=’ F’ AND TNAME=’ LIU ’;
或: SELECT SNAME (嵌套查询方式 )
FROM S
WHERE SEX=‘ F’
AND SNO IN(SELECT SNO
FROM SC
WHERE CNO IN (SELECT CNO
FROM C
WHERE TNAME=’ LIU ’ ));
或: SELECT SNAME (存在量词方式 )
FROM S
WHERE SEX=‘ F’
AND EXISTS(SELECT *
FROM SC
WHERE SC.SNO=S.SNO
AND EXISTS(SELECT *
FROM C
WHERE C.CNO=SC.CNO
AND TNAME=’ LIU ’ ));
SELECT CNO
FROM C
WHERE NOT EXISTS
(SELECT *
FROM S,SC
WHERE S.SNO=SC.SNO AND SC.CNO=C.CNO
AND SNAME=’WANG’ );
或: SELECT CNO
FROM C
WHERE CNO NOT IN
(SELECT SC.CNO
FROM S,SC
WHERE S.SNO=SC.SNOAND SNAME=’WANG’ );
或: SELECT CNO
FROM C
WHERE CNO NOT IN
(SELECT CNO
FROM SC
WHERE SNO IN
(SELECT SNO
FROM S
WHERE SNAME=’WANG’ ));
SELECT DISTINCT X..SNO
FROM SC AS X,SC AS Y
WHERE X.SNO=Y.SNO AND X.CNOY.CNO;
或: SELECT SNO
FROM SC
GROUP BY SNO HAVING COUNT(
显示全部