Oracle中 union 和 union all 的区别

如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者union all关键字。

union(或称为联合)的作用是将多个结果合并在一起显示出来。

union和union all的区别是,union会自动压缩多个结果集合中的重复结果,而union all则将所有的结果全部显示出来,不管是不是重复。

Union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;

Union All:对两个结果集进行并集操作,包括重复行,不进行排序;

Intersect:对两个结果集进行交集操作,不包括重复行,同时进行默认规则的排序;

Minus:对两个结果集进行差操作,不包括重复行,同时进行默认规则的排序。

可以在最后一个结果集中指定Order by子句改变排序方式。

例如:

select employee_id,job_id from employees

union

select employee_id,job_id from job_history

selectemployee_id,job_id from employees

union

selectemployee_id,job_id from job_history

以上将两个表的结果联合在一起。

这两个例子会将两个

select

语句的结果中的重复值进行压缩,

也就是结果的数据并不是两条结果的条数的和。如果希望即使重复的结果显示出来可以使用

union all,

例如:

2.在oracle的scott用户中有表emp  代码 1. select * from emp where deptno >= 20 2. union all   3. select * from emp where deptno <=30 select * from emp where deptno>= 20 union all  select * from emp where deptno<= 30

这里的结果就有很多重复值了。

有关union和union all关键字需要注意的问题是:union 和 union all都可以将多个结果集合并,而不仅仅是两个,你可以将多个结果集串起来。

时间: 2024-12-24 17:55:57

Oracle中 union 和 union all 的区别的相关文章

oracle中varchar,varchar2,nvarchar,nvarchar2的区别

--varchar,varchar2 联系: 1.varchar/varchar2用于存储可变长度的字符串 比如varchar(20),存入字符串'abc',则数据库中该字段只占3个字节,而不是20个字节 2.size 的最大值是 4000,而最小值是 1,其值表示字节数,比如 varchar(20)表示最大可以存放20个字节的内容 区别: 1.varchar2把所有字符都占两字节处理(一般情况下),varchar只对汉字和全角等字符占两字节,数字,英文字符等都是一个字节: 2.VARCHAR2

Oracle中Null与空字符串&#39; &#39;的区别

含义解释: 问:什么是NULL? 答:在我们不知道具体有什么数据的时候,也即未知,可以用NULL,我们称它为空,ORACLE中,含有空值的表列长度为零. ORACLE允许任何一种数据类型的字段为空,除了以下两种情况: 1.主键字段(primary key), 2.定义时已经加了NOT NULL限制条件的字段 说明: 1.等价于没有任何值.是未知数. 2.NULL与0.空字符串.空格都不同. 3.对空值做加.减.乘.除等运算操作,结果仍为空. 4.NULL的处理使用NVL函数. 5.比较时使用关键

oracle中Blob和Clob类型的区别

一.oracle中Blob和Clob类型的区别BLOB和CLOB都是大字段类型,BLOB是按二进制来存储的,而CLOB是可以直接存储文字的.其实两个是可以互换的的,或者可以直接用LOB字段代替这两个.但是为了更好的管理ORACLE数据库,通常像图片.文件.音乐等信息就用BLOB字段来存储,先将文件转为二进制再存储进去.而像文章或者是较长的文字,就用CLOB存储,这样对以后的查询更新存储等操作都提供很大的方便. BLOB全称为二进制大型对象(Binary Large Object).它用于存储数据

oracle中int类型和number类型区别

INT类型是NUMBER类型的子类型.下面简要说明:(1)NUMBER(P,S)该数据类型用于定义数字类型的数据,其中P表示数字的总位数(最大字节个数),而S则表示小数点后面的位数.假设定义SAL列为NUMBER(6,2)则整数最大位数为4位(6-2=4),而小数最大位数为2位.(2)INT类型当定义整数类型时,可以直接使用NUMBER的子类型INT,顾名思义:INT用于整型数据. oracle本来就没有int类型,为了与别的数据库兼容,新增了int类型作为number类型的子集.int类型只能

ORACLE 中rownum和row_number()的使用区别(可指定取sql结果集的第几个数据)

这篇文章主要介绍了oracle中rownum和row_number()的使用方法以及区别和联系,十分的详细,有需要的小伙伴可以参考下. row_number()over(partition by col1 order by col2)表示根据col1分组,在分组内部根据col2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的). 与rownum的区别在于:使用rownum进行排序的时候是先对结果集加入伪劣rownum然后再进行排序,而row_number()在包含排序从句后

Oracle中varchar,varchar2,nvarchar,nvarchar2的区别及其它数据类型描述

--varchar,varchar2 联系: 1.varchar/varchar2用于存储可变长度的字符串 比如varchar(20),存入字符串'abc',则数据库中该字段只占3个字节,而不是20个字节 2.size 的最大值是 4000,而最小值是 1,其值表示字节数,比如 varchar(20)表示最大可以存放20个字节的内容 区别: 1.varchar2把所有字符都占两字节处理(一般情况下),varchar只对汉字和全角等字符占两字节,数字,英文字符等都是一个字节: 2.VARCHAR2

Oracle中sys和system用户的区别

1.数据库的启动需要以SYSDBA/SYSOPER身份登录. 2.如果在同一主机上使用IPC连接到数据库使用操作系统授权,登录任何一个用户都可以拥有as sysdba和as sysoper. 3.sys和system用户的区别 SYS用户具有DBA权限,并具有SYS模式.只能通过SYSDBA登录数据库,是Oracle数据库中权限最高的帐号.sys用户具有“SYSDBA”和“SYSOPER”权限,登陆em时也只能用这两个身份,不能用normal.而system登录em时只能用normal模式登录.

Oracle中执行存储过程call和exec区别

在sqlplus中这两种方法都可以使用:exec pro_name(参数1..);call pro_name(参数1..); 区别: 1. 但是exec是sqlplus命令,只能在sqlplus中使用:call为SQL命令,没有限制.2. 存储过程没有参数时,exec可以直接跟过程名(可以省略()),但call则必须带上(). Sql代码SQL> --创建过程插入数据SQL> create or replace procedure pro1 is2 begin --执行部分3 insert i

Oracle 中count(1) 和count(*) 的区别

count详解: count(*)将返回表格中所有存在的行的总数包括值为null的行,然而count(列名)将返回表格中除去null以外的所有行的总数(有默认值的列也会被计入). distinct 列名,得到的结果将是除去值为null和重复数据后的结果 举例演示如下: SQL> create table test 2 ( 3 ename varchar2(10), 4 sal number(4) 5 ); 表已创建. SQL> insert into test values('fxe1',90

Oracle中select 1和select *的区别

转自:https://www.linuxidc.com/Linux/2010-05/26202.htm 创建myt表并插入数据,如下: create table myt(name varchar2,create_time date) insert into myt values('john',to_date(sysdate,'DD-MON-YY')); insert into myt values('tom',to_date(sysdate,'DD-MON-YY')); insert into