SQL连接方式(左连接、右连接、内连接)

1. 表结构.

表A


表B


2. 内连接
语句
select 
	*
from
	A a
 inner join B b  on b.id = a.out_id


等于
select 
	*
from
	A a,B b
 where   b.id = a.out_id


结果

分析:
ON 字句连接条件,不再与左连接或右连接的功效一样,
除了作为2表记录匹配的条件外,还会起到过滤记录的作用,
若 A表 中记录无法在 B表 中找到对应的记录,则会被过滤掉.
WHERE字句,不管是涉及A表、B表上的限制条件,
还是涉及2表连接的条件,都会对记录集起到过滤作用,把不符合要求的记录刷选掉.


3. 左连接
语句
select 
	*
from
	A a
left join B b  on b.id = a.out_id

结果

分析:
ON字句连接条件,用于把2表中等值的记录连接在一起.但是不影响记录集的数量。
若是表A中的某记录,无法在表B找到对应的记录,则此记录依然显示在记录集钟.
只是表 B 需要在查询显示的列的值用NULL替代.

ON字句连接条件中表A和表B建立链接的关联
WHERE字句控制记录是否符合查询要求,不符合则过滤掉.
总结:ON字句控制B表的列值符合显示,还是不符合就用NULL替换,不影响最终符合查询要求的记录集;
WHERE字句是控制那些记录是显示在最终的记录集中。

4. 右连接
语句
select 
	*
from
	A a
right join B b  on b.id = a.out_id

结果

分析:
ON字句连接条件,用于把2表中等值的记录连接在一起,
若是表 B 中的某记录,无法在表 A 找到对应的记录,
则表 left_able需要在查询显示的列的值用NULL替代.

ON字句连接条件中表A和表B的链接条件
WHERE字句控制记录是否符合查询要求,不符合则过滤掉.
总结:ON字句控制A的列值符合显示,还是不符合而用NULL替换掉.
不影响最终符合查询要求的记录集;
WHERE字句是控制那些记录是显示在最终的记录集中。
我们会发现LEFT JOIN 和RIGHT JOIN是类似的,
只是以连接关键字左边还是右边表为准匹配。



猜你喜欢

转载自lingf.iteye.com/blog/1310954