SQL查询方法及系统技术领域
本发明涉及SQL领域,尤其涉及一种SQL查询方法及系统。
背景技术
随着信息化技术的发展,越来越多的信息系统进入百姓生活。它们给人们带来了
更多的便利。当然,伴随业务系统的使用,人们对它的要求也随之提高,于是最终用户便提
出更多的功能需求,我们的技术人员为了快速的响应用户的不断变化的需求,日以继夜的
不断完善这些系统。
其实,作为一个业务系统,无论其多么复杂亦或多么简单,都离不开对数据的“增、
删、改、查”四个动作。其中,系统在进行“增、删、改”三个动作时都离不开“查”这个动作。由
此可见查询动作在系统中是非常重要的,而且在实际工作中,大数的需求变更,都是用户马
上需要这样或那样的数据查询,导致我们的技术人员为此而快速响应(例如:快速开发、简
单测试、马上部署等)。长此以往我们的技术人员为不断变化的需求而疲于奔命,我们的系
统由于不能进行体系化测试也濒于崩溃。
发明内容
本发明旨在解决上面描述的问题。本发明的一个目的是提供一种SQL查询方法及
系统,可灵活定义查询,从语句根本进行结构化设计和灵活定义,提高查询的运行效率。
根据本发明的第一方面,一种SQL查询方法,包括:定义SQL查询语句,其中所述SQL
查询语句的结构为:Select显示字段FROM表名字where查询条件order by排序字段group
by分组字段;根据定义后的SQL查询语句,执行查询操作。
根据本发明的第二方面,一种SQL查询系统,包括:定义单元,用于定义SQL查询语
句,其中所述SQL查询语句的结构为:Select显示字段FROM表名字where查询条件order by
排序字段group by分组字段;查询单元,用于根据定义后的SQL查询语句,执行查询操作。
本发明提出的一种SQL查询方法及系统,通过对查询语句的基本语法进行分析总
结,之后进行结构化设计处理,从而实现可灵活定义查询,做到了从语句根本进行结构化设
计和灵活定义,其查询的运行效率较高。该方案支持任何数据库、开发语言及应用架构,可
以嵌入到任何业务系统中,使用该方法不仅能减少开发的代码量,而且能够提高业务系统
的快速交付能力和系统稳定性。
参照附图来阅读对于示例性实施例的以下描述,本发明的其他特性特征和优点将
变得清晰。
附图说明
并入到说明书中并且构成说明书的一部分的附图示出了本发明的实施例,并且与
描述一起用于解释本发明的原理。在这些附图中,类似的附图标记用于表示类似的要素。下
面描述中的附图是本发明的一些实施例,而不是全部实施例。对于本领域普通技术人员来
讲,在不付出创造性劳动的前提下,可以根据这些附图获得其他的附图。
图1示例性地示出了一种SQL查询方法的流程图;
图2示例性地示出了一种SQL查询系统的结构框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例
中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是
本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员
在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。需要
说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
一般而言,查询的基础就是SQL语句。那么作为查询来说SQL语句的标准语法(DB2;
ORACLE;MYSQL;INFORMIX;SQLSERVER等主流数据库都支持标准sql语法)是:Select表名字.
字段A,表名字.字段B......FROM表名字where查询条件order by字段名字group by字段名
字。
本发明的核心思路在于,基于以上语法我们发现对于一个标准查询语句是由:显
示字段,表名字,查询条件,排序字段,分组字段5部分组成。由此我们可以将标准的SQL查询
语句语法结构化成:
Select显示字段FROM表名字where查询条件order by排序字段group by分组字
段。
对于多表的联合查询(例如:内联;外联;左联;右联等),考虑到编码的简洁性,建
议使用数据库的VIEW视图来处理(视图是数据库本身的一种功能,合理利用视图既能充分
发挥数据库的性能,又能简化开发的工作量),将多个表根据业务逻辑创建成一个视图,然
后我们再对视图进行查询的结构化分析就非常简单了。
如图1所示,一种SQL查询方法,包括:
步骤101:定义SQL查询语句,其中所述SQL查询语句的结构为:Select显示字段
FROM表名字where查询条件order by排序字段group by分组字段;
其中,所述显示字段包括表名.文件名;即显示字段可以用tableA.fieldname,
tableA.fieldname的形式组织;当然,所述显示字段也可以包括依次排列且用逗号间隔开
的多个表名.文件名;
所述表名字包括至少一个表名和/或视图名;即表名字可以直接写表(或视图)的
名字(当然也支持多表,例如tableA,tableB);
所述查询条件、排序字段及分组字段包括表名.字段名;具体地,查询条件可以用
tableA.Field1=xx or tableA.Field2like‘a%’and tableA.Field3<?or
tableA.Field4=‘?’的形式表示。解释如下:
查询条件用表名+字段名的形式出现是为了支持多表联合查询的需求(虽然建议
了用视图来解决多表的问题,但是在设计时还是考虑到数据库的特殊情况)。
查询条件中有预设值的可以直接写上(如权限限制条件),如果需要运行查询时再
填写的条件,可以先用?号来代替,等到真正运行是再做替换即可。
查询条件之间的关系,用+和*来表示and和or;用序号来标识查询条件,如[1]+
[2]*([3]+[4])表示为:条件1and条件2or(条件3and条件4)。系统使用正则表达式对关系式
进行处理。
排序字段可以用tableA.field1,tableA.field2desc的形式,用于设定单个或多
个字段的排序。
分组字段:可以用tableA.field3,tableA.field4形式,分组查询多用于统计,在
一般的查询中用的较少。
通过以上设计,我们把一个结构化SQL语句的5大部分的规则进行了规划。
步骤103:根据定义后的SQL查询语句,执行查询操作。
优选地,在所述定义SQL查询语句步骤之前包括:
定义数据库结构,所述数据库结构包括用于管理创建查询语句的查询主表及用于
存储查询的结构化的信息,以及用于显示的字段别名的查询子表;所述查询主表及查询子
表(如表2)包括字段名、所述字段名的类型及所述字段名的作用;当然还可以包括其他的命
令字段,如表3。
所述查询主表,如表1,其包括用于表征查询创建的时间的字段名、用于表征查询
名称的字段名、以及用于表征查询隶属对象的字段名。
表1查询主表
表2查询子表
表3
进一步优选地,所述SQL查询方法在可视化界面上执行。面对这么复杂的可定制化
的查询,我们采用导航的形式,来引导用户进行查询定制工作。
本实施例SQL查询方法,通过对查询语句的基本语法进行分析总结,之后进行结构
化设计处理,从而实现可灵活定义查询,做到了从语句根本进行结构化设计和灵活定义,其
查询的运行效率较高。该方案支持任何数据库、开发语言及应用架构,可以嵌入到任何业务
系统中,使用该方法不仅能减少开发的代码量,而且能够提高业务系统的快速交付能力和
系统稳定性。
图2所示为图1所示方法对应的系统,图1的解释说明可以适用于本实施例,如图2
所示,一种SQL查询系统,包括:
定义单元,用于定义SQL查询语句,其中所述SQL查询语句的结构为:Select显示字
段FROM表名字where查询条件order by排序字段group by分组字段;
查询单元,用于根据定义后的SQL查询语句,执行查询操作。
优选的,所述的SQL查询系统还包括数据库,所述数据库结构包括用于管理创建查
询语句的查询主表及用于存储查询的结构化的信息,以及用于显示的字段别名的查询子
表;所述查询主表及查询子表包括字段名、所述字段名的类型及所述字段名的作用;
所述查询主表包括用于表征查询创建的时间的字段名、用于表征查询名称的字段
名、以及用于表征查询隶属对象的字段名。
所述的SQL查询系统还包括:可视化编辑器,用于与所述定义单元、查询单元及数
据库协同工作。
本实施例的SQL查询系统,对SQL查询语句进行结构化梳理和设计,减少了代码开
发量,提高了系统的快速交付能力;本查询系统是可嵌入的,只要在旧数据库中加入两个查
询管理表,再稍作改动即可实现可定义的查询;系统采用标准SQL语句,可以运行在任何种
类任何版本的数据库上。
具体效果总结如下:
1、技术人员或用户可以根据需求的变化,快速定义出需要的查询或统计。既满足
的用户快速交付的需求,又减少了反复程序发布的麻烦(很多大型用户,如银行,保险等机
构发布或部署程序需要走审批流程,而且发布程序必须要等到特定的系统发布时间窗口才
能发布),实现了系统的动态更新动态发布。
2、自定义查询系统,可以嵌入到其他系统中,不受嵌入系统的代码限制和数据库
限制,为被嵌入系统增值。
3、自定义查询系统,在满足不断变化的用户需求同时,免除了程序员的代码开发
的工作量,避免了BUG的产生。
4、对SQL语句的结构化处理思想,其实也可以应用到“增、删、改”三个动作的场景
中。这样就能够实现信息系统“增、删、改、查”的可定制化,由此不难想象,面对瞬息变化的
需求,信息系统的低成本快速交付将成为可能。
上面描述的内容可以单独地或者以各种方式组合起来实施,而这些变型方式都在
本发明的保护范围之内。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制。尽管
参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可
以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;
而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和
范围。