首页 > 学院 > 开发设计 > 正文

【Oracle数据库】集合运算

2019-11-08 20:56:17
字体:
来源:转载
供稿:网友

集合运算

集合运算是用来把两个或多个查询的结果集做并、交、差的集合的运算,包含集合运算的查询称为复合查询集合运算包括:联合(UNION)、完全联合(UNION ALL)、相交(INTERSECT)、相减(MINUS)相交和相减运算不是ANSI SQL-99兼容的,而是Oracle特有的所有的集合运算符与等号的优先级相同,如果SQL语句包含多个集合运算符并且没有圆括号明确指定另一个顺序,Oracle服务器将从左到右的顺序计算

联合运算

联合运算返回由任一查询结果集包含的行,并且去除重复行,并且按照查询结果集的第一列升序排序使用原则:多个被联合的查询语句所选择的列数和列的数据类型必须一致,列的名字不必相同如果多个查询结果都有NULL值,整个结果中只包含一个NULL值每个查询不能包含自己的ORDER BY子句,只能在联合之后使用ORDER BY子句
-- 查询编号为7839的员工当前工资、岗位及历史工、岗位SELECT sal,job FROM emp WHERE empno=7839UNIONSELECT sal,job FROM emp_jobhistory WHERE empno=7839

完全联合运算

完全联合运算返回由任一查询结果集包含的行,并且包含重复行,默认情况下不对结果集进行排序使用原则:多个被联合的查询语句所选择的列数和列的数据类型必须一致,列的名字不必相同如果多个查询结果都有NULL值,不被去掉每个查询不能包含自己的ORDER BY子句,只能在联合之后使用ORDER BY子句使用UNION ALL会比UNION的速度快,因为省去了去重和排序的时间
-- 查询编号为7839的员工当前工资、岗位及历史工、岗位SELECT sal,job FROM emp WHERE empno=7839UNION ALLSELECT sal,job FROM emp_jobhistory WHERE empno=7839

相交运算

相交运算返回多个查询结果集的公有行使用原则:多个查询语句所选择的列数和列的数据类型必须一致,列的名字不必相同相交运算不忽略空值
-- 查询哪些员工做过岗位调动SELECT empno FROM empINTERSECTSELECT empno FROM emp_jobhistory

相减运算

相减运算返回第一个查询中存在而第二个查询中不存在的行记录使用原则:多个查询语句所选择的列数和列的数据类型必须一致,列的名字不必相同相减运算不忽略空值
-- 查询哪些员工没做过岗位调动SELECT empno FROM empMINUSSELECT empno FROM emp_jobhistory
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表