1、外连接查询
外连接 查询分为左外连接(left outer join), 右外连接查询(right outer join) ,满外连接查询(full outer join).
注意:oracle 里面有full join ,但是在mysql中对full join 支持的不好。我们可以使用union来达到目的。
格式:
(1)左外连接:(关键字: left outer join)
select * from A left outer join B on 条件;
注意:当有多个表时,可以这样写:
select * from A left outer join B on 条件1
left outer join C on 条件2 ;
(2)右外连接(关键字:right outer join)
select * from A right outer join B on 条件;
注意:当有多个表时,可以这样写:
select * from A right outer join B on 条件1
right outer join C on 条件2;
操作:
------查询哪些部门有员工,哪些部门没有员工
------------查询员工有对应的部门,哪些没有
(3)实现满外连接(即将左外连接与右外连接的结果并起来)
注意:Mysql中不能使用full join
使用union
使用union all
union 与union的区别:
union是将两个查询结果上下拼接并去重,而union all是将两个查询结果上下拼接不去重。
2、子查询
(1)介绍
子查询就是指的在一个完整的查询语句之中,嵌套若干个不同功能的小查询,从而一起完成复杂查询的一种编写形式,通俗一点就是包含select嵌套的查询。
(2)特点
子查询可以返回的数据类型一共有4种:
1))单行单列:返回的是一个具体列的内容,可以理解为一个单值数据。
2))单行多列:返回一行数据多个列的内容。
3))多行单列:返回多行记录之中同一列的内容。
4))多行多列:查询返回的结果是一张临时表。
操作:
emp3表;
dept3表:
------查询年龄最大的员工信息,显示信息包含员工号、员工名字,员工年龄。
--------查询研发部和销售部的员工信息,包含员工号、员工名字、
方法一:联合查询
方法二:子查询