数据库-MySQL-基础(11)-多表查询

2022-11-18 15:42:44 浏览数 (2)

目录

联合查询-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后

0 人点赞