SQL中union运算操作的理解

  在SQL中,对于并运算,可以使用union关键字。

例如:

SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2

在学习过程中,我产生了一个疑问,如果两个表的属性名称不同会出现什么情况呢?

直接模拟了一个例子,构建代码如下:

create table employee
(empname     char(6),
numchildren    int
)

create table dependent
(depname     char(6),
age    int
)

insert into employee values('haohao',2);
insert into employee values('haohao',4);
insert into employee values('fgsd',5);
insert into employee values('hds',7);
insert into employee values('hauuo',9);
insert into employee values('hsao',4);
insert into employee values('hhao',5);


insert into dependent values('haohao',2);
insert into dependent values('hdgso',2);
insert into dependent values('hreo',2);
insert into dependent values('hjh',2);
insert into dependent values('haaao',2);

这两个表的属性只是数据类型相同,测试效果如下:

(select  empname,numchildren
from employee)
union
(select depname,age
from dependent
)

结果为:

"hjh ";2
"hhao ";5
"haohao";2
"hdgso ";2
"haohao";4
"fgsd ";5
"hds ";7
"hsao ";4
"haaao ";2
"hreo ";2
"hauuo ";9

可以看出,进行了合并,并且去除了重复。

后来在W3School中的SQL模块看到了对于并运算的定义:

  “请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。”

参考链接:http://www.w3school.com.cn/sql/sql_union.asp

2015-05-20

17:58:35

原文地址:https://www.cnblogs.com/JackKing-defier/p/4517813.html