数据库:连接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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值