目录
一、表的加减法
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-200002 | 打孔器 | 办公用品 | 500 | 320 | 2009-09-110003 | 运动T恤 | 衣服 | 4000 | 2800 |0009 | 手套 | 衣服 | 800 | 500 |0010 | 水壶 | 厨房用具 | 2000 | 1700 | 2009-09-20
-------------使用UNION(并集)对表进行加法运算
集合的并集运算通常会除去重复的数据。
-- 对Product和Product2进行并集处理
SELECT product_id, product_nameFROM Product
UNION
SELECT product_id, product_nameFROM Product2;
product_id | product_name
------------+--------------0004 | 菜刀0005 | 高压锅0008 | 圆珠笔0010 | 水壶0009 | 手套0006 | 叉子0001 | T恤衫0002 | 打孔器0007 | 擦菜板0001 | T恤衫0003 | 运动T恤
3、集合运算的注意事项
作为运算对象的记录中的列数必须相同
----- 列数不一致时会发生错误
SELECT product_id,product_nameFROM Product
UNION
SELECT product_id,product_name,sale_priceFROM Product2;
作为运算对象的记录中的类型必须一致
----- 列的类型不一致时会发生错误
SELECT product_id,sale_priceFROM Product
UNION
SELECT product_id,regist_dateFROM Product2;
可以使用任何SELECT语句,但ORDER BY子句只能在最后使用一次
SELECT product_id, product_nameFROM ProductWHERE product_type = '厨房用具'
UNION
SELECT product_id, product_nameFROM Product2WHERE product_type = '厨房用具'
ORDER BY product_id;
product_id | product_name
------------+--------------0004 | 菜刀0005 | 高压锅0006 | 叉子0007 | 擦菜板0010 | 水壶
4、包含重复行的集合运算——ALL运算
在集合运算符中使用ALL选项,可以保留重复行。
SELECT product_id, product_nameFROM Product
UNION ALL
SELECT product_id, product_nameFROM 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_nameFROM Product
INTERSECT
SELECT product_id, product_nameFROM Product2
ORDER BY product_id;
product_id | product_name
------------+--------------0002 | 打孔器0003 | 运动T恤
6、记录的减法——EXCEPT
---------------------------------------------------------------------------------------------------------------------------------