Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 1.
集合操作
学习 oracle 中集合操作的有关语句,掌握 union,union all,minus,interest 的使用 , 能够描述结合运算,并且能够将多个查询组合到一个查询中去,能够控制行返回的顺序。
包含集合运算的查询称为复合查询。见表格 1-1
表 1-1
Operator Returns content
UNION 由每个查询选择的所有不重复的行 并集不包含重复值
UNION ALL 由每个查询选择的所有的行,包括所有重复的行 完全并集包含重复值
INTERSECT 由每个查询选择的所有不重复的相交行 交集
MINUS 在第一个查询中,不在后面查询中,并且结果行不重复 差集
所有的集合运算与等号的优先级相同,如果 SQL 语句包含多个集合运算并且没有圆括号明确地指定另一个顺序, Oracle 服务器将以从左到右的顺序计算。你应该使用圆括号来明确地指定带另外的集合运算的 INTERSECT ( 相交 ) 运算查询中的赋值顺序。
Union all 效率一般比 union 高。
1.1.union 和 union all
UNION( 联合 ) 运算
UNION 运算返回所有由任一查询选择的行。用 UNION 运算从多表返回所有行,但除去任何重复的行。
原则 :
& 被选择的列数和列的数据类型必须是与所有用在查询中的 SELECT 语句一致。列的名字不必相同。 #1048707;
& 联合运算在所有被选择的列上进行。 #1048707;
& 在做重复检查的时候不忽略空 (NULL) 值。 #1048707;
&IN 运算有比 UNION 运算高的优先级。 #1048707;
& 在默认情况下,输出以 SELECT 子句的第一列的升序排序。 #1048707;
全联合 (UNION ALL) 运算
用全联合运算从多个查询中返回所有行。
原则
& 和联合不同,重复的行不被过滤,并且默认情况下输出不排序。 #1048707;
& 不能使用 DISTINCT 关键字。 #1048707;
使用:
Select statement union | union all Select statement;
1.2.intersect 交集操作
相交运算
用相交运算返回多个查询中所有的公共行。 无重复行。
原则
& 在查询中被 SELECT 语句选择的列数和数据类型必须与在查询中所使用的所有的 SELTCT 语句中的一样,但列的名字不必一样。 #1048707;
& 相交的表的倒序排序不改变结果。 #1048707;
& 相交不忽略空值。 #1048707;
使用:
Select statement intersect all Select statement;
1.3. minus 差集操作
相减运算
用相减运算返回由第一个查询返回的行,那些行不出现在第二个查询中 ( 第一个 SELECT 语句减第二个 SELECT 语句 ) 。
原则
& 在查询中被 SELECT 语句选择的列数和数据类型必须与在查询中所使用的所有的 SELTCT 语句中的一样,但列的名字不必一样。 #1048707;
& 对于 MINUS 运算,在 WHERE 子句中所有的列都必须在 SELECT 子句中。 #1048707;
集合运算的原则
• 在两个 SELECT 列表中的表达式必须在数目上和数据类型上相匹配
• 可以用圆括号改变执行的顺序
•ORDER BY 子句: – 只能出现在语句的最后 – 从第一个 SELECT 语句接收列名、别名,或者位置记号
注: • 除了 UNION ALL ,重复行自动被清除
• 在结果中的列名是第一个查询中出现的列名
• 除了 UNION ALL ,默认情况下按升序顺序输出
学习 oracle 中集合操作的有关语句,掌握 union,union all,minus,interest 的使用 , 能够描述结合运算,并且能够将多个查询组合到一个查询中去,能够控制行返回的顺序。
包含集合运算的查询称为复合查询。见表格 1-1
表 1-1
Operator Returns content
UNION 由每个查询选择的所有不重复的行 并集不包含重复值
UNION ALL 由每个查询选择的所有的行,包括所有重复的行 完全并集包含重复值
INTERSECT 由每个查询选择的所有不重复的相交行 交集
MINUS 在第一个查询中,不在后面查询中,并且结果行不重复 差集
所有的集合运算与等号的优先级相同,如果 SQL 语句包含多个集合运算并且没有圆括号明确地指定另一个顺序, Oracle 服务器将以从左到右的顺序计算。你应该使用圆括号来明确地指定带另外的集合运算的 INTERSECT ( 相交 ) 运算查询中的赋值顺序。
Union all 效率一般比 union 高。
1.1.union 和 union all
UNION( 联合 ) 运算
UNION 运算返回所有由任一查询选择的行。用 UNION 运算从多表返回所有行,但除去任何重复的行。
原则 :
& 被选择的列数和列的数据类型必须是与所有用在查询中的 SELECT 语句一致。列的名字不必相同。 #1048707;
& 联合运算在所有被选择的列上进行。 #1048707;
& 在做重复检查的时候不忽略空 (NULL) 值。 #1048707;
&IN 运算有比 UNION 运算高的优先级。 #1048707;
& 在默认情况下,输出以 SELECT 子句的第一列的升序排序。 #1048707;
全联合 (UNION ALL) 运算
用全联合运算从多个查询中返回所有行。
原则
& 和联合不同,重复的行不被过滤,并且默认情况下输出不排序。 #1048707;
& 不能使用 DISTINCT 关键字。 #1048707;
使用:
Select statement union | union all Select statement;
1.2.intersect 交集操作
相交运算
用相交运算返回多个查询中所有的公共行。 无重复行。
原则
& 在查询中被 SELECT 语句选择的列数和数据类型必须与在查询中所使用的所有的 SELTCT 语句中的一样,但列的名字不必一样。 #1048707;
& 相交的表的倒序排序不改变结果。 #1048707;
& 相交不忽略空值。 #1048707;
使用:
Select statement intersect all Select statement;
1.3. minus 差集操作
相减运算
用相减运算返回由第一个查询返回的行,那些行不出现在第二个查询中 ( 第一个 SELECT 语句减第二个 SELECT 语句 ) 。
原则
& 在查询中被 SELECT 语句选择的列数和数据类型必须与在查询中所使用的所有的 SELTCT 语句中的一样,但列的名字不必一样。 #1048707;
& 对于 MINUS 运算,在 WHERE 子句中所有的列都必须在 SELECT 子句中。 #1048707;
集合运算的原则
• 在两个 SELECT 列表中的表达式必须在数目上和数据类型上相匹配
• 可以用圆括号改变执行的顺序
•ORDER BY 子句: – 只能出现在语句的最后 – 从第一个 SELECT 语句接收列名、别名,或者位置记号
注: • 除了 UNION ALL ,重复行自动被清除
• 在结果中的列名是第一个查询中出现的列名
• 除了 UNION ALL ,默认情况下按升序顺序输出
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/293106/viewspace-580565/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/293106/viewspace-580565/