小编典典

SQL JOIN和不同类型的JOIN

sql

什么是SQL JOIN?有哪些不同的类型?


阅读 218

收藏
2021-05-05

共1个答案

小编典典

什么SQL JOIN

SQL JOIN 是从两个或多个数据库表中检索数据的方法。

SQL JOINs有什么不同?

总共有5JOIN秒。他们是 :

  1. JOIN or INNER JOIN
  2. OUTER JOIN

     2.1 LEFT OUTER JOIN or LEFT JOIN
     2.2 RIGHT OUTER JOIN or RIGHT JOIN
     2.3 FULL OUTER JOIN or FULL JOIN

  3. NATURAL JOIN
  4. CROSS JOIN
  5. SELF JOIN

1. JOIN或INNER JOIN:

在这种情况下JOIN,我们获得了两个表中都符合条件的所有记录,并且两个表中不匹配的记录均未报告。

换句话说,INNER JOIN基于以下事实:仅应列出两个表中的匹配条目。

需要注意的是一个JOIN没有任何其他JOIN的关键字(如INNEROUTERLEFT,等)是INNER JOIN。换句话说,JOIN是的语法糖INNER JOIN

2.外连接:

OUTER JOIN 检索

一个表中的匹配行与另一表中的所有行匹配,或者所有表中的所有行匹配(是否匹配)。

共有三种外连接:

2.1左外联接或左联接

此联接返回左表中的所有行以及右表中的匹配行。如果右表中没有匹配的列,则返回NULL值。

2.2正确的外部联接或正确的联接

JOIN将返回右表中的所有行以及左表中的匹配行。如果左表中没有匹配的列,则返回NULL值。

2.3完全外部联接或完全联接

JOIN结合LEFT OUTER JOINRIGHT OUTER JOIN。当满足条件时,它从任一表返回行,而NULL在没有匹配项时返回值。

换句话说,OUTER JOIN基于以下事实:仅应列出表之一(右或左)或表两者(全)中的匹配条目。

Note that `OUTER JOIN` is a loosened form of `INNER JOIN`.

3.自然加入:

它基于两个条件:

  1. JOIN对所有与平等相同名称的列所做的。
  2. 从结果中删除重复的列。

这似乎本质上是理论上的,因此(可能)大多数DBMS甚至都不愿意为此提供支持。

4.交叉加入:

它是所涉及的两个表的笛卡尔乘积。CROSS JOIN在大多数情况下,a的结果都没有意义。而且,我们根本不需要(或者至少需要)。

5.自我加入:

这不是一个不同形式的JOIN,而它是一个JOININNEROUTER等)的表格的给自己。

基于运算符的JOIN

根据JOIN子句使用的运算符,可以有两种类型JOIN的。他们是

  1. 平等加入
  2. 塞塔·乔恩(Theta JOIN)

1. Equi JOIN:

对于任何JOIN类型(INNEROUTER等等),如果仅使用相等运算符(=),那么我们说theJOIN是一个EQUI JOIN

2. Theta JOIN:

与此相同,EQUI JOIN但是它允许所有其他运算符,例如>,<,> =等。

许多人认为EQUI JOIN和Theta都JOIN类似于INNEROUTER etc
JOIN。但是我坚信这是一个错误,并且使想法含糊不清。因为INNER JOINOUTER JOIN等等都与表及其数据,而连接EQUI JOINTHETA JOIN仅与我们前使用运营商连接。

同样,有许多人认为这NATURAL JOIN是某种“奇特的” EQUI JOIN。实际上,这是真的,因为我提到的第一个条件NATURAL JOIN。但是,我们不必将其仅局限于NATURAL JOINs。INNER JOINs,OUTER JOINs等也可以EQUI JOIN

2021-05-05