全国咨询/投诉热线:400-618-4000

JAVA培训之连接查询之外连接

更新时间:2016年10月25日16时26分 来源:传智播客JAVA培训学院 浏览次数:


外连接分为左外连接,右外连接以及全外连接。前面我们学习的内连接获得是满足条件的记录,连接查询的表中不满足条件的记录被去掉。而外连接的特点是:查询出的结果存在不满足条件的可能。

1.左外连接

左外连接是将左表的所有记录查询出来,左表中不满足条件的记录对应的右表中的列的值显示为NULL。左外连接的关键词是:LEFT OUTER JOIN,对应的sql语句如下:
  • SELECT * FROM 表1 别名1 LEFT OUTER JOIN 表2 别名2 ON 别名1.列名=别名2.列名
其中表1就是左表,又称为主表,表2是右表。
使用左外连接查询出每个员工的信息以及所在部门信息,对应的查询语句是:select * from emp e left outer join dept d on e.deptno=d.deptno,查询结果如图1-1所示:

图1-1 左外连接
图1-1中,由查询结果可知当左表的记录不满足条件时,右表的列的值为null。图1-1中张三的部门号为50,而dept表中没有这个部门,那么部门信息就用null代替。这就是左外连接的特点。

2.右外连接

右外连接是将右表中的所有记录查询出来,右表中不满足条件的记录对应的左表中的列的值显示为NULL。右连接的关键词是:RIGHT OUTER JOIN,对应的sql语句如下:
  • SELECT * FROM 表1 别名1 RIGHT OUTER JOIN 表2 别名2 ON 别名1.列名=别名2.列名
其中表1是左表,表2是右表,又称为主表。
使用右外连接查询出每个部门的信息,以及部门的员工信息,对应的查询语句是:select * from emp e right outer join dept d on e.deptno=d.deptno,查询结果如图1-2所示:

图1-2 右外连接
图1-1中,查询的结果中财务部没有员工,那么必然不会有员工的部门号与财务部的部门号相同,那么该记录就不满足查询条件,因此左表的所有列的值为null,这就是右外连接的特点。

3.全外连接

全外连接对左表和右表都不做限制,所有的记录都显示,两表中不满足条件的地方用null填充。全外连接的关键词是:FULL OUTRE JOIN,对应的sql语句如下:
  • SELECT * FROM 表1 别名1 FULL OUTER JOIN 表2 别名2 ON 别名1.列名=别名2.列名
MySQL数据库不支持全外连接,但是从分析来看,全外连接就是将左外连接以及右外连接的结果合并起来。
使用全外连接查询emp表和dept表的信息,如图1-3所示:

图1-3 全外连接
图1-3中,使用如下sql语句模拟全外连接的效果:
SELECT
*
FROM
emp e LEFT OUTER JOIN dept d
ON
e.deptno=d.deptno
UNION
SELECT
*
FROM
emp e RIGHT OUTER JOIN dept d
ON
    e.deptno=d.deptno
图1-3的查询结果中,两个表中不满足条件的对应位置用null代替。

使用左外连接查询,左表是e1,因此e1表中的所有员工姓名都被查询出来,e2表中不满足条件的位置用null代替。

本文版权归传智播客人工智能+Python学院所有,欢迎转载,转载请注明作者出处。谢谢!
作者:传智播客人工智能+Python学院

javaee

python

web

ui

cloud

test

c

netmarket

pm

Linux

movies

robot

uids

北京校区

    14天免费试学

    基础班入门课程限时免费

    申请试学名额

    15天免费试学

    基础班入门课程限时免费

    申请试学名额

    15天免费试学

    基础班入门课程限时免费

    申请试学名额

    15天免费试学

    基础班入门课程限时免费

    申请试学名额

    20天免费试学

    基础班入门课程限时免费

    申请试学名额

    8天免费试学

    基础班入门课程限时免费

    申请试学名额

    20天免费试学

    基础班入门课程限时免费

    申请试学名额

    5天免费试学

    基础班入门课程限时免费

    申请试学名额

    0天免费试学

    基础班入门课程限时免费

    申请试学名额

    12天免费试学

    基础班入门课程限时免费

    申请试学名额

    5天免费试学

    基础班入门课程限时免费

    申请试学名额

    5天免费试学

    基础班入门课程限时免费

    申请试学名额

    10天免费试学

    基础班入门课程限时免费

    申请试学名额