阿里Java学习路线:阶段 2:数据库开发-SQL进阶及查询练习:课时14:连接查询之外连接

外连接:

左外:SELECT * FROM1 别名1 LEFT OUTER JOIN2 别名2 ON 别名1.xx=别名2.xx;
左表记录无论是否满足条件都会查询出来,而右表只有满足条件才能出来。左表中不满足条件的记录,右表部分都为NULL
左外自然:SELECT * FROM1 别名1 NATURAL LEFT OUTER JOIN2 别名2 ON 别名1.xx=别名2.xx;

右外:SELECT * FROM1 别名1 RIGHT OUTER JOIN2 别名2 ON 别名1.xx=别名2.xx;
右表记录无论是否满足条件都会查询出来,而左表只有满足条件才能出来。右表中不满足条件的记录,左表部分都为NULL
右外自然:SELECT * FROM1 别名1 NATURAL RIGHT OUTER JOIN2 别名2 ON 别名1.xx=别名2.xx;

全外连接(FULL OUTER JOIN,但mysql不支持):可以使用UNION来完成全连接。

# 外连接
# 外连接有一主一次,左外即左表为主
# 即emp为主,那么主表中所有的记录无论满足不满足条件,都打印出来
# 当不满足条件时,右表部分使用NULL来补位
SELECT e.ename,e.sal,IFNULL(d.dname,'无部门') AS dname
FROM emp e LEFT OUTER JOIN dept d
ON e.deptno=d.deptno;

SELECT e.ename,e.sal,d.dname
FROM emp e RIGHT OUTER JOIN dept d
ON e.deptno=d.deptno;

# 全外连接
SELECT e.ename,e.sal,d.dname
FROM emp e LEFT OUTER JOIN dept d
ON e.deptno=d.deptno
UNION
SELECT e.ename,e.sal,d.dname
FROM emp e RIGHT OUTER JOIN dept d
ON e.deptno=d.deptno;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值