数据库:连接join的使用

在平时的应用中经常需要从多个数据表中查询和读取数据,并且合并提取匹配的信息,join就是这个时候需要使用的。

Join可以在select,update和delete语句中使用。

 

join的用途

按照功能大致分为如下三类:

  • inner join(内连接,也叫等值连接):获取两个表中字段匹配关系的记录。单独使用join也是同inner join的作用
  • Left join(左连接):获取左表所有记录,即使右表没有对应匹配的记录。
  • right join(右连接): 与left join的功能正好相反,用于获取右表所有记录,即使左表没有对应匹配的记录。

 

示例

数据库中有两张表 TABLE_A 和 TABLE_B。并假设TABLE_A 为左表,TABLE_B 为右表。且两张数据表数据如下:

TABLE_A

 ID 

COM

 TIME

1

Twitter 

 2017-04-12

2

Twitter 

 2017-04-12

3

Facebook

 2015-05-01

4

Facebook

 2016-03-06

5

Instagram

 2017-04-05

TABLE_B

COM

 FRIEND 

Twitter 

 10

Facebook

 20

Google

 22

 

Inner join

使用inner join连接上述两表,读取TABLE_A表中所有COM字段在TABLE_B表对应的FRIEND值:

select A.ID, A.COM, B.FRIEND from TABLE_A a inner join TABLE_B b on A.COM = B.COM;

则执行完的结果为:

 A.ID 

 A.COM 

 B.FRIEND 

 1

 Twitter 

 10

 2

 Twitter 

 10

 3

 Facebook

 20

 4

 Facebook

 20

等价于where 子句

select A.ID, A.COM, B.FRIEND from TABLE_A a, TABLE_B b where A.COM = B.COM

 

left join

使用left join读取左边数据表的全部数据,即便右边表无对应数据。连接后无数据的内容则在数据表中正常按(NULL)显示

 select A.ID, A.COM, B.FRIEND from TABLE_A a left join TABLE_B b on A.COM = B.COM

则执行完的结果为:

 A.ID 

 A.COM 

 B.FRIEND 

 1

 Twitter 

 10

 2

 Twitter 

 10

 3

 Facebook

 20

 4

 Facebook

 20

 5

 Instagram 

 NULL

 

right join

使用right join 会读取右边数据表的全部数据,即便左边边表无对应数据。

select A.ID, A.COM, B.FRIEND from TABLE_A a right join TABLE_B b on A.COM = B.COM

则执行完的结果为:

 A.ID 

 A.COM 

 B.FRIEND 

 1

 Twitter 

 10

 2

 Twitter 

 10

 3

 Facebook

 20

 4

 Facebook

 20

 NULL

 NULL

 22

 

假设语句为:

select A.ID, B.COM, B.FRIEND from TABLE_A a right join TABLE_B b on A.COM = B.COM

则执行完的结果为:

 A.ID 

 B.COM 

 B.FRIEND 

 1

 Twitter 

 10

 2

 Twitter 

 10

 3

 Facebook

 20

 4

 Facebook

 20

 NULL

 Google 

 22

猜你喜欢

转载自blog.csdn.net/alice_tl/article/details/88781557
今日推荐