用“万能数据库查询分析器”测试SQLite对4大SQL精髓语句的支持

news/2024/11/26 22:24:33/

用“万能数据库查询分析器”测试 SQLite 对4大SQL精髓语句的支持

                                                     马根峰

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

 

 

作者博客:

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

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

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

 

 

 

 

 

0       引言 

 

SQLite,是一款轻型的数据库,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,比如现在最常见的安卓Android系统中。

 

SQLStructured Query Language)语言DML中,有四大语句堪称其精髓部分,分别是CASE WHEN语句,Left Outer Join | Left Join | Right Outer Join |  Right Join | Inner Join语句WITH AS语句UNIONUNION ALL语句

 

本人分别在“软件开发高手须掌握的4SQL精髓语句(一)”至“软件开发高手须掌握的4SQL精髓语句(四)、“软件开发高手须掌握的4SQL精髓语句(综合篇)5篇博文中进行了详细的阐述。

 

本篇博文本人将用“万能数据库查询分析器”的中英文版本,来测评一下SQLite对上述4大精髓SQL的支持情况,以及用“万能数据库查询分析器”将SQLite查询的结果灵活地用拷贝、导出EXCEL中,来方便用户的办公处理。

  

 

 

 

 

1       本例所用工具简单说明

 

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

 

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

 

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

 

        百度上搜索“万能数据库查询分析器”结果超过300万条

 

本例所用SQLite版本: 3.37

       SQLite ODBC驱动程序版本:SQLite 3.5.7 ODBC driver

      DB查询分析器》版本: 2.02

      DB Query Analyzer》版本 2.02

 

 

 

 

 

  

2       建立SQLite数据库的 ODBC数据源mgf_sqlite8

 

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

 

  下图是用来创建ODBC数据源mgf_sqlite8

 

 

                

 

 

 

 

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

 

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

 

运行《DB Query Analyzer》,连接上数据源mgf_sqlite8,用户名与口令均为空,然后输入以下命令:

 

