SQL中JOIN和UNION区别、⽤法及⽰例
1.JOIN和UNION区别
join 是两张表做交连后⾥⾯条件相同的部分记录产⽣⼀个记录集,
union是产⽣的两个记录集(字段要⼀样的)并在⼀起,成为⼀个新的记录集。
JOIN⽤于按照ON条件联接两个表,主要有四种:
INNER JOIN:内部联接两个表中的记录,仅当⾄少有⼀个同属于两表的⾏符合联接条件时,内联接才返回⾏。我理解的是只要记录不符合ON条件,就不会显⽰在结果集内。
LEFT JOIN / LEFT OUTER JOIN:外部联接两个表中的记录,并包含左表中的全部记录。如果左表的某记录在右表中没有匹配记录,则在相关联的结果集中右表的所有选择列表列均为空值。理解为即使不符合ON条件,左表中的记录也全部显⽰出来,且结果集中该类记录的右表字段为空值。
RIGHT JOIN / RIGHT OUTER JOIN:外部联接两个表中的记录,并包含右表中的全部记录。简单说就是和LEFT JOIN反过来。
FULL JOIN / FULL OUTER JOIN:完整外部联接返回左表和右表中的所有⾏。就是LEFT JOIN和RIGHT JOIN和合并,左右两表的数据都全部显⽰。
JOIN的基本语法:
Select table1.* FROM table1 JOIN table2 ON table1.id=table2.id
sql写法
内连接inner join:
SELECT msp.name, party.name
FROM msp JOIN party ON party=code
SELECT msp.name, party.name
FROM msp inner JOIN party ON party=code
左连接left join :
connect和join的区别
SELECT msp.name, party.name
FROM msp LEFT JOIN party ON party=code
右连接right join :
SELECT msp.name, party.name
FROM msp RIGHT JOIN party ON msp.de
全连接(full join):
SELECT msp.name, party.name
FROM msp FULL JOIN party ON msp.de
UNION运算符
将两个或更多查询的结果集组合为单个结果集,该结果集包含联合查询中的所有查询的全部⾏。UNION的结果集列名与UNION运算符中第⼀个Select语句的结果集的列名相同。另⼀个Select语句的结果集列名将被忽略。
其中两种不同的⽤法是UNION和UNION ALL,区别在于UNION从结果集中删除重复的⾏。如果使⽤UNION ALL 将包含所有⾏并且将不删除重复的⾏。
UNION和UNION ALL的区别:
union 检查重复
union all 不做检查
⽐如 select 'a' union select 'a' 输出就是⼀⾏ a
⽐如 select 'a' union all select 'a' 输出就是两⾏ a
2. 通过下⾯的例⼦,可以清晰的看出和理解2者的区别
实例1 典型的⼆表连接演⽰
假定有两个表Table1和Table2,其包含的列和数据分别如表1.1和表1.2所⽰。
表1.1 Table1数据库表
ColumnA ColumnB ColumnC
X1Y1Z1
X2Y2Z2
X3Y3Z3
表1.2 Table2数据库表
ColumnA ColumnD ColumnE
X1D1E1
X2D2E2
X3D3E3
Table1和Table2表共有的列为ColumnA,如果通过ColumnA列的值连接Table1和Table2两个表,即连接条件为
Table1.ColumnA=Table2.ColumnA,此时得到的连接结果如表1.3所⽰。
表1.3 连接Table1和Table2表
ColumnA ColumnB ColumnC ColumnD ColumnE
X1Y1Z1D1E1
X2Y2Z2D2E2
X3Y3Z3D3E3
上述连接过程的实现代码可表⽰如下:SELECT * FROM Table1 JOIN Table2 ON Table1.lumnA
实例2 典型的⼆表记录的UNION运算
假定有两个表Table3和Table4,其包含的列和数据分别如表2.1和表2.2所⽰。
表2.1 Table3数据库表
ColumnA ColumnB ColumnC
X1Y1Z1
X2Y2Z2
X3Y3Z3
表2.2 Table4数据库表、
ColumnA ColumnD ColumnE
X4Y4Z4
X5Y5Z5
X6Y6Z6
Table3表和Table4表具有相同的列结构,列数也要相同,列名可以不同,以第⼀个表的列名为新表的列名,因此可以使⽤UNION运算符连接两个表的记录集,得到的连接结果如表2.3所⽰。
表2.3 使⽤UNION连接Table3表和Table4表的记录
ColumnA ColumnB ColumnC
X1Y1Z1
X2Y2Z2
X3Y3Z3
X4Y4Z4
X5Y5Z5
X6Y6Z6
上述连接过程的实现代码可表⽰如下:SELECT * FROM Table3 UNION SELECT *FROM Table4
对⽐实例1和实例2,不难发现⼆者的区别。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。