SQL中内连接和外连接的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL中内连接和外连接的区别相关的知识,希望对你有一定的参考价值。

1、连接结果不同
内连接的连接结果仅包含符合连接条件的行,参与连接的两个表都必须符合连接条件;而外连接的连接结果不仅包含了符合连接条件的行,同时还包括不符合自身条件的行,其中还包括左外连接、右外连接以及全外连接。
2、注意事项不同
内连接需要注意区分在嵌套查询时使用的any以及all的区别;外连接不需要区分,左表和右表都不受限制,所有记录都显示,两个表不足的地方可用null进行填充。
参考技术A 1.内连接:内连接li(inner  join)就是join)利用where  子句对多表连接形成的笛卡尔积进行筛选。说白了内连接就是获取两个表之间的公共部分内容。

2.外连接分为左外连接和右外连接

  2.1左外连接left  join:如果要获取左边表中的全部内容,就使用左连接。

  2.2右连接right  join:如果要获取右边表的全部内容,就使用右连接。

比较内连接和外连接 SQL 语句

【中文标题】比较内连接和外连接 SQL 语句【英文标题】:Compare inner join and outer join SQL statements 【发布时间】:2010-12-20 17:09:16 【问题描述】:

内连接和外连接有什么区别?这两种join的具体含义是什么?

【问题讨论】:

【参考方案1】:

INNER JOIN 返回两个表中都存在的行

OUTER JOIN 返回任一表中存在的所有行

【讨论】:

如果两个表中都存在连接条件,则内连接从两个表中返回值......【参考方案2】:

***有一篇关于这个主题的不错的长文章 [这里](http://en.wikipedia.org/wiki/Join_(SQL))

但基本上:

内连接返回所有表中存在满足 where 子句的行的结果 外连接返回结果,其中至少有一个表中存在满足 where 子句的行

【讨论】:

【参考方案3】:

看看杰夫阿特伍德的出色表现:

A Visual Explanation of SQL Joins

马克

【讨论】:

当前页面现在位于blog.codinghorror.com/a-visual-explanation-of-sql-joins 存在一些小的格式问题,但与原来的相同。【参考方案4】:

您使用 INNER JOIN 从两个表中返回所有匹配的行。 IE。在结果表中,所有行和列都有值。

在 OUTER JOIN 中,结果表可能有空列。外连接可以是 LEFT 也可以是 RIGHT

LEFT OUTER JOIN 返回第一个表中的所有行,即使第二个表中没有匹配项。

RIGHT OUTER JOIN 返回第二个表中的所有行,即使第一个表中没有匹配项。

【讨论】:

【参考方案5】:

假设一个包含客户和订单的示例模式:

INNER JOIN:仅检索具有订单的客户。

LEFT OUTER JOIN:检索所有有订单或无订单的客户。

RIGHT OUTER JOIN:检索所有有或没有匹配客户记录的订单。

更详细的信息请见Inner and Outer Join SQL Statements

【讨论】:

【参考方案6】:

如果记录出现在两个表中,内连接只返回一个连接行。 取决于方向的外连接将显示一个表中的所有记录,并连接到存在相应行的连接表中的数据

【讨论】:

【参考方案7】:

使用数学集,

Inner Join is A ^ B;
Outer Join is A - B.

所以 (+) 是您在查询中的 A 方。

【讨论】:

以上是关于SQL中内连接和外连接的区别的主要内容,如果未能解决你的问题,请参考以下文章

sql 内连接和外连接的是啥意思?

sql server 2005 中的内连接和外连接 怎么理解?

sql左连接 右连接 内连接 外连接都是啥

mysql内连接和外连接的区别

SQL中有几种连接?有啥区别?(左连右连内连和外连?)

内连接和外连接的区别