union all 操作符返回两个查询的结果集的并集。并且对于两个结果集的重复部分,不去重。
union 操作符返回两个查询的结果集的并集。并且对于两个结果集的重复部分,去重。
例子:
建表
create table text1(id number(5) not null,name varchar2(10) );
create table text2(id number(5) not null,name varchar2(10));
插入数据
insert into text1(id,name)
values(1,‘小明’);
insert into text1(id,name)
values(2,‘小红’);
insert into text1(id,name)
values(3,‘小刚’);
insert into text2(id,name)
values(3,‘小刚’);
insert into text2(id,name)
values(4,‘小李’);
insert into text2(id,name)
values(5,‘小黑’);
union all
select * from text1
union all
select * from text2
union
select * from text1
union
select * from text2
从截图中可以看到,用union all 把text1和text2的所有数据都查询出来了,也包括了重复的数据,而用union也是把text1和text2的所有数据都查询出来了,但是却把重复的数据
去掉了。
intersect
Intersect操作符返回两个查询的结果集的交集。
select * from text1
intersect
select * from text2
从截图中可以看到,用intersect 把text1和text2的重复的数据查询出来了,即把text1和text2的交集查询出来了
minus 操作符是把第一张表和第二张表的重复的数据删除,显示第一张表的数据
minus
select * from text1
minus
select * from text2
从截图上看,用minus操作符把text1和text2重复的数据删除掉后,只保留text1的数据
注意:在select列表中的列名和表达式在数量和数据类型上要相对应