目录
联合查询-union,union all
子查询
概念
分类
标量子查询
联合查询-union,union all
对于nuion 查询,就是把多次查询的结果合并起来,形成一个新的查询结果集
SELECT 字段列表 FROM 表A... UINON [ALL] SELECT 字段列表 FROM 表B...;
对于联合查询的多张表的列数必须保持一致,字段列表也需要保持一致。
使用union 查询结果会去重(即省略all)
案例演示:把薪资小于10000和年龄小于50的员工查询出来
初始emp表为
初始dept表为
union all查询
代码语言:javascript复制select *
from emp where salary < 10000
union all
select *
from emp where age < 50;
结果为
union查询
代码语言:javascript复制select *
from emp where salary < 10000
union
select *
from emp where age < 50;
结果为
子查询
概念
SQL语句中嵌套SELECT语句,称为嵌套查询,又称子查询。
SELECT * FROM t1 WHERE column1 = ( SELECT column1 FROM t2);
子查询外部的语句可以是INSERT / UPDATE / DELETE / SELECT的任何一个。
分类
根据子查询结果不同,分为:
>标量子查询(子查询结果为单个值) >列子查询(子查询结果为一列) >行子查询(子查询结果为一行) >表子查询(子查询结果为多行多列)
根据子查询位置,分为: WHERE之后、FROM之后、SELECT之后。
标量子查询
子查询返回的结果是单个值(数字、字符串、日期等),最简单的形式,这种子查询成为标量子查询。 常用的操作符:= <> > >= < <=
案例(1)
代码语言:javascript复制--标量子查询
--1.查询销售部的所有员工信息
--a.查询销售部的部门ID
select id from dept where name = '研发部';
--b.根据销售部ID,查询员工信息
select * from emp where dept_id = (select id from dept where name = '研发部');
执行b后
案例(2)
代码语言:javascript复制--查询在常春遇入职之后的员工信息
--a.查询常春遇的入职日期
select entrydate from emp where name = '常春遇';
--b.查询指定入职日期之后的员工信息
select * from emp where entrydate > (select entrydate from emp where name = '常春遇');
执行b后