SQL學習筆記——集合運算、表的加減運算

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表中記錄,剩餘的記錄。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章