目录
一、表的加减法
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、集合运算的注意事项
作为运算对象的记录中的列数必须相同
----- 列数不一致时会发生错误
SELECT product_id,product_name
FROM Product
UNION
SELECT product_id,product_name,sale_price
FROM Product2;
作为运算对象的记录中的类型必须一致
----- 列的类型不一致时会发生错误
SELECT product_id,sale_price
FROM Product
UNION
SELECT product_id,regist_date
FROM Product2;
可以使用任何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
---------------------------------------------------------------------------------------------------------------------------------