JOINS(INNER JOIN,LEFT OUTER JOIN,RIGHT OUTER JOIN等)和SET操作(INTERSECT,MINUS等)之间的主要区别是什么?
答案 0 :(得分:2)
首先,连接和设置操作是两种不同的鱼类。连接可以允许你在集合之间过滤行,这是真的,但它们远不止于此(你可以通过连接表并从所有表中选择列来制作更宽的行,而set操作适用于行集,是相同的宽度。)
我在精神上描绘事物的方式是连接是水平的(即,table1中的行与table2中的匹配行相邻,它们与表3中的匹配行等相邻),而set操作是垂直的(如行中)从第二组开始,在第一组的行下面)。当你选择使用set操作而不是连接时,高度依赖于这种情况。有点像决定是否使用锤子或螺丝刀将两块木头固定在一起 - 你会用锤子将木头拧入木头吗?
其次,Oracle总是(好吧,因为至少版本7!)加入了。联接是关系数据库如何工作的基础!
我猜你真正在问的是为什么Oracle会为连接引入ANSI语法,我猜想(你必须要求Larry充分理由!)这是为了让Oracle符合连接的ANSI标准,许多其他RDBMS平台已采用。