oracle知识整理(1) union和union all的区别,left join和right join的区别(各种join的区别)

union和union all的区别

UNION和UNION ALL关键字都是将两个结果集合并为一个,但这两者从使用和效率上来说都有所不同。

  • UNION相当于真正的关联,会进行连接+排序+去重复
  • UNION ALL相当于简单把结果连接起来,速度快
  1. UNION在进行表链接后将会按照字段的顺序进行排序,会筛选掉重复的记录,Union All不会去除重复记录,也不存在排序。

  2. 所以从效率上说,UNION ALL 要比UNION快很多,所以,如果可以确认合并的两个结果集中不包含重复数据且不需要排序时的话,那么就使用UNION ALL。

为了删除重复项,必须对结果集进行排序,这可能会影响UNION的性能,具体取决于要排序的数据量以及各种RDBMS参数的设置(对于具有WORKAREA_SIZE_POLICY = AUTO的Oracle PGA_AGGREGATE_TARGET或 如果WORKAREA_SIZE_POLICY = MANUAL,则为SORT_AREA_SIZE和SOR_AREA_RETAINED_SIZE。

各种join

powered by zhengkai.blog.csdn.net

  • left join(左联接) :返回包括左表中的所有记录和右表中联结字段相等的记录
  • right join(右联接):返回包括右表中的所有记录和左表中联结字段相等的记录
  • inner join(等值连接) :只返回两个表中联结字段相等的行
  • A left join B = B right join A
  • CROSS JOIN : 笛卡尔乘积(所有可能的行对)
  • LEFT OUTER JOIN(左外连接) : A表满足条件的行,和B表的所有行
  • RIGHT OUTER JOIN(右外连接) : B表满足条件的行,和A表的所有行
  • FULL OUTER JOIN(全连接) : AB表所有的行

sql join表

在这里插入图片描述

发布了293 篇原创文章 · 获赞 401 · 访问量 111万+

猜你喜欢

转载自blog.csdn.net/moshowgame/article/details/103808897