SQL各种Join连接总结

连接运算是8种关系运算中的一种。

五种JOIN方式:

1.INNER JOIN or JOIN
2.OUTER JOIN
    2.1LEFT OUTER JOIN or LEFT JOIN
    2.2RIGHT OUTER JOIN or RIGHT JOIN
    2.3FULL OUTER JOIN or FULL JOIN
3.NATURAL JOIN
4.CROSS JOIN
5.SELF JOIN

PS:JOIN中的简写为语法糖,实际中写出来方便读一点而已

两种连接条件:

1.Equi JOIN
    1.1NATURAL
    1.2USING(a,b)
    1.3=
    ...
2.Theta JOIN
    2.1>=
    2.2<=
    2.3>
    ...

PS:USING(...)指定需要哪些列相等。ON则可以指定任意的连接条件(=,>=,<=,!=,>,<...)

JOIN or INNER JOIN

返回两个表中同时满足条件的元组对,不满足的将被丢弃。

OUTER JOIN

LEFT OUTER JOIN

返回左表所有行以及右表满足条件的行,左表有值右表无值填充为null

RIGHT OUTER JOIN

返回右表所有行以及左表满足条件的行,右表有值左表无值填充为null

FULL OUTER JOIN

返回所有表的所有行,在满足条件的行之外,左表满足右表不满足或者相反,均填充null

NATURAL JOIN

1、来自两个关系的元组对在共同属性上的值相同。(不限于一个共同属性,也可以是多个共同属性)
2、去掉重复的属性(列)。
3、列出属性的顺序:先是共同属性,然后是第一个关系的属性,最后是第二个关系的属性。

为了防止两个表有多个共同属性时natural join 会忽略部分需要的元组对,应使用join…using(…),以指定需要哪些列相等
join…using(…)连接只能局限在指定的属性上

CROSS JOIN

返回笛卡儿积

SELF JOIN

相当于A JOIN A

最后放一张图:
这里写图片描述

参考:

http://stackoverflow.com/questions/565620/difference-between-join-and-inner-join
http://stackoverflow.com/questions/3308122/how-do-i-decide-when-to-use-right-joins-left-joins-or-inner-joins-or-how-to-dete/3308153#3308153
http://stackoverflow.com/questions/17946221/sql-join-and-different-types-of-joins/17946222#17946222

  • 13
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值