概述
目录
1. 使用带In谓词的子查询
2. 使用带比较运算的子查询
3. 使用带Any,All谓词的子查询
4. 使用带Exists谓词的子查询
1. 使用带In谓词的子查询
1) 查询与“胡伟”籍贯相同的学生信息。
SELECT *
FROM STUDENT
WHERE BPLACE IN(
SELECT BPLACE
FROM STUDENT
WHERE SNAME='胡伟') ;
2) 查询选修了课程名为“数据库”的学生学号和姓名。
SELECT SNO,SNAME
FROM STUDENT
WHERE SNO IN (
SELECT SNO
FROM SC
WHERE CNO IN (
SELECT CNO
FROM COURSE
WHERE CNAME='数据库')
) ;
3) 查询选修了课程“C1”和“C2”的学生的学号。
SELECT SNO
FROM SC
WHERE CNO='C1'
AND SC.SNO IN (
SELECT SNO
FROM SC
WHERE SC.CNO='C2');
2. 使用带比较运算的子查询
1) 查询C1课的选课成绩高于C1课平均成绩的同学的学号和成绩。
SELECT SNO,GRADE
FROM SC
WHERE CNO='1' AND GRADE >= (
SELECT AVG(GRADE)
FROM SC
WHERE CNO='C1');
2) 查询每个学生超过他自己选课成绩平均分的课程号。
SELECT SNO,CNO
FROM SC X
WHERE GRADE>(SELECT AVG(GRADE)
FROM SC Y
WHERE Y.SNO=X.SNO)
3. 使用带Any,All谓词的子查询
1) 查询其他籍贯中比“湖南”籍学生年龄都小的学生。
SELECT *
FROM STUDENT
WHERE AGE <ALL(
SELECT AGE
FROM STUDENT
WHERE BPIACE<>'湖南')
AND BPIACE='湖南';
2) 查询其他籍贯中比“湖南”籍某个学生年龄小的学生。
SELECT *
FROM STUDENT
WHERE AGE <ANY(
SELECT AGE
FROM STUDENT
WHERE BPIACE<>'湖南')
AND BPIACE='湖南';
3) 查询查询哪些课程只有男生选读,列出课程名。
SELECT CNAME
FRON COURSE
WHERE '男' =ALL(
SELECT SEX
FROM STUDENT,SC
WHERE STUDENT.SNO=SC.SNO AND SC.CNO=COURSE.CNO);
4. 使用带Exists谓词的子查询
1) 查询选修了C2课程的学生姓名
SELECT SNAME
FROM STUDENT
WHERE EXISTS(
SELECT *
FROM SC
WHERE SC.SNO=STUDENT.SNO AND CNO='C2');
2) 查询没选修C2课程的学生姓名。
SELECT SNAME
FROM STUDENT
WHERE NOT EXISTS(
SELECT *
FROM SC
WHERE SC.SNO=STUDENT.SNO AND CNO='C2');
3) 查询没有选任何课程的学生的学号和姓名。
3) 查询没有选任何课程的学生的学号和姓名。
SELECT SNO,SNAME
FROM STUDENT
WHERE NOT EXISTS(
SELECT *
FROM SC
WHERE SC.SNO=STUDENT.SNO)
最后
以上就是潇洒小鸭子为你收集整理的嵌套查询实验案例的全部内容,希望文章能够帮你解决嵌套查询实验案例所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复