什么是SQLJOIN,有哪些不同的类型?
JOIN
来自[W3schools](https://www.w3schools.com/sql/sql_join.asp)的插图。
。
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
在这种 "JOIN "中,我们得到两个表中所有符合条件的记录,而两个表中不符合条件的记录不会被报告。
换句话说,"INNER JOIN "是基于这样一个事实。只有两个表中的匹配条目才应该被列出。
注意,没有任何其他 "JOIN "关键字(如 "INNER","OUTER","LEFT "等)的 "JOIN "是 "INNER JOIN"。换句话说,"JOIN "是 是 "INNER JOIN "的句法糖(见:https://stackoverflow.com/questions/565620/difference-between-join-and-inner-join)。
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 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 甚至懒得支持这个。
它是所涉及的两个表的笛卡尔乘积。在大多数情况下,"交叉连接 "的结果是没有意义的。 在大多数情况下都没有意义。此外,我们根本不需要这个(或者准确地说,至少需要)。
它不是 "JOIN "的不同形式,而是一个表与自身的 "JOIN"("INNER"、"OUTER "等)。
根据用于 "JOIN "子句的操作符,可以有两种类型的 "JOIN"。它们是
1.Equi JOIN 2.Theta JOIN
对于任何 "JOIN "类型("INNER","OUTER",等等),如果我们只使用平等运算符(=),那么我们就说 JOIN "是一个 "EQUI JOIN"。
这与EQUI JOIN相同,但它允许所有其他运算符,如>, =等。
EQUI JOIN
许多人认为EQUI JOIN和Theta JOIN类似于INNER, OUTER. 等JOIN'。但我强烈认为这是一个错误,使 想法模糊不清。因为INNER JOIN,OUTER JOIN`等都是与 而 "EQUI JOIN "和 "THETA JOIN "只与我们的运算符有关。 与我们在前者中使用的运算符有关。 同样,有很多人认为NATURAL JOIN'是某种形式的 "奇特"EQUI JOIN。事实上,这是真的,因为第一个 我提到的 "NATURAL JOIN "的条件。然而,我们不需要 仅仅局限于NATURAL JOIN'。INNER JOIN"、"OUTER JOIN "等都可以成为 "NATURAL JOIN"。 等也可以是一个`EQUI JOIN'。
许多人认为EQUI JOIN和Theta JOIN类似于INNER, OUTER. 等JOIN'。但我强烈认为这是一个错误,使 想法模糊不清。因为INNER JOIN,OUTER JOIN`等都是与 而 "EQUI JOIN "和 "THETA JOIN "只与我们的运算符有关。 与我们在前者中使用的运算符有关。
INNER
OUTER
JOIN'。但我强烈认为这是一个错误,使 想法模糊不清。因为
,
同样,有很多人认为NATURAL JOIN'是某种形式的 "奇特"EQUI JOIN。事实上,这是真的,因为第一个 我提到的 "NATURAL JOIN "的条件。然而,我们不需要 仅仅局限于NATURAL JOIN'。INNER JOIN"、"OUTER JOIN "等都可以成为 "NATURAL JOIN"。 等也可以是一个`EQUI JOIN'。
NATURAL JOIN'是某种形式的 "奇特"
。事实上,这是真的,因为第一个 我提到的 "NATURAL JOIN "的条件。然而,我们不需要 仅仅局限于
定义:
JOINS是一种同时从多个表中查询组合在一起的数据的方式。
就RDBMS而言,有5种类型的连接。
平等连接:基于平等条件,将两个表中的共同记录合并。 从技术上讲,连接是通过使用平等运算符(=)来比较一个表的主键值和另一个表的外键值,因此结果集包括两个表的共同(匹配)记录。实现方法见INNER-JOIN。
自然连接:**它是Equi-Join的增强版,其中SELECT 操作省略了重复的列。实现方法见INNER-JOIN
Non-Equi-Join:它是Equi-join的反面,其中连接条件是使用等价运算符(=)以外的其他运算符,例如,!=,=,>,
来自[W3schools](https://www.w3schools.com/sql/sql_join.asp)的插图。
。
什么是 "SQL JOIN"?
SQL JOIN
是一种从两个或多个数据库表中检索数据的方法。有哪些不同的 "SQL JOIN"?
总共有五个 "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 JOIN
和RIGHT OUTER JOIN
。当条件得到满足时,它从任何一个表中返回记录,当没有匹配时,返回`NULL'值。换句话说,"OUTER JOIN "是基于以下事实。只有其中一个表(右表或左表)或两个表(全表)中的匹配条目才应该被列出。
3.自然联接。
它是基于两个条件的。
这似乎更多的是理论性的,因此(可能)大多数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
相同,但它允许所有其他运算符,如>, =等。定义:
JOINS是一种同时从多个表中查询组合在一起的数据的方式。
JOINS的类型。
就RDBMS而言,有5种类型的连接。
平等连接:基于平等条件,将两个表中的共同记录合并。 从技术上讲,连接是通过使用平等运算符(=)来比较一个表的主键值和另一个表的外键值,因此结果集包括两个表的共同(匹配)记录。实现方法见INNER-JOIN。
自然连接:**它是Equi-Join的增强版,其中SELECT 操作省略了重复的列。实现方法见INNER-JOIN
Non-Equi-Join:它是Equi-join的反面,其中连接条件是使用等价运算符(=)以外的其他运算符,例如,!=,=,>,