SQL JOIN和不同类型的JOIN

什么是SQLJOIN,有哪些不同的类型?

来自[W3schools](https://www.w3schools.com/sql/sql_join.asp)的插图






评论(18)
解决办法

什么是 "SQL JOIN"?

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

有哪些不同的 "SQL JOIN"?

总共有五个 "JOIN"。它们是 :

  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 "关键字(如 "INNER","OUTER","LEFT "等)的 "JOIN "是 "INNER JOIN"。换句话说,"JOIN "是 是 "INNER JOIN "的句法糖(见:https://stackoverflow.com/questions/565620/difference-between-join-and-inner-join)。

2.2. OUTER JOIN :

OUTER JOIN检索

任意一个。 一个表中的匹配记录和另一个表中的所有记录 或者。 所有表中的所有记录(是否有匹配的记录并不重要)。

有三种外层连接。

2.1 LEFT OUTER JOIN或LEFT JOIN

这种连接将左表的所有记录与右表的匹配记录一起返回。 右表的匹配行。如果在右表中没有匹配的列,它会返回 "NULL "值。

2.2 RIGHT OUTER JOIN或RIGHT JOIN

这个 "JOIN "将右表的所有记录与左表的匹配记录一起返回。 左表的匹配行。如果左表中没有匹配的列,则返回 "NULL "值。

2.3 FULL OUTER JOIN或FULL JOIN

这个JOIN结合了LEFT OUTER JOINRIGHT OUTER JOIN。当条件得到满足时,它从任何一个表中返回记录,当没有匹配时,返回`NULL'值。

换句话说,"OUTER JOIN "是基于以下事实。只有其中一个表(右表或左表)或两个表(全表)中的匹配条目才应该被列出。

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

3.自然联接。

它是基于两个条件的。

  1. "JOIN "是在所有具有相同名称的列上进行的,以实现平等。 2.2. 从结果中删除重复的列。

这似乎更多的是理论性的,因此(可能)大多数DBMS 甚至懒得支持这个。

4.CROSS JOIN:

它是所涉及的两个表的笛卡尔乘积。在大多数情况下,"交叉连接 "的结果是没有意义的。 在大多数情况下都没有意义。此外,我们根本不需要这个(或者准确地说,至少需要)。

5.5.SELF JOIN:

它不是 "JOIN "的不同形式,而是一个表与自身的 "JOIN"("INNER"、"OUTER "等)。

基于操作符的 JOIN

根据用于 "JOIN "子句的操作符,可以有两种类型的 "JOIN"。它们是

1.Equi JOIN 2.Theta JOIN

1.Equi JOIN :

对于任何 "JOIN "类型("INNER","OUTER",等等),如果我们只使用平等运算符(=),那么我们就说 JOIN "是一个 "EQUI JOIN"。

2.Theta JOIN :

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

许多人认为EQUI JOIN和Theta JOIN类似于INNER, OUTER. 等JOIN'。但我强烈认为这是一个错误,使 想法模糊不清。因为INNER JOINOUTER JOIN`等都是与 而 "EQUI JOIN "和 "THETA JOIN "只与我们的运算符有关。 与我们在前者中使用的运算符有关。

同样,有很多人认为NATURAL JOIN'是某种形式的 "奇特"EQUI JOIN。事实上,这是真的,因为第一个 我提到的 "NATURAL JOIN "的条件。然而,我们不需要 仅仅局限于NATURAL JOIN'。INNER JOIN"、"OUTER JOIN "等都可以成为 "NATURAL JOIN"。 等也可以是一个`EQUI JOIN'。

评论(3)

定义:


JOINS是一种同时从多个表中查询组合在一起的数据的方式。

JOINS的类型。


就RDBMS而言,有5种类型的连接。

  • 平等连接:基于平等条件,将两个表中的共同记录合并。 从技术上讲,连接是通过使用平等运算符(=)来比较一个表的主键值和另一个表的外键值,因此结果集包括两个表的共同(匹配)记录。实现方法见INNER-JOIN。

  • 自然连接:**它是Equi-Join的增强版,其中SELECT 操作省略了重复的列。实现方法见INNER-JOIN

  • Non-Equi-Join:它是Equi-join的反面,其中连接条件是使用等价运算符(=)以外的其他运算符,例如,!=,=,>,

评论(2)