《数据库系统概论》实验报告书 安徽工业大学计算机学院
AND Y.SNAME='李丽';
例3-33:(外部连接查询) 求选修了课程002或003的学生的学号、课程号、课程名和成绩, 要求必须将002和003课程的相关信息显示出来。
SELECT SCORE.SNO,SCORE.CNO,COURSE.CNAME,SCORE.SCORE,COURSE.CTIME FROM COURSE,SCORE WHERE COURSE.CNO IN ('002','003') AND SCORE.CNO=COURSE.CNO;
例3-34:(子查询) 求与 ‘黎明’ 年龄相同的学生的姓名和系。
SELECT SNAME,SDEPT FROM STUDENT WHERE SAGE IN (
SELECT SAGE FROM STUDENT WHERE SNAME='黎明');
例3-35:(子查询) 求选修了课程名为 ’数据结构’ 的学生的学号和姓名。
SELECT SNO,SNAME FROM STUDENT WHERE SNO IN( SELECT SNO FROM SCORE WHERE CNO=(
15/19
《数据库系统概论》实验报告书 安徽工业大学计算机学院
SELECT CNO FROM COURSE WHERE CNAME='数据结构') );
例3-36:(子查询ANY) 求比数学系中某一学生年龄大的学生的姓名和系。
SELECT SNAME,SDEPT FROM STUDENT
WHERE SAGE>ANY(SELECT SAGE FROM STUDENT WHERE SDEPT='MA') AND SDEPT<>'MA';
例3-37:(子查询ALL) 求比数学系中全体学生年龄大的学生的姓名和系。
SELECT SNAME,SDEPT FROM STUDENT
WHERE SAGE>ALL(SELECT SAGE FROM STUDENT WHERE SDEPT='MA') AND SDEPT<>'MA';
例3-38:(子查询EXISTS) 求选修了课程004的学生的姓名和系。
SELECT SNAME,SDEPT FROM STUDENT WHERE EXISTS ( SELECT * FROM SCORE WHERE CNO='004'
AND SCORE.SNO=STUDENT.SNO);
16/19
《数据库系统概论》实验报告书 安徽工业大学计算机学院
例3-39:(返回多列的子查询) 求与 ‘李丽’ 同系且同龄的学生的姓名和系。
SELECT SNAME,SDEPT FROM STUDENT WHERE SDEPT=(
SELECT SDEPT FROM STUDENT WHERE SNAME='李丽' ) AND SAGE=(
SELECT SAGE FROM STUDENT WHERE SNAME='李丽' );
例3-40:(多个子查询) 求与 ‘‘黎明’ 同系,且年龄大于 ‘李丽’ 的学生的信息。
SELECT * FROM STUDENT WHERE SDEPT IN(
SELECT SDEPT FROM STUDENT WHERE SNAME='黎明') AND SAGE=(
SELECT SAGE FROM STUDENT WHERE SNAME='李丽');
例3-41:(子查询中使用表连接) 求数学系中年龄相同的学生的姓名和年龄。 SELECT X.SNAME,X.SAGE FROM STUDENT X,STUDENT Y WHERE X.SAGE=Y.SAGE AND X.SDEPT='MA' AND Y.SDEPT='MA' AND X.SNO<>Y.SNO;
17/19
《数据库系统概论》实验报告书 安徽工业大学计算机学院
例3-42:(连接或嵌套查询) 检索至少选修王成刚老师所授课程中一门课程的女学生姓名。
SELECT SNAME FROM STUDENT WHERE SNO IN(
SELECT SNO FROM SCORE WHERE CNO IN (
SELECT CNO FROM TEACH WHERE TNAME='王成刚') AND SSEX='女');
例3-43:(嵌套与分组查询) 检索选修某课程的学生人数多于3人的教师姓名。
SELECT TNAME FROM TEACH WHERE CNO IN ( SELECT CNO FROM SCORE GROUP BY CNO
HAVING 3 18/19 《数据库系统概论》实验报告书 安徽工业大学计算机学院 例3-44:(集合查询) 列出所有教师和同学的姓名和性别。 SELECT SNAME AS \UNION SELECT TNAME,TSEX FROM TEACH; 例3-45:(相关子查询) 求未选修课程004的学生的姓名。 SELECT SNAME FROM STUDENT WHERE NOT EXISTS ( SELECT * FROM SCORE WHERE CNO='004' AND SCORE.SNO=STUDENT.SNO); 例3-46:(相关子查询) 求选修了全部课程的学生的姓名。 SELECT SNAME FROM STUDENT WHERE NOT EXISTS ( SELECT * FROM COURSE WHERE NOT EXISTS ( SELECT * FROM SCORE 19/19