我是靠谱客的博主 雪白小蘑菇,这篇文章主要介绍SQL笔记——嵌套查询,现在分享给大家,希望可以做个参考。

嵌套查询

定义

一个SELECT-FROM语句为一个查询块

每一个查询块返回一个元组集和,这个查询块也可以用在其他查询块中

被嵌入的查询块叫做子查询,被嵌入的查询块叫做父查询

可嵌入的子句:WHERE,HAVING,FROM

嵌入FROM :基于派生表的查询

嵌入WHERE,HAVING :嵌套查询

基于派生表的查询

子查询的结果集可以和基本关系一样作为查询的数据源, 不过需要对结果集命名以便引用 textcolor{red}{不过需要对结果集命名以便引用} 不过需要对结果集命名以便引用

例子
复制代码
1
2
3
4
5
6
7
8
SELECT S.Sno,Sname,avg_grade FROM S, (SELECT Sno,AVG(Grade) AS avg_grade FROM SC GROUP BY Sno ) AS SC_AVG WHERE S.sno=SC_AVG.Sno
嵌套查询

将一个查询块嵌套在另外一个查询块的WHERE子句或者HAVING短语的条件中的查询

带有谓词IN的查询

查询与’刘晨’在同一个系学习的学生

1.确定刘晨所在系

复制代码
1
2
3
4
SELECT Sdept FROM S WHERE Sname='刘晨';

2.查找所有在IS系学习的学生

复制代码
1
2
3
4
SELECT Sno,Sname,Sdept FROM S WHERE Sdept IN ('IS');

3.将1嵌入2中得

复制代码
1
2
3
4
5
6
7
8
9
SELECT Sno,Sname,Sdept FROM S WHERE Sdept IN ( SELECT FROM S WHERE Sname='刘晨' );

先执行子查询,得到结果集{‘IS’}

再执行父查询

这种 子查询的执行不需要依赖父查询的嵌套查询称为不相关子查询 textcolor{red}{子查询的执行不需要依赖父查询的嵌套查询称为不相关子查询} 子查询的执行不需要依赖父查询的嵌套查询称为不相关子查询

带有比较运算符的子查询

当能确切知道内层查询返回一个 单值 textcolor{red}{单值} 单值时,可以用比较运算符(>,<.=,>=,<=,<>,!=), 子查询一定要放在运算符号之前 textcolor{red}{子查询一定要放在运算符号之前} 子查询一定要放在运算符号之前

找出这样的学号和课程号:该生选修这门课的成绩超过他所有选修课的平均成绩

复制代码
1
2
3
4
5
6
7
SELECT Sno,Cno FROM SC AS X WHERE Grade>=(SELECT AVG(Grade) FROM SC AS Y WHERE X.Sno=Y.Sno );

该查询为 相关子查询 textcolor{red}{相关子查询} 相关子查询

带有SOME,ALL谓词的子查询

需要配合比较运算符使用

谓词作用
>SOME大于子查询结果的某个值
>ALL大于子查询结果的所有值
<SOME小于子查询结果的某个值
<ALL大于子查询结果的所有值
>=SOME大于等于子查询结果的某个值
>=ALL大于等于子查询结果的所有值
<=SOME小于等于子查询结果的某个值
>=ALL大于等于子查询结果的所有值
=SOME等于子查询结果的某个值
=ALL等于子查询结果的所有值
<> SOME不等于子查询结果的某个值
<> ALL不等于子查询结果的所有值

其他系中比信息系某些学生年龄小的学生姓名和年龄

复制代码
1
2
3
4
5
6
7
SELECT Sname,Sage, FROM S WHERE Sage<SOME(SELECT Sage FROM S WHERE Sdept='IS' ) AND Sdept<>'IS';
带有EXISTS谓词的子查询

带有EXISTS的子查询不返回数据,之返回逻辑值 ‘true’或’false’

若内层结果为空 返回false

若内层结果不为空 返回true

查询所有选修了c1课程的学生姓名

复制代码
1
2
3
4
5
6
7
SELECT Sname FROM S WHERE EXISTS(SELECT * FROM SC WHERE Sno=S.Sno AND Cno='C1' );
小结

1.嵌套查询分为相关子查询和不相关子查询

2.子查询的属性不会出现在父查询的输出上

3.子查询不能使用ORDER BY,ORDER BY语句只能对最终结果排序

最后

以上就是雪白小蘑菇最近收集整理的关于SQL笔记——嵌套查询的全部内容,更多相关SQL笔记——嵌套查询内容请搜索靠谱客的其他文章。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部