SQL集合操作

SQL集合操作

SQL集合操作用于组合两个或多个SQL SELECT语句。

集合操作的类型

  • 联合 - Union
  • 联合所有 - UnionAll
  • 交集 - Intersect
  • 差集 - Minus

联合 - Union

SQL Union操作用于组合两个或多个SQL SELECT查询的结果。
union操作中,在应用UNION操作的两个表中,所有数据类型和列的数量必须相同。
union操作从结果集中删除重复的行。

语法

SELECT column_name FROM table1  
UNION  
SELECT column_name FROM table2;

假设有两个表,第一个表:First 的结构和数据如下 -

ID NAME
1 Jack
2 Harry
3 Jackson

第二个表:Second 的结构和数据如下 -

ID NAME
3 Jackson
4 Stephan
5 David

Union的SQL查询如下:

SELECT * FROM First   
UNION  
SELECT * FROM Second;

执行查询后如下所示:

ID NAME
1 Jack
2 Harry
3 Jackson
4 Stephan
5 David

2. 全联合 - Union All

Union All操作等于Union操作。它返回集合但不删除重复和排序数据。

语法:

SELECT column_name FROM table1  
UNION ALL  
SELECT column_name FROM table2;

示例: 使用上面的第一个和第二个表。

Union All查询语句如下:

SELECT * FROM First   
UNION ALL  
SELECT * FROM Second;

执行查询后结果如下所示:

ID NAME
1 Jack
2 Harry
3 Jackson
3 Jackson
4 Stephan
5 David

3. 相交

它用于组合两个SELECT语句。 相交(Intersect)操作从两个SELECT语句返回公共行。
在“相交”操作中,数据类型和列的数量必须相同。
它没有重复项,默认情况下按升序排列数据。

语法

SELECT column_name FROM table1  
INTERSECT  
SELECT column_name FROM table2;

示例:

使用上面的First表和Second表。

相交查询语句是:

SELECT * FROM First   
INTERSECT  
SELECT * FROM Second;

执行上面查询语句,得到以下结果:

ID    NAME
----------------------------------
3    Jackson

4. 差集

它结合了两个SELECT语句的结果。 差集运算符用于显示第一个查询中存在但第二个查询中不存在的行。
它没有重复项,默认情况下按升序排列数据。

语法:

SELECT column_name FROM table1  
MINUS  
SELECT column_name FROM table2;

示例

使用上面的First表和Second表。

差积查询语句是:

SELECT * FROM First   
MINUS  
SELECT * FROM Second;

执行上面查询语句,得到以下结果:

ID    NAME
------------------------------------
1    Jack
2    Harry

目录

索引和B+树