连接查询: 可以将存在引用关系的表通过语法将各个表中的数据汇总到一个结果集中
连接查询分类:
1. 内连接查询
关键字: inner join
主表位置: 关键字左侧
查询方式: 以主表数据为基础, 根据连接条件, 到副表中匹配数据
匹配的次数: 1次
结果集的形成方式: 只会将匹配成功时的主表和副表数据同时放入结果集
2. 外连接查询
1) 左外连接查询
关键字: left join
主表位置: 关键字左侧
查询方式: 以主表数据为基础, 根据连接条件, 到副表中匹配数据
匹配的次数: 不限
结果集的形成方式: 无论是否匹配成功, 主表数据都会放入结果集,
每匹配成功1次, 则会将副表数据连同主表数据再放入结果集1次
2) 右外连接查询
关键字: right join
主表位置: 关键字右侧
查询方式: 以主表数据为基础, 根据连接条件, 到副表中匹配数据
匹配的次数: 不限
结果集的形成方式: 无论是否匹配成功, 主表数据都会放入结果集,
每匹配成功1次, 则会将副表数据连同主数据再放入结果集1次
-- 查询员工及其所属部门的信息
SELECT e.*, d.*
FROM emp e
INNER JOIN dept d ON e.`deptno` = d.`deptno`;
-- 查询员工及其上司的信息
SELECT s.`empno` 员工ID, s.`ename` 员工姓名, s.`mgr` 经理ID
, m.`ename` 经理姓名
FROM emp s
INNER JOIN emp m ON s.`mgr` = m.`empno`;
SELECT s.`empno` 员工ID, s.`ename` 员工姓名, s.`mgr` 经理ID
, m.`ename` 经理姓名
FROM emp s
LEFT JOIN emp m ON s.`mgr` = m.`empno`;
SELECT s.`empno` 员工ID, s.`ename` 员工姓名, s.`mgr` 经理ID
, m.`ename` 经理姓名
FROM emp s
RIGHT JOIN emp m ON s.`mgr` = m.`empno`;