日期:2014-05-16  浏览次数:20489 次

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

前两天面试时被问到数据库左连接,原题是: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, yaoyao

3, yaoyao

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

A.id

A.name

B.id

B.name

1

Xiaolu

1

Xiaolu

2

yaoyao

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, yaoyao

3, yaoyao

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

B.id

B.name

A.id

A.name

1

<