转:http://blog.csdn.net/gan690416372/article/details/5012397
SQL语句中的三个关键字:MINUS(减去),INTERSECT(交集)和UNION ALL(并集);
关于集合的概念,中学都应该学过,就不多说了.这三个关键字主要是对数据库的查询结果进行操作,正如其中文含义一样:两个查询,MINUS是从第一个查询结果减去第二个查询结果,如果有相交部分就减去相交部分;否则和第一个查询结果没有区别. INTERSECT是两个查询结果的交集,UNION ALL是两个查询的并集;
虽然同样的功能可以用简单SQL语句来实现,但是性能差别非常大,有人做过实验:made_order共23万笔记录,charge_detail共17万笔记录:
SELECT order_id FROM made_order
MINUS
SELECT order_id FROM charge_detail
耗时:1.14 sec
SELECT a.order_id FROM made_order a
WHERE a.order_id NOT exists (
SELECT order_id
FROM charge_detail
WHERE order_id = a.order_id
)
耗时:18.19 sec
性能相差15.956倍!因此在遇到这种问题的时候,还是用MINUS,INTERSECT和UNION ALL来解决问题,否则面对业务中随处可见的上百万数据量的查询,数据库服务器还不被咱玩的死翘翘?
PS:应用两个集合的相减,相交和相加时,是有严格要求的:1.两个集合的字段必须明确(用*就不行,报错);2.字段类型和顺序相同(名称可以不同),如:集合1的字段1是NUMBER,字段2是VARCHAR,那么集合2的字段1必须也是NUMBER,字段2必须是VARCHAR;3.不能排序,如果要对结果排序,可以在集合运算后,外面再套一个查询,然后排序,如前面的例子可以改成:
SELECT * FROM
(SELECT order_id FROM made_order
MINUS
SELECT order_id FROM charge_detail)
ORDER BY ORDER_ID ASC
相关推荐
在数据库查询语言SQL中,`UNION`、`MINUS`和`INTERSECT`是三种用于合并或对比多个查询结果集的关键字,它们在数据处理和数据分析中扮演着重要的角色。下面,我们将深入探讨这三种操作符的概念、用法以及它们之间的...
20. SQL语句(20) MINUS:返回第一个SELECT语句中存在,但不在第二个SELECT语句中的行。 21. SQL语句(21) Concatenate:用于连接两个或更多字符串,如`CONCAT(column1, column2) AS combined`。 22. SQL语句(22) ...
在上面的例子中,MINUS 操作符将第一个 SELECT 语句的结果与第二个 SELECT 语句的结果比较,只保留第一个结果集中存在,而第二个结果集中不存在的数据。 五、ORDER BY 排序 在使用集合操作符时,可以使用 ORDER BY...
Oracle 集合操作是指在数据库中对数据进行集合运算的操作,包括 union、union all、intersect 和 minus 等操作。这些操作可以对数据进行合并、交叉、差异等处理,提高数据处理效率。 union 操作 Union 操作是将两...
16. INTERSECT和MINUS:用于返回两个查询结果的交集和差集。 17. 字符串操作函数:如Concatenate(连接)、Substring(子字符串提取)、TRIM(去除空格)等,用于处理字符串数据。 18. 数据定义语言(DDL):包括...
1. 只能合并两个表:Intersect运算符只能合并两个表,如果我们需要合并三个或更多表,需要使用其他方法。 2. 不能合并不同的数据库:Intersect运算符只能合并同一个数据库中的表,不能合并不同的数据库中的表。 ...
联合(Union,Union All,Minus,Intersect) 4、SQL语句反向分析 无论多么复杂的语句,都能分析出来(包括SQL各子句中嵌套的SQL语句) 5、数据库视图定义和重建 6、支持将SQL查询语句,替换为插入(Insert into)和更新...
C_minus语言的词法分析器是编译原理中的一个重要组成部分,它的主要任务是对源代码进行初步解析,识别出程序中的各种符号,将其转化为词法单元(Token),为后续的语法分析和语义分析阶段提供基础。词法分析器通常会...
UNION和UNION ALL用于合并两个或多个SELECT语句的结果集,并消除重复的行。UNION ALL会包含所有的结果,包括重复项。 举例:合并两个表中销售数据大于200的记录: ``` SELECT store_name, sales FROM store_info ...
编译原理实验 C_minus语言词法分析器的设计 1、该个词法分析器要求至少能够识别以下几类单词: a. 关键字:else if int return void while共6个,所有的关键字都是保留字,并且必须是小写; b. 标识符:识别与...
- 假设有一个名为 `Store_Information` 的表,其中包含三个列:`store_name`, `sales`, 和 `date`。 - 如果想要获取所有商店的名字,可以执行以下查询: ```sql SELECT store_name FROM Store_Information; ``` -...
a. 关键字:else if int return void while共6个,所有的关键字都是保留字,并且必须是小写; b. 标识符:识别与C语言词法规定相一致的标识符,通过下列正则表达式定义:ID = letter (letter | digit)*; c. 常数...
集合操作包括`UNION`(并集), `INTERSECT`(交集) 和 `MINUS`(差集)。例如: ```sql SELECT * FROM Student WHERE sname = 'wang' UNION SELECT * FROM Student WHERE sage > 20; ``` 12. **插入数据**: - ...
**用途**:`INTERSECT` 运算符返回两个或更多 SELECT 语句的结果集的交集。 **基本语法**: ```sql SELECT column1, column2, ... FROM table1 INTERSECT SELECT column1, column2, ... FROM table2; ``` #### SQL...
支持几乎所有类型的数据库, 包括小型(桌面)数据库:Fox ...对于Oracle 支持Union All,Minus,Intersect) <br>支持将SQL查询语句,替换为插入(Insert into)和更新(Update)语句 附属工具内嵌入Delphi IDE
在Oracle数据库中,`MINUS`、`IN` 和 `EXISTS` 是三种不同的SQL查询操作符,它们各自用于特定的数据处理场景。了解并熟练掌握这些操作符对于优化查询性能和编写复杂的SQL语句至关重要。 1. **MINUS 操作符** `MINUS...
支持几乎所有类型的数据库, 包括小型(桌面)数据库:Fox DBF...对于Oracle 支持Union All,Minus,Intersect) <br>支持将SQL查询语句,替换为插入(Insert into)和更新(Update)语句 附属工具内嵌入Delphi IDE
SQL查询中的逻辑运算符和谓词包括AND、OR、NOT进行逻辑判断,IN、NOT IN用于包含或排除特定值,EXISTS检查子查询是否存在结果,INTERSECT、UNION和MINUS分别用于集合的交集、并集和差集。 以图书管理关系数据模型为...