子查询
子查询介绍
-
含义:出现在其他语句(增删改查语句)中的select语句,称为子查询或内查询,外部的查询语句,称为主查询或者外查询
图示
-
子查询分类(以查询语句为例)
分类
where后面的子查询
image.png
子查询都是优先于主查询先去执行,因为主查询用到了子查询的结果。
where后面的标量子查询
案例:标量子查询
支持多个标量子查询
where后面的列子查询(又称多行子查询)
image.png
案例:
image.png
where后面的行子查询(了解查询)
image.png
select后面的子查询(只支持标量子查询)
了解即可,可用别的查询方式替换
from后面的子查询使用(表子查询)
image.png
exists后面的子查询使用(又叫相关子查询,用的也不多)
- 语法:select exists(子查询语句);
-
结果只有2个:1或者0;
根据子查询的结果就行判断是1还是0,子查询的结果有值就是1,为空则值为0.
image.png
image.png
分页查询
语法
案例1
案例2
联合查询
- union 联合 合并:将多条查询语句的结果合并成一个结果
- 语法:
查询语句1
union
查询语句2
union
... - 应用场景:
要查询的结果来自于多个表,且多个表没有直接的连接关系,但查询的信息一致时 - 特点:★
1、要求多条查询语句的查询列数是一致的!
2、要求多条查询语句的查询的每一列的类型和顺序最好一致,查询字段名称不一致的时候,返回的字段名称为前面的一条sql为标准,但内容却是各自查询的东西。
3、union关键字默认去重,如果使用union all 可以包含重复项
4、union的子句中,不用写order by,合并后的结果集可以进行order by,子句order by没有意义。
引入的案例:查询部门编号>90或邮箱包含a的员工信息
- SELECT * FROM employees WHERE email LIKE '%a%' OR department_id>90;
- SELECT * FROM employees WHERE email LIKE '%a%'
UNION
SELECT * FROM employees WHERE department_id>90;









网友评论