黑马程序员技术交流社区

标题: 关于数据库关键字的问题 [打印本页]

作者: huima    时间: 2013-4-13 16:27
标题: 关于数据库关键字的问题
本帖最后由 huima 于 2013-4-14 17:33 编辑

请问数据库中的的Union、Union All、Intersect、Minus在数据库中的作用是什么,格式怎么写,求举例详细解答???
作者: 李易烜    时间: 2013-4-13 17:09
这里先简单的给定这四个集合运算定义,并以一段代码实例,例子今后有时间再附上。

  select *

  from emp

  where sal < 4000

  union

  select *

  from emp

  where  sal > 2000;

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

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

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

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

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





注意:

1,Union可以对字段名不同但数据类型相同的结果集进行合并;

2,如果字段名不同的结果集进行Union,那么对此字段的Order by子句将失效。
作者: Sword    时间: 2013-4-14 01:02
Union,对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;

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

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

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

可以在最后一个结果集中指定Order by子句改变排序方式
差集解释一下:

//创建表1

create table test1
(
name varchar(10),
sex varchar(10),
age int
);

insert into test1 values('luxin','female',25);
insert into test1 values('tom','female',26);
insert into test1 values('mary1','male',27);
insert into test1 values('money','male',27);
insert into test1 values('tony','male',28);
insert into test1 values('tony1','male',19);






//创建表2
create table test2
(
name varchar(10),
sex varchar(10),
age int
);



insert into test2 values('luxin','female',25);
insert into test2 values('tom','female',26);
insert into test2 values('mary2','male',27);
insert into test2 values('money','male',27);
insert into test2 values('tony','male',28);
insert into test2 values('tony2','male',19);



-------------------------------------------




select * from test1 minus select * from test2;

结果:

NAME       SEX               AGE
---------- ---------- ----------
mary1      male               27
tony1      male               19



-----------------------------------------------------------

select * from test2 minus select * from test1;

结果:

NAME       SEX               AGE
---------- ---------- ----------
mary2      male               27
tony2      male               19



结论:Minus返回的总是左边表中的数据,它返回的是差集。

用表1-表2中的数据,如果相同,则去掉,否则返回表1中的数据。
作者: 黄玉昆    时间: 2013-4-14 14:16
如果问题未解决,请继续追问,如果没有问题了,请将帖子分类 改为“已解决”,谢谢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2