sql 中连接和集合的区别?
Differences between joins and sets in sql?
JOINS(INNER JOIN、LEFT OUTER JOIN、RIGHT OUTER JOIN 等)和 SET 操作(INTERSECT、MINUS 等)之间的主要区别是什么?
首先,连接和集合操作是两个不同的鱼缸。联接可以让您过滤集合之间的行,这是真的,但它们远不止于此(您可以通过联接 tables 并从所有 tables 中选择列来制作更宽的行,而集合操作适用于宽度相同的行集。
我在脑海中想象事物的方式是连接是水平的(即来自 table1 的行紧挨着来自 table2 的匹配行,它们紧挨着来自 [=18 的匹配行=] 3 等),而集合操作是垂直的(因为第二组的行位于第一组的行下方)。何时选择使用集合操作而不是连接在很大程度上取决于具体情况。有点像决定是用锤子还是螺丝刀将两块木头固定在一起——你会用锤子将螺丝拧入木头吗?
其次,Oracle 一直(好吧,至少从第 7 版开始!)有连接。联接是关系数据库工作方式的基础!
我猜你真正想问的是为什么 Oracle 引入了连接的 ANSI 语法,我猜想(你必须问 Larry 了解全部原因!)这是为了让 Oracle 符合要求使用 ANSI 连接标准,许多其他 RDBMS 平台已采用该标准。
JOINS(INNER JOIN、LEFT OUTER JOIN、RIGHT OUTER JOIN 等)和 SET 操作(INTERSECT、MINUS 等)之间的主要区别是什么?
首先,连接和集合操作是两个不同的鱼缸。联接可以让您过滤集合之间的行,这是真的,但它们远不止于此(您可以通过联接 tables 并从所有 tables 中选择列来制作更宽的行,而集合操作适用于宽度相同的行集。
我在脑海中想象事物的方式是连接是水平的(即来自 table1 的行紧挨着来自 table2 的匹配行,它们紧挨着来自 [=18 的匹配行=] 3 等),而集合操作是垂直的(因为第二组的行位于第一组的行下方)。何时选择使用集合操作而不是连接在很大程度上取决于具体情况。有点像决定是用锤子还是螺丝刀将两块木头固定在一起——你会用锤子将螺丝拧入木头吗?
其次,Oracle 一直(好吧,至少从第 7 版开始!)有连接。联接是关系数据库工作方式的基础!
我猜你真正想问的是为什么 Oracle 引入了连接的 ANSI 语法,我猜想(你必须问 Larry 了解全部原因!)这是为了让 Oracle 符合要求使用 ANSI 连接标准,许多其他 RDBMS 平台已采用该标准。