左连接、右连接和内链接(自然连接)

 

前两天面试时被问到数据库左连接,原题是:A、B表中各有4条数据,A表左连接B表时会显示多少条数据?当时脑残的说了句:16条!唉~悲催的。。。一下子体现了自己在数据库方面的弱项,回来之后补习了一下,在此记录一下个人学习之后的总结:

1、左连接

左连接基本格式为A left join B on A.key=B.key,比如以下语句:

select * from A left join B on A.id=B.id;

如果A、B表的数据结构为:

A:                B:

id, name

id, name

1, xiaolu

1, xiaolu

2, chuanchuan

3, chuanchuan

,这时执行上述语句会得出如下结果:

A.id

A.name

B.id

B.name

1

Xiaolu

1

Xiaolu

2

chuanchuan

null

null

由上述结果可以看出,左连接是以左表为坐标,首先将A表中所有的数据列出来,然后根据on的匹配条件查出B表中的数据并将数据列在A表数据后面,如果在B表中没有与A表中匹配的数据,则显示为null,查询出的总数据数为A表中的数据条目个数。

2、右连接

右连接基本格式为A right join B on A.key=B.key,比如以下语句:

select * from A right join B on A.id=B.id;

如果A、B表的数据结构为:

A:               B:

id, name

id, name

1, xiaolu

1, xiaolu

2, chuanchuan

3, chuanchuan

,这时执行上述语句会得出如下结果:

B.id

B.name

A.id

A.name

1

xiaolu

1

xiaolu

null

null

3

chuanchuan

由上述结果可以看出,左连接是以左表为坐标,首先将B表中所有的数据列出来,然后根据on的匹配条件查出A表中的数据并将A表的数据列在B表的前面,如果在A表中没有与B表中匹配的数据,则显示为null,查询出的总数据数为B表中的数据条目个数。

3、内链接

内连接基本格式为A inner join B on A.key=B.key,比如以下语句:

select * from A inner join B on A.id=B.id;

如果A、B表的数据结构为:

A:                B:

id, name

id, name

1, xiaolu

1, xiaolu

2, chuanchuan

3, chuanchuan

,这时执行上述语句会得出如下结果:

A.id

A.name

B.id

B.name

1

xiaolu

1

xiaolu

由上述结果可以看出,内链接是只显示匹配的数据

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值