数据库JOIN

JOIN关键字

SELECT column
FROM join_table
JOIN_TYPE join_table
ON (join_condition)
  1. join_table指参与连接操作的表名
  2. column指查询的列
  3. JOIN_TYPE 指连接类型

INNER JOIN,内连接(等同连接)

返回结果集只返回满足ON字句中的搜索条件的数据,不满足则不显示。默认情况下,DBMS会将JOIN也认定为INNER JOIN

表R

A B C
a1 b1 c1
a2 b2 c2
a3 b3 c3

表S

C D
c1 d1
c2 d2
c4 d3

执行R INNER JOIN S ON R.C = S.C

A B C C D
a1 b1 c1 c1 d1
a2 b2 c2 c2 d2

交集。

OUTER JOIN,外连接

LEFT OUTER JOIN(LEFT JOIN),左外连接

结果集返回匹配行加上左表的不匹配行

表R

A B C
a1 b1 c1
a2 b2 c2
a3 b3 c3

表S

C D
c1 d1
c2 d2
c4 d3

执行R LEFT JOIN S ON R.C = S.C

A B C C D
a1 b1 c1 c1 d1
a2 b2 c2 c2 d2
a3 b3 c3 null null

LEFT JOIN产生表1的完全集,而2表中匹配的则有值,没有匹配的则以null值取代。

RIGHT OUTER JOIN(RIGHT JOIN),右外连接

结果集返回匹配行加上右表的不匹配行

表R

A B C
a1 b1 c1
a2 b2 c2
a3 b3 c3

表S

C D
c1 d1
c2 d2
c4 d3

执行R RIGHT JOIN S ON R.C = S.C

A B C C D
a1 b1 c1 c1 d1
a2 b2 c2 c2 d2
null null null c4 d3

RIGHT JOIN产生表2的完全集,而1表中匹配的则有值,没有匹配的则以null值取代。

FULL OUTER JOIN,全外连接

结果集返回匹配行和左右表的不匹配行

表R

A B C
a1 b1 c1
a2 b2 c2
a3 b3 c3

表S

C D
c1 d1
c2 d2
c4 d3

执行R FULL JOIN S ON R.C = S.C

A B C C D
a1 b1 c1 c1 d1
a2 b2 c2 c2 d2
a3 b3 c3 null null
null null null c4 d3

FULL OUTER JOIN产生1和2的并集。但是需要注意的是,对于没有匹配的记录,则会以null做为值。

Donate
  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
  • Copyrights © 2020 李明华
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信