”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 内联与外部联接:有什么区别,我什么时候应该使用?

内联与外部联接:有什么区别,我什么时候应该使用?

发布于2025-03-23
浏览:752

INNER JOIN vs. OUTER JOIN: What's the Difference and When Should I Use Each?

数据库连接:INNER JOIN 与 OUTER JOIN 的比较

在数据库操作中,连接操作是组合多个表数据的关键。INNER JOIN 和 OUTER JOIN 是两种基础的连接类型。本文将探讨它们的关键区别以及实际应用。

INNER JOIN:交集

INNER JOIN 选择在不同表中的两个或多个列具有匹配值的那些行。从概念上讲,它得到两个集合的交集,用维恩图的重叠部分表示。只有同时存在于两个表中的行才会包含在输出中。

OUTER JOIN:并集

与 INNER JOIN 不同,OUTER JOIN 包含指定表中的所有行,无论它们在其他表中是否有匹配项。此操作有效地创建了一个并集,用维恩图的组合区域表示。

OUTER JOIN 的类型

OUTER JOIN 又分为三种类型:

  • LEFT OUTER JOIN: 获取左侧表的所有行以及右侧表中任何匹配的行。右侧表中在左侧表中没有匹配项的行将包含 NULL 值。
  • RIGHT OUTER JOIN: 与 LEFT OUTER JOIN 类似,但获取右侧表的所有行以及左侧表中匹配的行。
  • FULL OUTER JOIN: 组合两个表的所有行,用 NULL 值填充缺失的匹配项。

实际示例

考虑以下包含客户及其订单数据的表:

Customer (id, name)
Orders (id, customer_id, product)

INNER JOIN:

SELECT *
FROM customer
INNER JOIN orders ON customer.id = orders.customer_id;

此查询将只返回下过订单的客户。

LEFT OUTER JOIN:

SELECT *
FROM customer
LEFT OUTER JOIN orders ON customer.id = orders.customer_id;

此查询将返回所有客户,包括没有订单的客户,订单信息将为 NULL 值。

RIGHT OUTER JOIN:

SELECT *
FROM customer
RIGHT OUTER JOIN orders ON customer.id = orders.customer_id;

此查询将返回所有订单,包括 Customer 表中不存在的客户下的订单,客户信息将为 NULL 值。

FULL OUTER JOIN:

SELECT *
FROM customer
FULL OUTER JOIN orders ON customer.id = orders.customer_id;

此查询将返回所有客户和所有订单,用 NULL 值填充缺失的匹配项。

最新教程 更多>

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3