目录
联合查询-union,union all
对于nuion 查询,就是把多次查询的结果合并起来,形成一个新的查询结果集
SELECT 字段列表 FROM 表A...
UINON [ALL]
SELECT 字段列表 FROM 表B...;
对于联合查询的多张表的列数必须保持一致,字段列表也需要保持一致。
使用union 查询结果会去重(即省略all)
案例演示:把薪资小于10000和年龄小于50的员工查询出来
初始emp表为
初始dept表为
union all查询
select * from emp where salary < 10000 union all select * from emp where age < 50;
结果为
union查询
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)
--标量子查询 --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)
--查询在常春遇入职之后的员工信息 --a.查询常春遇的入职日期 select entrydate from emp where name = '常春遇'; --b.查询指定入职日期之后的员工信息 select * from emp where entrydate > (select entrydate from emp where name = '常春遇');
执行b后