<返回更多

SQL 连接类型概述和示例

2022-11-30    明眼窥浪
加入收藏

SQL JOIN 用于组合多个表并根据关系数据库中的公共字段检索数据。

我们可以使用规范化来确保和提高数据的完整性。 在各种规范化形式中,数据被分布到多个逻辑表中。 这些表使用引用约束(主键和外键)来强制 SQL Server 表中的数据完整性。

SQL JOIN 类型

SQL连接通过组合多个关系表来生成一个数据集。 这些表使用键关联,具有一对一或一对多的关系。 要想得到正确的数据,必须了解数据要求和连接机制。

SQL Server 支持多个连接,并且每种方法都有特定的方式从多个表中检索数据。 下图指定了支持的 SQL Server 连接。

SQL连接

内连接 INNER JOIN

SQL内连接产生一个满足连接条件的数据集,其中包括来自左表的行,来自右表的匹配行。

SQL内连接

例子

select employee.emp_id, employee.first_name, branch.branch_name

from employee

inner join branch

on employee.emp_id = branch.mgr_id

SQL内连接示例

SQL自连接 SELF JOIN

在SQL自连接中,SQL Server 将表与自身连接。 这意味着同一个表的名字在 from 子句中出现了两次。

SQL自连接

例子

select e.emp_id, e.first_name, m.first_name, m.emp_id

from employee e

inner join employee m

on m.emp_id = e.super_id

SQL自连接示例

SQL交叉连接 CROSS JOIN

交叉连接连接两个或多个不相关的表。

CROSS JOIN 将第一个表 (T1) 中的每一行与第二个表 (T2) 中的每一行连接起来。

换句话说,交叉连接返回两个表中行的笛卡尔积。

交叉连接

例子

select employee.emp_id, employee.first_name, branch.branch_name

from employee

cross join branch

交叉连接示例

如果第一个表有 x 行,第二个表有 n 行,则交叉连接在输出中给出 x*n 行。

所以应该避免在较大的表上进行交叉连接,因为它可能会返回大量数据,这样的话数据库需要大量的计算能力(CPU、内存和 IO)来处理。

SQL外连接 OUTER JOIN

SQL外连接时,不仅会列出匹配的行,还会返回其他表中不匹配的行。 不匹配的行取决于 关键字 left、right 或 full 。

左外连接 LEFT OUTER JOIN

SQL左外连接返回两个表的匹配行以及左表中不匹配的行。 如果左表中的记录在右表中没有任何匹配的行,则显示具有 NULL 值的记录。

左外连接

例子

select employee.emp_id, employee.first_name, branch.branch_name

from employee

left join branch

on

employee.emp_id = branch.mgr_id

左外连接 示例

右外连接 RIGHT OUTER JOIN

SQL右外连接返回两个表的匹配行以及右表中的不匹配行。 如果右表中的记录在左表中没有任何匹配的行,则显示具有 NULL 值的记录。

SQL右外连接

例子

select employee.emp_id, employee.first_name, branch.branch_name

from employee

right join branch

on

employee.emp_id = branch.mgr_id

SQL右外连接示例

全外连接 FULL OUTER JOIN

完整外部联接在输出中返回以下行:

全外连接

例子

select employee.emp_id, employee.first_name, branch.branch_name

from employee

full join branch

on

employee.emp_id = branch.mgr_id

全外连接

NULL 值和 SQL 连接

假设我们在表列中有 NULL 值,并且我们在这些列上连接表。 SQL Server 是否匹配 NULL 值?

NULL 值彼此不匹配。 因此,SQL Server 无法返回匹配的行。

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>