SQL的JOIN和UNION

来源:互联网 发布:网络监控app都有哪些 编辑:程序博客网 时间:2024/05/02 01:21

UNION

产生的两个记录集(字段要一样的)并在一起,成为一个新的记录集 。 

UNION和UNION ALL关键字都是将两个结果集合并为一个,但这两者从使用和效率上来说都有所不同。1、对重复结果的处理:UNION在进行表链接后会筛选掉重复的记录,Union All不会去除重复记录。2、对排序的处理:Union将会按照字段的顺序进行排序;UNION ALL只是简单的将两个结果合并后就返回。从效率上说,UNION ALL 要比UNION快很多,所以,如果可以确认合并的两个结果集中不包含重复数据且不需要排序时的话,那么就使用UNION ALL。

JOIN

两张表做交连后里面条件相同的部分记录产生一个记录集。


比如如下例子:

有SEC,SEC1两张表,内容如下

 


执行UNION后结果:

select t.* from sec t union select t1.* from sec1 t1

注意要保证两个select语句查询列数目相等


执行JOIN后结果:

(1)内连接

内部联接两个表中的记录,仅当至少有一个同属于两表的行符合联接条件时,内联接才返回行。我理解的是只要记录不符合ON条件,就不会显示在结果集内。 
select t.*,t1.* from sec t  join sec1 t1 on t.课程号=t1.课程1


(2)左连接

外部联接两个表中的记录,并包含左表中的全部记录。如果左表的某记录在右表中没有匹配记录,则在相关联的结果集中右表的所有选择列表列均为空值。理解为即使不符合ON条件,左表中的记录也全部显示出来,且结果集中该类记录的右表字段为空值。


(3)右连接

外部联接两个表中的记录,并包含右表中的全部记录。简单说就是和LEFT JOIN反过来。 

(4)全连接 FULL JOIN

完整外部联接返回左表和右表中的所有行。就是LEFT JOIN和RIGHT JOIN和合并,左右两表的数据都全部显示。


0 0