sql语法大全之子查询

所属分类:Database | 发布于 2022-10-18 10:44:33

前言

SQL中的子查询的使用大大增强了SELECT查询的能力,因为很多时候查询需要从结果集中获取数据,或者需要从同一个表中先计算得出一个数据结果,然后与这个数据结果(可能是hi某个标量,也可能是某个集合)进行比较。

 

子查询的定义

子查询是指一个查询语句嵌套在另外一个查询语句内部的查询。

子查询出现的位置

在SELECT语句中,除了GROUP BY和LIMIT之外,其它位置都可以声明子查询!

子查询的分类

分类角度一:按返回结果条目数分

  1. 单行子查询
  2. 多行子查询

分类角度二:按内部查询是否被执行多次分

  1. 相关(或关联)子查询:如果子查询需要执行多次,即采用循环的方式,先从外部查询开始,每次都传入子查询进行查询,然后再将结果反馈给外部,这种嵌套的执行方式就叫相关子查询。
  2. 不相关(或非相关)子查询:子查询从数据表中查询了数据结果,如果这个数据结果只执行一次,然后这个数据结果作为主查询的条件进行执行,那么这样的子查询叫做不相关子查询。

称谓的规范

1. 外查询(或主查询)

2. 内查询(或主查询)

子查询的基本语法结构

SELECT <select_list>
FROM Table
WHERE expr operator (
                                       SELECT <select_list>
                                       FROM Table
                                       )

 

相关子查询

解释

如果子查询的执行依赖于外部查询条件,通常情况下都是因为子查询中的表用到了外部的表,并进行了条件关联,因此每执行一次外部查询,子查询都要重新计算一遍,这样的子查询就称之为关联子查询。

相关子查询按照一行接一行的顺序执行,主查询的每一行都执行一次子查询。

基本语法示例

SELECT <select_list>
FROM table1 outer
WHERE col1 operator (
									SELECT <select_list>
									FROM table2
									WHERE expr1 = outer.expr2
									);

执行流程三步曲

1、GET,从主查询获取候选列(先从主查询获取一条数据)。

2、EXECUTE,子查询使用主查询的数据。

3、USE,主查询的数据如果满足子查询的条件,则返回该行。

文哥博客(https://wenge365.com)属于文野个人博客,欢迎浏览使用

联系方式:qq:52292959 邮箱:52292959@qq.com

备案号:粤ICP备18108585号 友情链接