我是靠谱客的博主 潇洒小鸭子,最近开发中收集的这篇文章主要介绍嵌套查询实验案例,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

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)

 

最后

以上就是潇洒小鸭子为你收集整理的嵌套查询实验案例的全部内容,希望文章能够帮你解决嵌套查询实验案例所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部