什么是SQL JOIN?有哪些不同的类型?
JOIN
SQL JOIN
SQL JOIN 是从两个或多个数据库表中检索数据的方法。
总共有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
在这种情况下JOIN,我们获得了两个表中都符合条件的所有记录,并且两个表中不匹配的记录均未报告。
换句话说,INNER JOIN基于以下事实:仅应列出两个表中的匹配条目。
INNER JOIN
需要注意的是一个JOIN没有任何其他JOIN的关键字(如INNER,OUTER,LEFT,等)是INNER JOIN。换句话说,JOIN是的语法糖INNER JOIN。
INNER
OUTER
LEFT
OUTER JOIN 检索
OUTER JOIN
一个表中的匹配行与另一表中的所有行匹配,或者所有表中的所有行匹配(是否匹配)。
共有三种外连接:
2.1左外联接或左联接
此联接返回左表中的所有行以及右表中的匹配行。如果右表中没有匹配的列,则返回NULL值。
NULL
2.2正确的外部联接或正确的联接
这JOIN将返回右表中的所有行以及左表中的匹配行。如果左表中没有匹配的列,则返回NULL值。
2.3完全外部联接或完全联接
这JOIN结合LEFT OUTER JOIN和RIGHT OUTER JOIN。当满足条件时,它从任一表返回行,而NULL在没有匹配项时返回值。
LEFT OUTER JOIN
RIGHT OUTER JOIN
换句话说,OUTER JOIN基于以下事实:仅应列出表之一(右或左)或表两者(全)中的匹配条目。
Note that `OUTER JOIN` is a loosened form of `INNER JOIN`.
它基于两个条件:
这似乎本质上是理论上的,因此(可能)大多数DBMS甚至都不愿意为此提供支持。
它是所涉及的两个表的笛卡尔乘积。CROSS JOIN在大多数情况下,a的结果都没有意义。而且,我们根本不需要(或者至少需要)。
CROSS JOIN
这不是一个不同形式的JOIN,而它是一个JOIN(INNER,OUTER等)的表格的给自己。
根据JOIN子句使用的运算符,可以有两种类型JOIN的。他们是
对于任何JOIN类型(INNER,OUTER等等),如果仅使用相等运算符(=),那么我们说theJOIN是一个EQUI JOIN。
EQUI JOIN
与此相同,EQUI JOIN但是它允许所有其他运算符,例如>,<,> =等。
许多人认为EQUI JOIN和Theta都JOIN类似于INNER,OUTER etc JOIN。但是我坚信这是一个错误,并且使想法含糊不清。因为INNER JOIN,OUTER JOIN等等都与表及其数据,而连接EQUI JOIN和THETA JOIN仅与我们前使用运营商连接。 同样,有许多人认为这NATURAL JOIN是某种“奇特的” EQUI JOIN。实际上,这是真的,因为我提到的第一个条件NATURAL JOIN。但是,我们不必将其仅局限于NATURAL JOINs。INNER JOINs,OUTER JOINs等也可以EQUI JOIN。
许多人认为EQUI JOIN和Theta都JOIN类似于INNER,OUTER etc JOIN。但是我坚信这是一个错误,并且使想法含糊不清。因为INNER JOIN,OUTER JOIN等等都与表及其数据,而连接EQUI JOIN和THETA JOIN仅与我们前使用运营商连接。
THETA JOIN
同样,有许多人认为这NATURAL JOIN是某种“奇特的” EQUI JOIN。实际上,这是真的,因为我提到的第一个条件NATURAL JOIN。但是,我们不必将其仅局限于NATURAL JOINs。INNER JOINs,OUTER JOINs等也可以EQUI JOIN。
NATURAL JOIN