SQL基础教程(第2版)第7章 集合运算:7-1 表的加减法

Posted 绍耕

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL基础教程(第2版)第7章 集合运算:7-1 表的加减法相关的知识,希望对你有一定的参考价值。

第7章 集合运算:7-1 表的加减法


集合运算就是对满足同一规则的记录进行的加减等四则运算。
使用UNION(并集)、 INTERSECT(交集)、 EXCEPT(差集)等集合运算符来进行集合运算。
集合运算符可以去除重复行。
如果希望集合运算符保留重复行,就需要使用ALL选项。


■ 什么是集合运算

集合在数学领域表示“(各种各样的)事物的总和”,在数据库领域表示记录的集合。具体来说,表、视图和查询的执行结果都是记录的集合。

截至目前,我们已经学习了从表中读取数据以及插入数据的方法。所谓集合运算,就是对满足同一规则的记录进行的加减等四则运算。通过集合运算,可以得到两张表中记录的集合或者公共记录的集合,又或者其中某张表中的记录的集合。像这样用来进行集合运算的运算符称为集合运算符。

■ 表的加法——UNION

首先为大家介绍的集合运算符是进行记录加法运算的 UNION(并集)。 

在学习具体的使用方法之前,我们首先添加一张表,该表的结构与之前我们使用的 Product(商品)表相同,只是表名变为 Product2

代码清单7-1 创建表Product2(商品2)

CREATE TABLE Product2
(product_id      CHAR(4)      NOT NULL,
 product_name    VARCHAR(100) NOT NULL,
 product_type    VARCHAR(32)  NOT NULL,
 sale_price      INTEGER      ,
 purchase_price  INTEGER      ,
 regist_date      DATE         ,
 PRIMARY KEY (product_id));
List7_1.sql

商品编号(product_id)为“0001~0003”的商品与之前Product表中的商品相同;

而编号为“0009”的“手套”和“0010”的“水壶”是 Product 表中没有的商品。

--mysql
START TRANSACTION;

INSERT INTO Product2 VALUES (\'0001\', \'T恤\', \'衣服\', 1000, 500, \'2009-09-20\');
INSERT INTO Product2 VALUES (\'0002\', \'打孔器\', \'办公用品\', 500, 320, \'2009-09-11\');
INSERT INTO Product2 VALUES (\'0003\', \'运动T恤\', \'衣服\', 4000, 2800, NULL);
INSERT INTO Product2 VALUES (\'0009\', \'手套\', \'衣服\', 800, 500, NULL);
INSERT INTO Product2 VALUES (\'0010\', \'水壶\', \'厨房用具\', 2000, 1700, \'2009-09-20\');

COMMIT;
View Code --MySQL

■ 集合运算的注意事项

注意事项① ——作为运算对象的记录的列数必须相同

注意事项② ——作为运算对象的记录中列的类型必须一致

注意事项③ ——可以使用任何SELECT语句,但ORDER BY子句只能在最后使用一次
通过 UNION 进行并集运算时可以使用任何形式的 SELECT 语句,之前学过的 WHERE、 GROUP BY、 HAVING 等子句都可以使用。
但是ORDER BY 只能在最后使用一次(代码清单 7-4)。

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;
View Code

■ 包含重复行的集合运算——ALL选项

■ 选取表中公共部分——INTERSECT

■ 记录的减法——EXCEPT 

最后要给大家介绍的集合运算符就是进行减法运算的 EXCEPT(差集),其语法也与 UNION 相同(代码清单 7-7)。

 

 

以上是关于SQL基础教程(第2版)第7章 集合运算:7-1 表的加减法的主要内容,如果未能解决你的问题,请参考以下文章

SQL基础教程(第2版)第2章 查询基础:2-2 算数运算符和比较运算符

SQL基础教程(第2版)第3章 聚合与排序:练习题

SQL基础教程(第2版)第6章 函数谓词CASE表达式:6-2 谓词

SQL基础教程(第2版)第5章 复杂查询:5-3 关联子查询

2-7-集合运算(A-B)∪(B-A)-线性表-第2章-《数据结构》课本源码-严蔚敏吴伟民版

SQL基础教程(第2版)第4章 数据更新:4-2 数据的删除(DELETE)