使用关键字 OUTER JOIN 连接两张表,并使用 ON 子句来设置连接条件。除了显示匹配的数据之外,还可以显示不匹配的数据

  1. SELECT 字段名称 FROM 表名1 LEFT|RIGHT|FULL| [OUTER] JOIN 表名2 ON 表名1.字段名1=表面2.字段名2 ;

尽管可以省略 OUTER 关键字,但是建议写全。

通俗解释: 先拿出主表的所有数据,然后到关联的那张表去找有没有符合关联条件的数据,如果有,正常显示,如果没有,显示为NULL

左外连接

LEFT OUTER JOIN,左边表信息即使不匹配也可以查看结果

  1. SELECT ENAME, SAL
  2. FROM EMP E
  3. LEFT OUTER JOIN DEPT D
  4. ON (E.DEPTNO = D.DEPTINO) ;

左边表即 EMP 表,不匹配的数据在右表中以 NULL 显示

右外连接

RIGHT OUTER JOIN,右边表信息即使不匹配也可以查看结果

  1. SELECT ENAME, SAL
  2. FROM EMP E
  3. RIGHT OUTER JOIN DEPT D
  4. ON (E.DEPTNO = D.DEPTINO) ;

右边表即 DEPT 表,不匹配的数据在左表中以 NULL 显示

全外连接

FULL OUTER JOIN 在 MySQL 中暂时不支持。ORACLE 支持,即展示左,右表全部不匹配的数据。采用 UNION 关键字来解决

  1. SELECT * FROM EMP E LEFT OUTER JOIN DEPT D ON (E.DEPTNO = D.DEPTNO)
  2. UNION
  3. SELECT * FROM EMP E2 RIGHT OUTER JOIN DEPT D2 ON (E2.DEPTNO = D2.DEPTNO) ;

MySQL 中目前只支持并集