【发布时间】:2019-09-03 23:48:36
【问题描述】:
据我了解,CROSS JOIN 本质上是一个产生笛卡尔积的叉积。 INNER JOIN、RIGHT JOIN、LEFT JOIN、OUTER JOIN 是否也是笛卡尔积,除了它们不产生重复并对其应用了某些条件?
谢谢!
注意:我不认为这是重复的。该链接没有详细说明与我正在寻找的细节的区别。由读者来挖掘和推断差异。我在下面提供的答案有望为读者节省一些时间。
【问题讨论】:
据我了解,CROSS JOIN 本质上是一个产生笛卡尔积的叉积。 INNER JOIN、RIGHT JOIN、LEFT JOIN、OUTER JOIN 是否也是笛卡尔积,除了它们不产生重复并对其应用了某些条件?
谢谢!
注意:我不认为这是重复的。该链接没有详细说明与我正在寻找的细节的区别。由读者来挖掘和推断差异。我在下面提供的答案有望为读者节省一些时间。
【问题讨论】:
JOIN 操作可以指定为 CARTESIAN PRODUCT 操作 然后是 SELECT 操作。
...
JOIN 的结果是一个具有 n + m 个属性 Q(A1, A2, ... , An, B1, B2, ... , Bm) 按此顺序; Q 每个都有一个元组 元组的组合——一个来自 R,一个来自 S——只要 组合满足连接条件。这是主要区别 笛卡尔积和联接之间。在 JOIN 中,只有 满足连接条件的元组出现在结果中,而在 笛卡尔积 元组的所有组合都包含在 结果。连接条件是在两个属性上指定的 关系 R 和 S 并针对每个元组组合进行评估。 连接条件评估为 TRUE 的每个元组组合 包含在结果关系 Q 中作为单个组合元组。
来源:数据库系统基础(第 7 版),Elmasri
【讨论】: