集合运算

181 阅读1分钟

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

集合运算分为:

union(并集)

intersect(交集)

except(差集)

union

union 联集操作符用于合并两个或多个 SELECT 语句的结果集,而不返回任何重复的行。。

UNION 语法:

SELECT column_name(s) FROM table1

UNION

SELECT column_name(s) FROM table2;

UNION ALL 语法:

SELECT column_name(s) FROM table1

UNION ALL

SELECT column_name(s) FROM table2;

注意事项:

默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。

UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。

UNION中的每个SELECT语句必须具有相同的列数

这些列也必须具有相似的数据类型

每个SELECT语句中的列也必须以相同的顺序排列

每个SELECT语句必须有相同数目的列表达式

但是每个SELECT语句的长度不必相同

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

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

举例:

select c.name from c where credit != 64 and credit != 48;

(select c.cname from c where credit !=64 ) union (select c.cname from c where credit !=48 ); // 查询学分不是64或 48的课程名称

这里发现使用 union 对两个查询结果取并集和在一个查询结果中使用WHERE子句,然后使用OR连接两个查询条件的结果相同。

这并不意味着 union 没有必要,当需要对两个不同的表取并集的时候,union 就派上用场了。