软件开发高手须掌握的4大SQL精髓语句(四)

软件开发高手须掌握的4大SQL精髓语句(四)

马根峰

( 广东联合电子收费股份有限公司, 广州510300)

作者博客:

CSDN博客:http://blog.csdn.net/magenfeng

新浪博客:http://blog.sina.com.cn/magenfeng

QQ空间:http://user.qzone.qq.com/630414817/main#!

0引言

随着计算机在社会各领域应用的深入,软件开发人员不得不面临着或多或少的数据处理、数据库访问。

在SQL(Structured Query Language)语言DML中,有四大语句堪称其精髓部分。下面就讲述一下其中之一,UNIONUNION ALL语句的用法。

UNION 操作符用于合并两个或多个SELECT 语句的结果集。

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

UNION 语法如下:

SELECT column1, column2,…, columnX

FROM table_name1

UNION

SELECT column1, column2,…, columnX

FROM table_name2

UNION ALL语法如下:

SELECT column1, column2,…, columnX

FROM table_name1

UNION ALL

SELECT column1, column2,…, columnX

FROM table_name2

UNION与UNION ALL的区别

UNION操作符选取不同的值,即UNION是去了重的。如果允许重复的值,请使用UNION ALL。

1本例所用工具简单说明

下面就以DB2数据库为例,以“万能数据库查询分析器”中文版本《DB 查询分析器》、英文版本《DB Query Analyzer》作为客户端工具来来演示一下Inner Join和 Outer Join 语句的用法。

之所以选择“万能数据库查询分析器”作为客户端工具,主要是因为,一方面,“万能数据库查询分析器”具有强大的功能、友好的操作界面、良好的操作性、跨越数据库平台。在《程序员》2007第2期的“新产品&工具点评”部分,编辑“特别推荐”了“万能数据库查询分析器”发布。

另一方面,截止到目前,中文版本DB查询分析器》在国内最著名的软件下载网站“中关村在线”中下载量近9万次,位居整个数据库类排行谤中前20位。

2建立MYSQL数据库的ODBC数据源UNION_MYSQL

《DB 查询分析器》是通过ODBC数据源来访问各种数据库及EXCEL的,所以首先要建立要访问的数据库或EXCEL的ODBC数据源。如果您的主机上没有对应数据库的ODBC驱动程序,那您还要下载(通常该数据库厂家的官方网站上都提供有ODBC驱动程序下载)安装对应数据库的ODBC驱动程序,然后再建立相应的ODBC数据源。

3“万能数据库查询分析器” 中文版本《DB 查询分析器》为例

下面就以MYSQL数据库为例,以“万能数据库查询分析器”中文版本《DB 查询分析器》在Windows XP上运行,来作为客户端工具来来演示一下UNION、UNION ALL 语句的使用。

运行《DB Query Analyzer》,连接上数据源UnionAccess ,用户名与口令均为空(MS ACCESS数据库可不用密码和口令),然后输入以下命令:

需要注意的是,TB_area数据表本身就有重复记录

SELECT AREANO,AREANAME,AREASERVERIP

FROM `tb_area`

1Tb_area表内容

SELECT "AREANO", "AREANAME", "AREASERVERIP"

FROM "Tb_area2"


2 Tb_area2表内容

SELECT AREANO,AREANAME,AREASERVERIP

FROM `tb_area`

UNION

SELECT AREANO,AREANAME,AREASERVERIP

FROM `tb_area2`


3两个表 Union 执行结果

SELECT AREANO,AREANAME,AREASERVERIP

FROM `tb_area`

UNIONALL

SELECT AREANO,AREANAME,AREASERVERIP

FROM `tb_area2`


4 Union all执行结果

大家想一下,表tb_area本身就有重复记录,那如果是tb_area自身Union,结果会是怎么样???

SELECT "AREANO", "AREANAME", "AREASERVERIP"

FROM "Tb_area"

UNION

SELECT "AREANO", "AREANAME", "AREASERVERIP"

FROM "Tb_area"


5同一个表 Union 执行结果

4“万能数据库查询分析器”英文版本《DB Query Analzyer》为例

下面就以MS ACCESS数据库为例,以“万能数据库查询分析器”英文版本《DB Query Analyzer》在Windows 2000上运行,来作为客户端工具来来演示一下UNION、UNION ALL 语句的使用。

运行《DB Query Analyzer》,连接上数据源UnionAccess ,用户名与口令均为空(MS ACCESS数据库可不用密码和口令),然后输入以下命令:

需要注意的是,TB_area数据表本身就有重复记录

SELECT "AREANO", "AREANAME", "AREASERVERIP"

FROM "Tb_area"


1Tb_area表内容

SELECT "AREANO", "AREANAME", "AREASERVERIP"

FROM "Tb_area2"


2Tb_area2表内容

SELECT "AREANO", "AREANAME", "AREASERVERIP"

FROM "Tb_area"

UNION

SELECT "AREANO", "AREANAME", "AREASERVERIP"

FROM "Tb_area2"


3两个表 Union 执行结果

SELECT "AREANO", "AREANAME", "AREASERVERIP"

FROM "Tb_area"

UNIONALL

SELECT "AREANO", "AREANAME", "AREASERVERIP"

FROM "Tb_area2"


4 Union all执行结果

大家想一下,表tb_area本身就有重复记录,那如果是tb_area自身Union,结果会是怎么样???

SELECT "AREANO", "AREANAME", "AREASERVERIP"

FROM "Tb_area"

UNION

SELECT "AREANO", "AREANAME", "AREASERVERIP"

FROM "Tb_area"


5同一个表 Union 执行结果

由于篇幅原因,在OracleSybaseMS SQL ServerInformix数据库上的操作就不再赘述,有兴趣的朋友自己可以去操作一下。

软件开发高手须掌握的4SQL精髓语句系列:

软件开发高手须掌握的4大SQL精髓语句(四)

http://blog.csdn.net/magenfeng/article/details/8050612

软件开发高手须掌握的4大SQL精髓语句(三)

http://blog.csdn.net/magenfeng/article/details/8015093

软件开发高手须掌握的4大SQL精髓语句(二)

http://blog.csdn.net/magenfeng/article/details/8003558

软件开发高手须掌握的4大SQL精髓语句(一)

http://blog.csdn.net/magenfeng/article/details/7969385

《程序员》“特别推荐”了“万能数据库查询分析器”:

在《程序员》2007第2期的“新产品&工具点评”部分,编辑“特别推荐”了“万能数据库查询分析器”发布。

http://blog.csdn.net/magenfeng/article/details/7192368

DB查询分析器》使用技巧 系列:

《DB 查询分析器》使用技巧之(一)

http://blog.csdn.net/magenfeng/article/details/7189174

《DB 查询分析器》使用技巧之(二)

http://blog.csdn.net/magenfeng/article/details/7189176

《DB 查询分析器》使用技巧之(三)

http://blog.csdn.net/magenfeng/article/details/7192402

《DB 查询分析器》使用技巧之(四)

http://blog.csdn.net/magenfeng/article/details/7195059

《DB 查询分析器》使用技巧之(五)

http://blog.csdn.net/magenfeng/article/details/7196846

《DB 查询分析器》使用技巧之(六)

http://blog.csdn.net/magenfeng/article/details/7164432

《DB 查询分析器》使用技巧之(七)

http://blog.csdn.net/magenfeng/article/details/7197934

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值