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

推荐答案

What is SQL JOIN ?

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

What are the different SQL JOINs ?

总共有五个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关键字(如INNEROUTERLEFT等)的JOININNER JOIN.换句话说,JOIN

2.外部连接:

OUTER JOIN次检索

任何一个

有三种外部连接:

2.1 LEFT OUTER JOIN or LEFT JOIN

此联接返回左表中的所有行以及左表中的匹配行

2.2 RIGHT OUTER JOIN or RIGHT JOIN

JOIN将返回右表中的所有行以及右表中的匹配行

2.3 FULL OUTER JOIN or 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. 从结果中删除重复的列.

这似乎更多地是理论性的,因此(可能)大多数DBMS

4.交叉连接:

它是所涉及的两个表的笛卡尔积.CROSS JOIN分的结果毫无意义

5.自动加入:

它不是JOIN的一种不同形式,而是一张JOIN(INNEROUTER等)的桌子.

JOINs based on Operators

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

  1. 等连接
  2. 西塔连接

1. 等连接 :

对于任何JOIN类型(INNEROUTER等),如果我们只使用相等运算符(=),那么我们说

2. 西塔连接 :

This is same as EQUI JOIN but it allows all other operators like >, <, >= etc.

许多人认为EQUI JOIN和θJOIN都类似于INNER, OUTER.

同样,有许多人认为NATURAL JOIN是某种类型的.

Sql相关问答推荐

创建每小时重置的序列号

帮助修复查询以识别SQL DW中数据中的递归关系

MariaDB查询在逗号分隔的字符串中查找多个值

每组显示一行(表1中的分组值),表2中的不同列表用逗号分隔

在Oracle SQL中将列值转换为行

PostgreSQL:按小时查看调整日期

Pgsql-返回包含多行数据的行

将两列相加为同一表中的行的查询

此过程如何在不引用传递的参数值的情况下执行工作?

删除所有订单中可用的重复值

如何使用Clickhouse的COUNT聚合返回所有列,但GROUP BY是这些列的子集

向表中添加新列取决于表的日期列(unpivot)

每个分组最多 Select 最后 2 个值并并排显示它们

Oracle 21c 中的递归查询回顾过go 3 周

我们可以使用连接改进包含多个子查询的查询吗

有没有办法在雅典娜中将字符串转换为 int ?

PostgreSQL如何将Unix纪元时间戳转换为日期时间并进行拼接

每组使用平均值来填补缺失值的SQL

如何仅在满足条件时才按顺序在 SQL 中计数?

在给定列中具有特定值的行与 SQL 中的总行数的比率