用“万能数据库查询分析器”对 SQLite 进行测评
更新时间:2023-12-21 20:59:01 阅读量: 教育文库 文档下载
- 数据库查询性能分析推荐度:
- 相关推荐
用“万能数据库查询分析器”测试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系统中。
在SQL(Structured Query Language)语言DML中,有四大语句堪称其精髓部分,分别是CASE WHEN语句,Left Outer Join | Left Join | Right Outer Join | Right Join | Inner Join语句,WITH AS语句,UNION、UNION ALL语句。
本人分别在“软件开发高手须掌握的4大SQL精髓语句(一)”至“软件开发高手须掌握的4大SQL精髓语句(四)” 、“软件开发高手须掌握的4大SQL精髓语句(综合篇) ”5篇博文中进行了详细的阐述。
本篇博文本人将用“万能数据库查询分析器”的中英文版本,来测试一下SQLite对上述4大精髓SQL的支持情况,以及用“万能数据库查询分析器”将SQLite查询的结果灵活地用拷贝、导出EXCEL中,来方便用户的办公处理。
1 本例所用工具简单说明
下面就以SQLite数据库为例,以“万能数据库查询分析器” 中文版本《DB 查询分析器》、英文版本《DB Query Analyzer》作为客户端工具来来演示4大SQL精髓语句的用法。
之所以选择“万能数据库查询分析器”作为客户端工具,主要是因为,一方面,“万能数据库查询分析器”具有强大的功能、友好的操作界面、良好的操作性、跨越数据库平台。在《程序员》2007第2期的“新产品&工具点评”部分,编辑“特别推荐”了“万能数据库查询分析器”发布。
另一方面,截止到目前,中文版本《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上运行,来作为客户端工具来来演示一下4大SQL精髓语句的使用。
运行《DB Query Analyzer》,连接上数据源 mgf_sqlite8 ,用户名与口令均为空,然后输入以下命令:
SELECT AREANO,(case when AREANO=4405 then '粤北区域'
when AREANO=4406 then '粤东区域' end) as Areaname, ROADNO,ROADNAME FROM TB_ROAD
WHERE AREANO IN (4405,4406) ;
图1 执行 Case When 语句 SELECT a.Areano,a.Areaname,b.roadno,b.roadname
FROM (SELECT * FROM tb_area WHERE AREANO IN (4402,4403,4405,4407) ) a LEFT JOIN (SELECT * FROM tb_road WHERE AREANO IN (4405,4406) ) b ON a.areano=b.areano ;
图2 执行 Left Join 语句
SELECT a.Areano,a.Areaname,b.roadno,b.roadname
FROM (SELECT * FROM tb_area WHERE AREANO IN (4405) ) a
RIGHT JOIN (SELECT * FROM tb_road WHERE AREANO IN (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_area WHERE AREANO IN (4405) ) a
INNER JOIN (SELECT * FROM tb_road WHERE AREANO IN (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 a left join tb_road b on a.areano=b.areano ;
SELECT areano,areaname FROM TB_AREA
WHERE AREANO IN (4402,4405,4406,4407) UNION
SELECT areano,areaname FROM TB_AREA
WHERE AREANO IN (4402,4405,4406,4407) ;
图5 执行 With as 语句,表明SQLite不支持 With as 语句
图6 执行 Union 语句 SELECT areano,areaname FROM TB_AREA
WHERE AREANO IN (4402,4405,4406,4407) UNION ALL
SELECT areano,areaname FROM TB_AREA
WHERE AREANO IN (4402,4405,4406,4407) ;
图7 执行 Union All 语句
图8 执行结果导出到 .csv文件中,用EXCEL打开
4 “万能数据库查询分析器” 英文版本《DB Query Analzyer》为例
下面就以SQLite数据库为例,以“万能数据库查询分析器”英文版本《DB Query Analyzer》在Windows 2000上运行,来作为客户端工具来来演示一下4大SQL精髓语句的使用。
运行《DB Query Analyzer》,连接上数据源 mgf_sqlite8 ,用户名与口令均为空,然后输入以下命令:
SELECT AREANO,(case when AREANO=4405 then '粤北区域'
when AREANO=4406 then '粤东区域' end) as Areaname, ROADNO,ROADNAME FROM TB_ROAD
WHERE AREANO IN (4405,4406) ;
图1 执行 Case When 语句 SELECT a.Areano,a.Areaname,b.roadno,b.roadname
FROM (SELECT * FROM tb_area WHERE AREANO IN (4402,4403,4405,4407) ) a LEFT JOIN (SELECT * FROM tb_road WHERE AREANO IN (4405,4406) ) b ON a.areano=b.areano ;
图2 执行 Left Join 语句
SELECT a.Areano,a.Areaname,b.roadno,b.roadname
FROM (SELECT * FROM tb_area WHERE AREANO IN (4405) ) a
RIGHT JOIN (SELECT * FROM tb_road WHERE AREANO IN (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_area WHERE AREANO IN (4405) ) a
INNER JOIN (SELECT * FROM tb_road WHERE AREANO IN (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 a left join tb_road b on a.areano=b.areano ;
SELECT areano,areaname FROM TB_AREA
WHERE AREANO IN (4402,4405,4406,4407) UNION
SELECT areano,areaname FROM TB_AREA
WHERE AREANO IN (4402,4405,4406,4407) ;
图5 执行 With as 语句,表明SQLite不支持 With as 语句
图6 执行 Union 语句 SELECT areano,areaname FROM TB_AREA
WHERE AREANO IN (4402,4405,4406,4407) UNION ALL
SELECT areano,areaname FROM TB_AREA
WHERE AREANO IN (4402,4405,4406,4407) ;
图7 执行 Union All 语句
图8 执行结果导出到 .csv文件中,用EXCEL打开
5 结论
SQLite数据库支持CASE WHEN语句、Left Outer Join | Left Join | Inner Join语句,,UNION、UNION ALL语句,不支持 Right Outer Join | Right Join和 WITH AS语句。 本人在执行过程中,发现由于SQLite数据ODBC驱动程序中的有些问题导致出“万能数据库查询分析器”一次执行多条SQL语句时,会出现第二条SQL语句执行出现问题。
这在以前测试过的ORACLE、SYBASE、DB2、INFORMIX、MS SQL SERVER、MS ACCESS、Paradox和EXCEL中是没有出现过的,所以强烈建议大家在一次选中一条SQL语句或者只输入一条SQL语句来执行。
软件开发高手须掌握的4大SQL精髓语句 系列:
软件开发高手须掌握的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
正在阅读:
用“万能数据库查询分析器”对 SQLite 进行测评12-21
十天高速AC-20沥青混合料配合比设计07-23
windows server 2012 网络服务考试试题及答案05-01
六年级数学下册期末考试卷各版本05-20
冬季施工安全作业措施06-09
高中新课程物理教研新突破08-22
2018-2019年初中科学华师大版《七年级下册》《第四章 土壤》《2 土壤与植物》综合测试试卷12-02
客服人员工作职责07-31
《税法》期末考试题 - 所得税(附答案)11-23
高三化学上册基础调研测试05-29
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 分析器
- 测评
- 万能
- 进行
- 数据库
- SQLite
- 查询
- 药物分析实验安排
- 第六届中国国际农产品交易会
- 六期末考试复习大全
- 中国政法大学法律硕士考研的一些科目学习方法解读
- 费用估算及控制要点
- 关键业绩指标(KPI)手册
- 《创业之星》学生端模拟经营操作手册 - 图文
- 包装工艺学课程设计 - 图文
- 高等教育学 选择题题库
- 2013生产与运作管理试题库试卷A答案(1)
- 医院常用英语
- 历年全国1卷文科数学立体几何
- 软实力
- 违纪学生处理办法
- 基于Delphi人力资源管理系统论文
- 谈谈电力企业如何加强成本管理
- 登陆战急先锋—两栖攻击舰
- 最新-2018高考语文专题复习名校全攻略练习 板块五 专题三 小说阅读之(一)—概括情节把握主题分析
- 描写义卖活动的800字作文-优秀word范文(2页)
- 政治制度史视野下的唐宋变革