SELECT   AREANO,(casewhen AREANO=4405then '粤北区域' 

                      when AREANO=4406then '粤东区域' endas Areaname,

         ROADNO,ROADNAME

FROM TB_ROAD 

WHERE AREANOIN (4405,4406)

;

          1     执行 Case When语句

 

SELECT a.Areano,a.Areaname,b.roadno,b.roadname

FROM (SELECT *FROM tb_areaWHERE AREANOIN (4402,4403,4405,4407) ) a

    LEFTJOIN (SELECT *FROM tb_roadWHERE AREANOIN (4405,4406) )  b

 ON a.areano=b.areano

;

          2     执行Left Join 语句

 

SELECT a.Areano,a.Areaname,b.roadno,b.roadname

FROM (SELECT *FROM tb_areaWHERE AREANOIN (4405) ) a

    RIGHTJOIN (SELECT *FROM tb_roadWHERE AREANOIN (4405,4406) )  b

 ON a.areano=b.areano

;

           3  执行Right Join 语句,表明SQLite不支持Right Join语句                        

 

SELECT a.Areano,a.Areaname,b.roadno,b.roadname

FROM (SELECT *FROM tb_areaWHERE AREANOIN (4405) ) a

    INNERJOIN (SELECT *FROM tb_roadWHERE AREANOIN (4405,4406) )  b

 ON a.areano=b.areano

;

           4  执行Inner Join 语句                        

 

with v_area as

(

select *

from tb_area

where areano=4402

)

select *

from tb_area aleftjoin  tb_road b

 on a.areano=b.areano

;

          5  执行With as 语句,表明SQLite不支持 With as语句                                      

 

SELECT   areano,areaname

FROM TB_AREA 

WHERE AREANOIN (4402,4405,4406,4407)

UNION

SELECT   areano,areaname

FROM TB_AREA 

WHERE AREANOIN (4402,4405,4406,4407)

;

          6  执行Union语句                        

 

SELECT   areano,areaname

FROM TB_AREA 

WHERE AREANOIN (4402,4405,4406,4407)

UNIONALL

SELECT   areano,areaname

FROM TB_AREA 

WHERE AREANOIN (4402,4405,4406,4407)

;

 

          7  执行Union All 语句                        

 

 

          8  执行结果导出到 .csv文件中,用EXCEL打开                        

 

                   

 

 

 

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

 

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

 

运行《DB Query Analyzer》,连接上数据源mgf_sqlite8,用户名与口令均为空,然后输入以下命令:

 

 

SELECT   AREANO,(casewhen AREANO=4405then '粤北区域' 

                      when AREANO=4406then '粤东区域' endas Areaname,

         ROADNO,ROADNAME

FROM TB_ROAD 

WHERE AREANOIN (4405,4406)

;

          1     执行 Case When语句

 

SELECT a.Areano,a.Areaname,b.roadno,b.roadname

FROM (SELECT *FROM tb_areaWHERE AREANOIN (4402,4403,4405,4407) ) a

    LEFTJOIN (SELECT *FROM tb_roadWHERE AREANOIN (4405,4406) )  b

 ON a.areano=b.areano

;

          2     执行Left Join 语句

 

SELECT a.Areano,a.Areaname,b.roadno,b.roadname

FROM (SELECT *FROM tb_areaWHERE AREANOIN (4405) ) a

    RIGHTJOIN (SELECT *FROM tb_roadWHERE AREANOIN (4405,4406) )  b

 ON a.areano=b.areano

;

          3  执行Right Join 语句,表明SQLite不支持Right Join语句                        

 

SELECT a.Areano,a.Areaname,b.roadno,b.roadname

FROM (SELECT *FROM tb_areaWHERE AREANOIN (4405) ) a

    INNERJOIN (SELECT *FROM tb_roadWHERE AREANOIN (4405,4406) )  b

 ON a.areano=b.areano

;

          4  执行Inner Join 语句                        

 

with v_area as

(

select *

from tb_area

where areano=4402

)

select *

from tb_area aleftjoin  tb_road b

 on a.areano=b.areano

;

          5  执行With as 语句,表明SQLite不支持 With as语句                                      

 

SELECT   areano,areaname

FROM TB_AREA 

WHERE AREANOIN (4402,4405,4406,4407)

UNION

SELECT   areano,areaname

FROM TB_AREA 

WHERE AREANOIN (4402,4405,4406,4407)

;

          6  执行Union语句                        

 

SELECT   areano,areaname

FROM TB_AREA 

WHERE AREANOIN (4402,4405,4406,4407)

UNIONALL

SELECT   areano,areaname

FROM TB_AREA 

WHERE AREANOIN (4402,4405,4406,4407)

;

 

          7  执行Union All 语句                        

 

 

          8  执行结果导出到 .csv文件中,用EXCEL打开                        

 

           

 

 

 

5       结论

 

SQLite数据库支持CASE WHEN语句、Left Outer Join |  Left Join |  Inner Join语句,,UNIONUNION ALL语句,不支持 Right Outer Join | Right JoinWITH AS语句

 

  本人在执行过程中,发现由于SQLite数据ODBC驱动程序中的有些问题导致出“万能数据库查询分析器”一次执行多条SQL语句时,会出现第二条SQL语句执行出现问题。

 

这在以前测试过的ORACLESYBASEDB2INFORMIXMS SQL SERVERMS ACCESSParadoxEXCEL中是没有出现过的,所以强烈建议大家在一次选中一条SQL语句或者只输入一条SQL语句来执行

 

 

 

 

 

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

 

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

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

 

软件开发高手须掌握的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

 

 

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

 

 

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

 

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

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

 

 

 

“万能数据库查询分析器”所获得的成果

 

自己开发的“万能数据库查询分析器”终于有了较大的成果

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

 



转载于:https://www.cnblogs.com/wuyida/archive/2012/11/05/6300802.html


http://www.ppmy.cn/news/453458.html

相关文章

中关村GHOST XP SP3极速装机版2013V4.0(NTFS)

中关村GHOST XP SP3极速装机版2013V4.0(NTFS)文件名称:中关村GHOSTXPSP3极速装机版2011V4.0(NTFS).iso文件大小:653.80MB (685,561,856字节)CRC32:6E99F17EMD5: E7500BAEF2DF583F62F2378FCDB25ABCSHA-1:20F90B9ECA1ED61B238C1D4A4…

中关村GHOST XP SP3纯净装机自选CD版2011V3(NTFS)

《中关村GHOST XP SP3纯净装机自选CD版2011V3(NTFS)》经典小盘 文件名称:NTFS格式: ZGC_CD_2011V3.iso 文件大小: 700 MB CRC32: A72B06ED MD5: D02EC2FA4CD2F87B8F78E47202473D83 SHA-1: CD1E0330469F65EA24A08C9B7E637B6F4AC37222 xp系统下载纯净版 http://hmw048…

java能写驱动程序吗_写Java程序最容易犯的21种错误

来源: 中关村在线 作者: 若水 2008-05-14/00:56 1.Duplicated Code 代码重复几乎是最常见的异味了。他也是Refactoring的主要目标之一。代码重复往往来自于copy-and-paste的编程风格。与他相对应OAOO是一个好系统的重要标志。 2.Long method 它是传统结构…

从个人英雄到万能开发者,程序员3.0时代到来

数字化已进入“全要素”时代,数字化升级需要将整个技术底座打通,并且将整个组织进行转型。这一过程中,人才的权重成为了企业转型是否成功的关键。从程序员1.0时代的“个人英雄”到程序员3.0时代的“万能开发者”,程序员扮演的角色…

某音短视频评论采集翻页(移动安全篇)

本章测试一个作品的评论及翻页: 以及前面的抓x包方式,在专栏里也有很多,xposed抓包过sslping,通用版本等; https://codeooo.blog.csdn.net/category_11500477.html 翻页通过页码来控制: # -*- coding:…

首次打开别人的Android项目 可以删除的文件有哪些?

由于配置的不同 可以删除的文件有: 1、.idea文件夹 2、.gradle文件夹 3、所有的build文件夹 4、所有的.iml文件 5、local.properties文件。

安卓开发删除文件产生0KB文件

安卓开发删除文件产生0KB文件 安卓开发,删除文件夹产生0KB文件,原因是数据库没有删除该文件的记录,在每次file.delete();后加入该代码即可。 private void deleteFromMediaDatabase(final Context context, final String file) {final Stri…

android文件哪些人缓存,原来手机上这些文件是可以删除的!怪不得手机越用越卡,涨知识了...

国产手机用了一段时间后都会出现卡顿的情况,时间越久,卡顿的情况就越严重。而有些人只会卸载一些软件或者清理垃圾来改善卡顿现象。但其实andriod中, 除了日常的清理垃圾,我们还可以将一些没用的文件清理掉。 那问题来了&#xff…