SQL笔记#集合运算

发布于:2025-02-26 ⋅ 阅读:(16) ⋅ 点赞:(0)

目录

一、表的加减法

1、什么是集合运算

2、表的加法——UNION

3、集合运算的注意事项

4、包含重复行的集合运算——ALL运算

5、选取表中公共部分——INTERSECT

6、记录的减法——EXCEPT

二、联结(以列为单位对表进行联结)

1、什么是联结(JOIN)

2、内联结——INSERT JOIN

3、外联结——OUTER JOIN

4、3张以上的表的联结

5、交叉联结——CROSS JION

一、表的加减法

1、什么是集合运算

        集合在数据库领域表示记录的集合;对满足同一规则的记录进行四则运算就是集合运算。

2、表的加法——UNION

-------------创建表Product2(商品2)

        商品2的结构与之前使用的Product(商品)表相同,只是表名变化;并在其中插入记录,其中0001-0003与原先的记录一致,而0009-0010的记录是原先没有的。

 product_id | product_name | product_type | sale_price | purchase_price | regist_date
------------+--------------+--------------+------------+----------------+-------------
 0001       | T恤衫        | 衣服         |       1000 |            500 | 2009-09-20
 0002       | 打孔器       | 办公用品     |        500 |            320 | 2009-09-11
 0003       | 运动T恤      | 衣服         |       4000 |           2800 |
 0009       | 手套         | 衣服         |        800 |            500 |
 0010       | 水壶         | 厨房用具     |       2000 |           1700 | 2009-09-20

-------------使用UNION(并集)对表进行加法运算

        集合的并集运算通常会除去重复的数据。

-- 对Product和Product2进行并集处理
SELECT product_id, product_name
  FROM Product
UNION
SELECT product_id, product_name
  FROM Product2;
 product_id | product_name
------------+--------------
 0004       | 菜刀
 0005       | 高压锅
 0008       | 圆珠笔
 0010       | 水壶
 0009       | 手套
 0006       | 叉子
 0001       | T恤衫
 0002       | 打孔器
 0007       | 擦菜板
 0001       | T恤衫
 0003       | 运动T恤

3、集合运算的注意事项

\blacksquare 作为运算对象的记录中的列数必须相同

----- 列数不一致时会发生错误

SELECT product_id,product_name
  FROM Product
UNION
SELECT product_id,product_name,sale_price
  FROM Product2;

\blacksquare 作为运算对象的记录中的类型必须一致

----- 列的类型不一致时会发生错误

SELECT product_id,sale_price
  FROM Product
UNION
SELECT product_id,regist_date
  FROM Product2;

\blacksquare 可以使用任何SELECT语句,但ORDER BY子句只能在最后使用一次

SELECT product_id, product_name
  FROM Product
 WHERE product_type = '厨房用具'
UNION
SELECT product_id, product_name
  FROM Product2
 WHERE product_type = '厨房用具'
ORDER BY product_id;
 product_id | product_name
------------+--------------
 0004       | 菜刀
 0005       | 高压锅
 0006       | 叉子
 0007       | 擦菜板
 0010       | 水壶

4、包含重复行的集合运算——ALL运算

        在集合运算符中使用ALL选项,可以保留重复行。

SELECT product_id, product_name
  FROM Product
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       | 水壶

5、选取表中公共部分——INTERSECT

        选取两个记录集合中公共部分的INTERSECT(交集)。

SELECT product_id, product_name
  FROM Product
INTERSECT
SELECT product_id, product_name
  FROM Product2
ORDER BY product_id;
 product_id | product_name
------------+--------------
 0002       | 打孔器
 0003       | 运动T恤

6、记录的减法——EXCEPT

---------------------------------------------------------------------------------------------------------------------------------