lz0-007 读书笔记15

本文详细介绍了SQL中的集合运算,包括联合(UNION)、全联合(UNION ALL)、相交(INTERSECT)和相减(MINUS)四种运算。讲解了每种运算的特点、原则及使用场景,并提供了具体的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Using SET Operators

1.集合运算
•集合运算组合两个或多个部分查询的结果到一个结果中
•包含集合运算的查询称为复合查询(compound queries)
•集合运算:
---------------------------------------------------------
 UNION  由每个查询选择的所有不同的行
 UNION ALL 由每个查询选择的所有的行,包括所有重复的行
 INTERSECT 由两个查询选择的所有不同的行
 MINUS  由第一个查询选择的所有不同的行
---------------------------------------------------------
•INTERSECT(相交)和MINUS(相减)运算不是ANSI SQL-99兼容的,他们是Oracle私有的
•所有的集合运算与等号的优先级相同

2.联合运算
•联合(UNION) 运算从两个查询返回除去重复值后的结果
•原则
  两个查询的SELECT子句中列数和列的数据类型必须一致,列名不必相同。
  联合运算在所有被选择的列上进行。
  在做重复检查的时候不忽略空(NULL)值。
  IN运算有比UNION运算高的优先级。
  在默认情况下,输出以SELECT子句的第一列的升序排序

3.全联合运算
•全联合(UNION ALL) 运算从两个查询返回包括所有重复值的结果
•原则
  和联合不同,重复的行不被过滤,并且默认情况下输出不排序。
  不能使用DISTINCT关键字
  除了上面的两点,UNION ALL的原则与UNION相同。

4.相交运算
•相交(INTERSECT) 运算返回多个查询中所有相同的行
•原则
  两个查询的SELECT子句中列数和列的数据类型必须一致,列名不必相同
  相交的表的倒序排序不改变结果
  相交不忽略空值

5.相减运算
•相减(MINUS) 运算返回在第一个查询中而不在第二个查询中的行
•原则
  两个查询的SELECT子句中列数和列的数据类型必须一致,列名不必相同
  对于MINUS运算,在查询的WHERE子句中出现的列都必须在相应的SELECT子句出现中。


6.集合运算的原则
•在两个SELECT列表中的表达式必须在数目上和数据类型上相匹配
•可以用圆括号改变执行的顺序
•ORDER BY子句:
–只能出现在语句的最后(即只能对集合操作的结果进行排序)
–从第一个SELECT语句接收列名、别名,或者位置记号

7.Oracle 服务器和集合运算
•除了UNION ALL,重复行自动被清除
•在集合操作的结果集中,列名是第一个查询中出现的列名
•除了UNION ALL,默认情况下按升序顺序输出

8.匹配 SELECT 语句
•两个查询的SELECT列表中的表达式必须在数量和类型上匹配,因而可以使用虚拟列和类型转换函数
•示例1:
 SELECT department_id,TO_NUMBER(null) location, hire_date FROM employees
 UNION
 SELECT department_id, location_id, TO_DATE(null)     FROM departments;
•示例2:
 SELECT employee_id, job_id,salary FROM employees
 UNION
 SELECT employee_id, job_id,0      FROM job_history;

9.控制输出行的顺序
•在默认情况下,输出以第一列的升序排序,你可以用ORDER BY子句来改变顺序
•ORDER BY 子句在复合查询中只能用一次,而且必须放在最后面
 order by 子句放在最后面,表示 order by 子句是对整个复合操作的结果集进行排序

转载于:https://www.cnblogs.com/zqf620/archive/2007/01/20/625554.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值