1、集合:
集合在數據庫領域表示記錄的集合,用來進行集合運算的運算符稱爲集合運算符
2、表的加法:union
product1:
product2:
加法運算:
select product_id, product_name
from product1
union
select product_id, product_name
from product2;
運算結果:
+------------+--------------+
| product_id | product_name |
+------------+--------------+
| 0001 | T恤衫 |
| 0002 | 打孔器 |
| 0003 | 運動T恤 |
| 0004 | 菜刀 |
| 0005 | 高壓鍋 |
| 0006 | 叉子 |
| 0007 | 擦菜板 |
| 0008 | 圓珠筆 |
| 0009 | 手套 |
| 0010 | 水壺 |
+------------+--------------+
注意:
- union等集合運算符通常都會除去重複的記錄。
- 作爲運算對象的記錄的列數必須相同
- 作爲運算對象的記錄中列的類型必須一致
- 通過union進行並集運算時可以使用任何形式的select語句,之前學過的where、group by、having等子句都可以使用。但order by只能在最後使用,且只能使用一次。
3、包含重複行的集合運算——all選項
select product_id, product_name
from product1
union all
select product_id, product_name
from product2;
運算結果:
+------------+--------------+
| product_id | product_name |
+------------+--------------+
| 0001 | T恤衫 |
| 0002 | 打孔器 |
| 0003 | 運動T恤 |
| 0004 | 菜刀 |
| 0005 | 高壓鍋 |
| 0006 | 叉子 |
| 0007 | 擦菜板 |
| 0008 | 圓珠筆 |
| 0001 | T恤衫 |
| 0002 | 打孔器 |
| 0003 | 運動T恤 |
| 0009 | 手套 |
| 0010 | 水壺 |
+------------+--------------+
4、選取表中公共部分:intersect(MySQL不支持)
select product_id, product_name
from product1
intersect
select product_id, product_name
from product2
運算結果:
+------------+--------------+
| product_id | product_name |
+------------+--------------+
| 0001 | T恤衫 |
| 0002 | 打孔器 |
| 0003 | 運動T恤 |
+------------+--------------+
5、記錄的減法:except(Oracle、MySQL不支持)
select product_id, product_name
from product1
intersect
select product_id, product_name
from product2
結果顯示爲product1中記錄減去product2表中記錄,剩餘的記錄。