SQL的inner join、left join、right join、full outer join、union、union all

时间:2023-03-08 21:28:34

主题: SQL的inner join、left join、right join、full outer join、union、union all的学习。


Table A和Table B表如下所示:

表A
id name
1000
1001
1002 苹果
1003 香蕉
表B
id name
1004
1005
1006 栗子
1007 西瓜

1. inner join(产生TableA和TableB的交集)

SELECT * FROM TableA INNER JOIN TableB ON TableA.name = TableB.name
TableA inner join TableB
id name id name
1000 1004
1001 1005

2. full [outter] join(产生TableA和TableB的并集)

SELECT * FROM TableA FULL OUTER JOIN TableB ON TableA.name = TableB.name 
TableA full outter join TableB
id name id name
1000 1004
1001 1005
1002 苹果 null null
1003 香蕉 null null
null null 1006 栗子
null null 1007 西瓜

对于没有匹配的记录,则会以null做为值。

3. left [outter] join(产生表A的完全集,而B表中匹配的则有值,没有匹配的则以null值取代)

SELECT * FROM TableA LEFT OUTER JOIN TableB ON TableA.name = TableB.name
TableA left outter join TableB
id name id name
1000 1004
1001 1005
1002 苹果 null null
1003 香蕉 null null

right [outer] join, 是以后面的表为基础,与left [outter] join 类似。

4. union 、 union all(UNION 操作符用于合并两个或多个 SELECT 语句的结果集)

SELECT name FROM TableA UNION SELECT name FROM TableB
union
name
苹果
香蕉
栗子
西瓜
SELECT name FROM TableA UNION ALL SELECT name FROM TableB
union all
name
苹果
香蕉
栗子
西瓜
SELECT * FROM TableA UNION SELECT * FROM TableB
 
id name
1000
1001
1002 苹果
1003 香蕉
1004
1005
1006 栗子
1007 西瓜