软件开发顶尖高手的杀手锏SQL语句.docx
《软件开发顶尖高手的杀手锏SQL语句.docx》由会员分享,可在线阅读,更多相关《软件开发顶尖高手的杀手锏SQL语句.docx(11页珍藏版)》请在冰豆网上搜索。
软件开发顶尖高手的杀手锏SQL语句
软件开发顶尖高手的杀手锏SQL语句
马根峰
(广东联合电子服务股份有限公司,广州510300)
摘要在SQL(StructuredQueryLanguage)语言DML中,有四大语句堪称其精髓部分。
本人分别在“软件开发高手须掌握的4大SQL精髓语句
(一)”至“软件开发高手须掌握的4大SQL精髓语句(四)”4篇文章中进行了详细的阐述。
而在“软件开发高手须掌握的4大SQL精髓语句(综合篇)”文章中,则用以上4大SQL精髓语句结合起来解决一个非常复杂的实际问题,最终在CSDN博客上获得了不同寻常的11000多次访问量。
其实,还有一条SQL语句堪称软件开发顶尖高手的杀手锏。
不客气地说,大部分软件开发人员估计一辈子也不会有机会在工作中遇到这样的机会来使用它。
这就是“全外连接”(FullOuterJoin)。
本文通过工作中的一个实例,以“万能数据库查询分析器”的中文版本《DB查询分析器》为工具,来访问自己创建的数据库中的相关表,来展示整个问题的解决过程。
关键词万能数据库查询分析器;DB查询分析器;全外连接;FullOuterJoin
0引言
随着计算机在社会各领域应用的深入,软件开发人员不得不面临着或多或少的数据处理、数据库访问。
在SQL(StructuredQueryLanguage)语言DML中,有四大语句堪称其精髓部分,分别是CASEWHEN语句,LeftOuterJoin|LeftJoin|RightOuterJoin|RightJoin|InnerJoin语句,WITHAS语句,UNION、UNIONALL语句。
本人分别在“软件开发高手须掌握的4大SQL精髓语句
(一)”至“软件开发高手须掌握的4大SQL精髓语句(四)”4篇文章中进行了详细的阐述。
而在“软件开发高手须掌握的4大SQL精髓语句(综合篇)”文章中,则用以上4大SQL精髓语句结合起来解决一个非常复杂的实际问题,最终在CSDN博客上获得了不同寻常的11000多次访问量。
其实,还有一条SQL语句堪称软件开发顶尖高手的杀手锏。
不客气地说,大部分软件开发人员估计一辈子也不会有机会在工作中遇到这样的机会来使用它。
这就是“全外连接”(FullOuterJoin)。
全外连接(FullOuterJoin),即包含左、右两个表的全部行,不管另外一边的表中是否存在与它们匹配的行。
它在揭示事物内在存在的联系方面,有着无法替代的作用。
语法如下:
SELECT<要选择的字段>
FROMtable1
FULLOUTERJOINtable2
[On]
1本例所用工具简单说明
下面就以MSSQLServer数据库为例,以“万能数据库查询分析器”中文版本《DB查询分析器》作为客户端工具来举例说明“全外连接”(FullOuterJoin)的使用。
中国本土程序员马根峰推出的个人作品----万能数据库查询分析器,中文版本《DB查询分析器》、英文版本《DBQueryAnalyzer》。
它具有强大的功能、友好的操作界面、良好的操作性、跨越各种数据库平台乃至于EXCEL和文本文件。
你可以通过它查询ODBC数据源(包括世面上所有的数据库、TXT/CSV文件、EXCEL文件)的数据。
你可以同时执行多条DML语句乃至存贮过程,结果会以你设定的表格、文本框、文件来返回。
从数据库导出千万条数据时,效率与DBMS没有什么区别。
《DB查询分析器》在中关村在线()下载量超过9.5万次,位居整个数据库类排行榜中前20位。
在《程序员》2007第2期的“新产品&工具点评”部分,编辑“特别推荐”了“万能数据库查询分析器”发布。
本人还撰写了关于“万能数据库查询分析器”有关技术的63篇文章,发布在《电脑编程技巧与维护》、《软件》、《计算机时代》、《电脑编程技巧与维护》、XX文库、CSDN资源、和本人的四大博客上(CSDN博客、新浪博客、QQ空间和搜狐博客上)。
2要解决的问题
本人所在公司(以下简称专营公司)是经政府授权专门从事于高速公路的联网收费结算业务。
对高速公路联网收费的通行记录进行拆账,将整条收费记录的金额拆分给所经过的高速公路公司。
而另外一家公司替某些高速公路公司建立了一个数据平台,功能之一也是拆账。
最后,这家公司的项目验收时,高速公路公司发现数据平台与专营公司之间许多通行记录拆的账不同。
于是高速公路公司就让我司来查证此事。
本人经过多方面考虑,最终决定通过不同的粒度来分析两者之间的差异,粒度最高数据级别来统计分析路段间拆分的总体账目,关系模式:
路段间拆分(折分路段,收入路段,金额);而粒度最低的数据级别则来统计分析每一条通行记录间的拆分差别,关系模式:
流水拆分(流水号,收入路段,收入金额,平台流水号,平台收入路段,平台收入金额)。
对于细节级数据的生成,本人采用了“全外连接”(FullOuterJoin)。
3具体实例图示详解
《DB查询分析器》是通过ODBC数据源来访问各种数据库及EXCEL的,所以首先要建立要访问的数据库或EXCEL的ODBC数据源。
本文就不再讲述创建ODBC数据源的过程。
数据库中有关表说明:
dbo.SplitResultList平台流水拆分表
dbo.SplitResultList_stat平流水拆分综合表
dbo.TB_CASHACCURATESPLITRESULT1专营公司流水拆分表
dbo.tb_cashaccuratesplitresult1_stat专营公司流水拆分综合表
dbo.split_comp细节级两者拆分对比表
图1运行《DB查询分析器》,选择ODBC数据源登录
图2数据库中相关表
图3使用“对象浏览器”快速生成SQL来查看表SplitResultList
图4使用“对象浏览器”快速生成SQL来查看表TB_CASHACCURATESPLITRESULT1
图5使用“对象浏览器”快速生成SQL来查看表SplitResultList_stat
图6使用“对象浏览器”快速生成SQL来查看表tb_cashaccuratesplitresult1_stat
图7使用“全外连接”(FullOuterJoin)生成细节级两者拆分对比表split_comp
selecta.*,b.*intosplit_comp
--selectcount(*)
from
(
select*
fromtb_cashaccuratesplitresult1_stat
)asafullouterjoin
(
select*
fromSplitResultListmid_stat
)asb
ona.outlistno=b.outlistno_xyanda.incroadno=b.incroadno_xy
;
图8使用“对象浏览器”快速生成SQL来查看表split_comp
4本人撰写的关于“万能数据库查询分析器”的63篇技术文章
目前以下6篇文章发布几个国内计算机刊物上:
[1]马根峰DBQueryAnalyzer中断SQL语句的执行杭州:
《计算机时代》,2011年第12期
[2]马根峰DB查询分析器批量执行DML语句并返回更详细的信息北京:
《电脑编程技巧与维护》,2011年第24期
[3]马根峰DBQueryAnalyzer中的事务管理在DB2中的应用北京:
《电脑编程技巧与维护》,2011年第22期
[4]马根峰DB查询分析器中断SQL语句的执行天津:
《软件》,2011年第6期
[5]马根峰万能数据库查询分析器中的事务管理在Oracle中的应用上海:
《微型电脑应用》,2011年第11期
[6]马根峰新产品&工具点评特别推荐:
“万能数据库查询分析器”发布程序员,2007年2期
以下57篇文章发布在XX文库、CSDN资源、和本人的四大博客上:
《万能数据库查询分析器使用技巧之
(一)》直到《万能数据库查询分析器使用技巧之(十三)》共13篇
《The1sttipofDBQueryAnalyze》直到《The13thskillsofDBQueryAnalyzer》共13篇
《如何在客户端配置ODBC来访问远程DB2forWindows服务器》
《HowtoconfigureODBCDSNinClienttoaccessremoteDB2forWindows》
《如何在服务器上配置ODBC来访问本机DB2forWindows服务器》
《HowtoconfigureODBCDSNtoaccesslocalDB2forWindows》
《软件开发顶尖高手的杀手锏SQL语句》
《WhichSQLstatementisthetrumpcardtotheseniorsoftwaredeveloper》
《DB查询分析器批量执行DML语句并返回更详细的信息》
《用“万能数据库查询分析器”测试SQLite对4大SQL精髓语句的支持》
《用“DB查询分析器”的对象浏览器来展现数据库的数据字典》
《万能数据库查询分析器用户已基本涵盖当前所有数据库系统》
《TheDBMSthatDBQueryAnalyzerUsersoftenusecoverallkindsofDBMS》
《查询分析器应必须具备的功能-中断查询的执行》
《万能数据库查询分析器的EXE文件加壳技术》
《ExepackerpreventDBQueryAnalyzerfrombegingdebugged》
《自己开发的“万能数据库查询分析器”终于有了较大的成果》
《DBQueryAnalyzer中断SQL语句的执行》
《DB查询分析器批量执行DML语句并返回更详细的信息》
《DBQueryAnalyzer中的事务管理在DB2中的应用》
《DB查询分析器中断SQL语句的执行》
《万能数据库查询分析器中的事务管理在Oracle中的应用》
《特别推荐:
“万能数据库查询分析器”发布》
《软件开发高手须掌握的4大SQL精髓语句
(一)》
《软件开发高手须掌握的4大SQL精髓语句
(二)》
《软件开发高手须掌握的4大SQL精髓语句(三)》
《软件开发高手须掌握的4大SQL精髓语句(四)》
《软件开发高手须掌握的4大SQL精髓语句(综合篇)》
《巅峰之作----“万能数据库查询分析器”5.01发布》
《万能数据库查询分析器与EXCEL强强联合进行数据分析》
《DB查询分析器批量执行多条SQL语句并查看各自的执行时间》
《DB查询分析器访问EXCEL时,要在表名前后加上中括弧或双引号》
《ThetablenamemustbeenclosedindoublequotationmarksorsqarebracketwhileaccessingEXCELbyDBQueryAnalyzer》
备注:
如果您的计算机上安装有“万能数据库查询分析器”以前的版本,请先将旧版本Uninstall,然后再安装新版本,谢谢!