Mysql多表查询

153 阅读1分钟

Mysql多表查询

什么是多表查询?

多表查询顾名思义就是从多张表中一次性的查询出我们想要的数据。

分类:

一、内连接查询( 相当于查询AB交集数据 )

1. 隐式内连接
SELECT 字段列表 FROM1,表2WHERE 条件;
2. 显式内连接
SELECT 字段列表 FROM1 [INNER] JOIN2 ON 条件;

image.png

二、外连接查询

  1. 左外连接查询 :相当于查询A表所有数据和交集部门数据
  2. 右外连接查询 :相当于查询B表所有数据和交集部分数据
-- 左外连接
SELECT 字段列表 FROM1 LEFT [OUTER] JOIN2 ON 条件;

-- 右外连接
SELECT 字段列表 FROM1 RIGHT [OUTER] JOIN2 ON 条件;

image.png

三、子查询

查询中嵌套查询,称嵌套查询为子查询。

子查询根据查询结果不同,作用不同

1.子查询语句结果是单行单列,子查询语句作为条件值,使用 = != > < 等进行条件判断
2.子查询语句结果是多行单列,子查询语句作为条件值,使用 in 等关键字进行条件判断
3.子查询语句结果是多行多列,子查询语句作为虚拟表

案例1:

select * from emp where salary > (select salary from emp where name = '猪八戒');

案例2:

-- 查询 '财务部' 或者 '市场部' 所有的员工的部门did
select did from dept where dname = '财务部' or dname = '市场部';

select * from emp where dep_id in (select did from dept where dname = '财务部' or dname = '市场部');

案例3:

-- 查询入职日期是 '2011-11-11' 之后的员工信息
select * from emp where join_date > '2011-11-11' ;
-- 将上面语句的结果作为虚拟表和dept表进行内连接查询
select * from (select * from emp where join_date > '2011-11-11' ) t1, dept where t1.dep_id = dept.did;