内连接和外联结的区别

 我来答
瞧这勾魂的小gr
2016-12-15 · TA获得超过841个赞
知道小有建树答主
回答量:920
采纳率:0%
帮助的人:93.3万
展开全部
98252441.doc
表之间的连接分为三种:

1.

内连接
(
自然连接
)
Join
默认的连接就是
inner join
,因此
inner
是可以省略的。

(以表
mm_fault

mm_fault_tree
为例:


Eg
:①
select f.name,t.name from mm_fault f inner join mm_fault_tree t on f.categories_id = t.id;
其查询结果和:


select f.name,t.name from mm_fault f,mm_fault_tree t where f.categories_id = t.id;
的查询结果
是一样的,也就是说,这两个查询语句是可以通用的。


自然连接:

Natural join


自然连接是内链接的一种。自然连接是在两张表中寻找那些数据类型和列名都相同的字段,
然后自动地将他们连接起来,并返回所有符合条件按的结果。

①如果做自然连接的两个表有多个字段都满足有相同的名称和类型,
那么他们会被作为自然
连接的条件。

②如果自然连接的两个表仅是字段名称相同,但数据类型不同,那么将返回“错误”


2.
外连接
(Outer Join)

1
)左外连接

(
左边的表不加限制
) left outer join/left join

2
)右外连接
(
右边的表不加限制
) right outer join/



3
)全外连接
(
左右两表都不加限制
) full outer join/




Outer join +on
子句(用于指定连接条件)其中
outer
可以省略。


如果使用
from
子句指定内、外连接,则必须要使用
on
子句指定连接条件;


如果使用(
+
)操作符指定外连接,则必须使用
where
子句指定连接条件。


outer
join
则会返回每个满足第一个(顶端)输入与第二个(底端)输入的联接的行。它
还返回任何在第二个输入中没有匹配行的第一个输入中的行。


在左外连接和右外连接时都会以一张表为基表,
该表的内容会全部显示,
然后加上两张表
匹配的内容。

如果基表的数据在另一张表没有记录。

那么在相关联的结果集行中列显示为
空值(
NULL



e.g: a left join b

a
为基表,
b
选择显示


对于外连接,

也可以使用“
(+)
”来表示。

关于使用(
+
)的一些注意事项:

1.

+
)操作符只能出现在
where
子句中,并且不能与
outer join
语法同时使用。

2.
当使用(
+
)操作符执行外连接时,如果在
where
子句中包含有多个条件,则必须在所有
条件中都包含(
+
)操作符

3.

+
)操作符只适用于列,而不能用在表达式上。

4.

+
)操作符不能与
or

in
操作符一起使用。

5.

+
)操作符只能用于实现左外连接和右外连接,而不能用于实现完全外连接。

e.g

select * from a,b where a.id=b.id(+);
a
为基表,全部显示,
left join,
左外连接
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式