结构化查询语言生成系统及方法

文档序号:6612498阅读:312来源:国知局

专利名称::结构化查询语言生成系统及方法
技术领域
:本发明是有关于一种计算机语言生成系统及方法,特别涉及一种针对结构化查询语言的生成系统及其方法。
背景技术
:近年来,随着网路技术的蓬勃发展,数据库的相关应用如雨后春笋般冒出,如电子商务及网络论坛等,然而,当数据库随着时间而逐步累积大量资料,以及数据关联性日益复杂时,想要查询所需的数据也势必使用到更为复杂的数据库查询语言。因此,如何更方便地生成复杂的数据库查询语言,以降低对SQL语句撰写经验的依赖程度,便成为各家厂商无不全力研究的议题。一般而言,数据库查询语言依不同的数据库种类如阶层式数据库、网路式数据库、关联式数据库及分散式数据库...等而有所不同,上述的数据库种类中又以关系型数据库如DBASE、ACCESS、MSSQL及MYSQL最为广泛,所述关系型数据库是使用一种称为结构化查询语言(StructuredQueryLanguage,SQL)的数据库查询语言来进行查询。然而,SQL语句是以命令方式而非以可视化界面产生,所以在撰写上需依赖SQL语句撰写经验而有其不便性,且容易在不知内建函数的情况下,因而无法使用效率较佳的函数来生成能够达成相同查询目的的SQL语句,产生依赖SQL语句撰写经验的限制,以及执行效能不佳的问题。因此,目前有厂商发表通过图形化界面来才喿作数据库,并且能够生成对应操作的SQL语句的技术,进而达到辅助使用者生成SQL语句的目的。上述技术虽然可辅助使用者生成SQL语句,但却无法针对不同的数据库生成合适的SQL语句,且无法产生能够达成相同查询目的的多种SQL语句并进行效能测试,用以提供使用者选择效率较佳的SQL语句,因此,上4述技术同样不足以解决依赖SQL语句撰写经验的限制,以及执行效能不佳的问题。综上所述,可知先前技术中长期以来一直存在依赖SQL语句撰写经验的限制,以及执行效能不佳的问题,因此实有必要提出改进的技术手段,来解决此一问题。
发明内容有鉴于先前技术存在依赖SQL语句撰写经验的限制,以及执行效能不佳的问题,本发明公开了一种结构化查询语言生成系统及方法。本发明所公开的结构化查询语言生成系统,包含语句储存模块、函数储存模块、配置侦测模块、输入模块及语句生成模块。其中,语句储存模块,用以储存等效语句;函数储存;f莫块,用以储存数据库所内建的SQL函数;配置侦测模块,用以侦测所选择的数据库,并将侦测结果记录于配置信息;输入模块,根据配置信息及SQL函数产生输入窗口,用以提供输入选择条件;语句生成模块,用以接收选择条件,并依据等效语句生成SQL语句。另外,所述系统还包含效能测试模块,用以通过效能函数计算并显示SQL语句的执行效能。至于本发明的结构化查询语言生成方法,包含下列步骤建立等效语句;记录数据库所内建的SQL函数;侦测所选择的数据库,并将侦测结果记录于配置信息;根据配置信息及SQL函数产生输入窗口,用以提供输入选择条件;接收选择条件,并依据等效语句生成SQL语句。另外,所述方法还包含通过效能函数计算并显示SQL语句的执行效能的步骤。本发明所公开的系统与方法如上,与先前技术之间的差异在于本发明通过图形化界面提供使用者生成SQL语句,并对所生成的SQL语句进行效能测试,藉以辅助使用者选择效能良好的SQL语句。通过上述技术手段,本发明可以达成提升SQL语句撰写便利性及数据库查询效率的功效。图1为本发明结构化查询语言生成系统的方块图。图2为本发明结构化查询语言生成方法的流程图。图3为应用本发明生成查询指令的输入窗口示意图。具体实施例方式以下将配合附图及实施例来详细说明本发明的实施方式,藉此对本发明如何应用技术手段来解决技术问题并达成技术功效的实现过程能充分理解并据以实施。首先,在说明本发明所提出的结构化查询语言生成系统及方法之前,先对自行定义的等效语句作说明,在本发明中所提及的等效语句是指能够产生相同执行结果的不同SQL语句,举例来说若数据库内有一个名称为table的数据表,该数据表内有两个字段分别为namel及name2,当要显示此数据表内所有数据时,可使用SQL语句为"selectnamel,name2fromtable"来达成,除此之外,亦可使用SQL语句为"select*fromtable"来达到同样的目的,所述两个SQL语句即为等效语句。请参阅图l,图1为本发明结构化查询语言生成系统的方块图,其中包含语句储存模块101、函数储存模块102、配置侦测模块103、输入模块104、语句生成模块105及效能测试模块106。其中,语句储存模块101用以储存等效语句,所述等效语句如同前面的说明,是指能够产生相同执行结果的不同SQL语句,在此不再赘述。函数储存才莫块102用以储存数据库所内建的SQL函数,所述SQL函数是指数据库所内建的SQL函数,包含数学函数、字符串函数、格式化函数、时间函数、操作函数及系统函数,由于不同的数据库如MSSQL或MySQL所内建的SQL函数亦有所差异,所以可储存不同数据库的SQL函数供使用者选择。配置侦测模块103用以侦测所选择的数据库,并将侦测结果记录于配置信息,此配置信息所记录的信息包含数据库名称、数据库中的数据表名称及数据表的字段名称,所述侦测结果是指配置侦测模块103通过已知的技术手段(即数据库所内建的函数)侦测使用者所选择的数据库,并得到数据库中的信息,举例来说通过数据库所内建的函数如mysql—list—dbs来取得数据库名称,接着将得到的数据库名称以参数方式通过函数如mysql—list_tables及mysql—tablename来取得数据库中的数据表名称,并再以数据表名称作为参数传递至内建的函数如mysql—list_fields及mysql_field_name用以取得数据表的字段名称,接着将所得到的数据库名称、数据库中的数据表名称及数据表的字段名称记录于配置信息中。经由上述例子可得知,所述配置信息是通过配置侦测模块103侦测所选择的数据库后所产生,而例子中所提函数的实际用法为已知技术,故在此不再作赘述。上述举例是以MySQL数据库及其内建的函数为例,然在实施上并不以此为限。输入模块104根据配置信息及函数储存模块102中的SQL函数产生输入窗口,用以提供使用者输入选择条件,举例来说SQL指令(例如select)、配置信息中的信息(例如数据表名称)、SQL函数(例如"SUM()")及操作符(例如"=,,)皆称为选择条件。另外,此输入窗口除了以程式的窗口界面显示外,亦可通过网页的方式呈现。语句生成模块105用以接收使用者输入的选择条件,并依据等效语句生成SQL语句(稍后将配合图3以实施例的方式进行说明)。效能测试模块106通过效能函数计算并显示SQL语句的执行效能,所述效能函数是数据库所内建用来测试效能的函数(例如MySQL数据库的效能函数为"benchmark()")。如图2所示,图2为本发明结构化查询语言生成方法的流程图,包含下列步骤建立等效语句(步骤201);记录数据库所内建的SQL函数(步骤202);侦测所选择的数据库,并将侦测结果记录于配置信息(步骤203);根据配置信息及SQL函数产生输入窗口,用以提供输入选择条件(步骤204);接收选择条件,并依据等效语句生成SQL语句(步骤205);通过效能函数计算并显示SQL语句的执行效能(步骤206)。通过上述的系统及方法即可对不同的数据库生成合适的SQL语句,且7更以此合适的SQL语句为基础来产生能够达成相同查询目的的多种SQL语句并进行效能测试,提供使用者选择效率较佳的SQL语句,达成解决依赖SQL语句撰写经验的限制,以及执行效能不彰的问题。以下配合图3以实施例方式进行如下说明,请参阅图3,图3为应用本发明生成查询指令的输入窗口示意图,包含输入窗口301、数据库选择组件310、函数选择组件311、函数说明块312、选择块一321、选择块二322、选择块三323、语句显示块330、确定组件341及清除组件342,所述输入窗口301内所含的组件并不以此为限。承上所述,当使用者欲生成查询数据库的SQL语句时,可通过一个数据库登入界面(图中未示)来登入数据库,当登入成功后通过配置侦测模块103侦测登入的数据库,并将侦测结果(例如侦测到数据库的名称为"DB",且数据库内有两个名称为"user"及"user—a"的数据表,其中名称为"user"的数据表内有"id"及"name"两个字段;而名称为"user—a"的数据表内则有"id"及"action"两个字段)记录于配置信息中,由于侦测数据库的信息为已知技术,故在此不多作赘述。接着,输入模块104根据已记录的配置信息及储存于函数储存模块102的SQL函数产生如图3所示的输入窗口301,由于不同数据库内建的SQL函数也不尽相同,因此输入窗口301提供数据库选择组件310让使用者选择数据库(例如MySQL),并于函数选择组件311中列出对应数据库(例如MySQL)的SQL函数供使用者选择,且在函数说明块312中显示函数的用法及说明。接下来,使用者可通过选择块一321来输入欲查询的字段(例如字段名称为"id"、"name"及"action");通过选择块二322输入欲查询的数据表(例如数据表名称为"user"及"user—a'1或全选);通过选捧块三323输入操作数及操作符(例如第一操作数为"user.id"、操作符为"="及第二操作数为"user_a.id"),虽然图3中是以勾选组件或下拉式选单来进行输入,然在实现上并未作如此的限定,举例来说亦可通过文字输入块(图中未示)提供使用者进行输入。当上述的选择条件输入完成,且使用者点选确定组件341后,语句生成模块105接收所输入的选择条件,并依据等效语句生成SQL语句(例如"selectid,name,actionfromuser,user—awhereuser.id=user—a.id"及"select*fromuserLEFTJOINuser—aONuser.id=user—a.id"),所述依据等效语句生成SQL语句的过程如下根据所输入的选择条件产生对应的SQL语句(例如"selectid,name,actionfromuser,user—awhereuser.id=user_a.id"),并以此SQL语句作为生成另一SQL语句的基准;从储存于语句储存模块101中寻找匹配的等效语句,举例来说,以作为基准的SQL语句格式(例如"select[字段参数a,字段参数b,字段参数c]from[表名参数a,表名参数b]where[表名参数a].[字段参数11]=[表名参数b].[字段参数n]")来寻找匹配的等效语句格式(例如select[字段参数a,字段参数b,字段参数c]from[表名参数a]LEFTJOIN[表名参数b]ON[表名参数a].[字段参数n]-[表名参数b].[字段参数n]");将所有参数进行替换处理后生成另一SQL语句(例如"selectid,name,actionfromuserLEFTJOINuser—aONuser.id=user_a.id");判断选择块一321内的字段是否全选,若是则以"*"取代前述所生成的另一SQL语句中的字段名称(例如"id,name,action");最后,生成的另一SQL语句为"select*fromuserLEFTJOINuser—aONuser.id=user—a.id",并将所有生成的SQL语句显示于语句显示块330中,若使用者不满意所产生的SQL语句可通过点选清除组件342来清除语句显示块330中所显示的SQL语句。效能测试模块106通过效能函数(例如"benchmark()")计算并显示所生成的SQL语句的执行效能,其执行效能的显示方式是以SQL语句的执行时间(例如4.00秒)显示于相应的SQL语句后,如图3中的语句显示块330所示意。另外,所述效能函数的使用方法为已知技术,故在此不多作赘述。综上所述,可知本发明与先前技术之间的差异在于通过图形化界面提供使用者生成SQL语句,并对所生成的SQL语句进行效能测试的技术手段,藉由此一技术手段可以辅助使用者选择效能良好的SQL语句从而解决先前技术中存在的问题,进而达成提升SQL语句撰写便利性及数据库查询效率的技术功效。虽然本发明以前述的实施例公开如上,然其并非用以限定本发明,任何本领域技术人员,在不脱离本发明之精神和范围内,当可作些许的更动与润9饰,因此本发明的专利保护范围须视本说明书所附的权利要求所界定者为准。权利要求1、一种结构化查询语言生成系统,其特征在于,包含一语句储存模块,用以储存至少一等效语句;一函数储存模块,用以储存至少一数据库所内建的至少一SQL函数;一配置侦测模块,用以侦测所选择的该数据库,并将侦测结果记录于一配置信息;一输入模块,根据该配置信息及所述SQL函数产生一输入窗口,用以提供输入至少一选择条件;及一语句生成模块,用以接收所述选择条件,并依据所述等效语句生成至少一SQL语句。2、如权利要求1所述的结构化查询语言生成系统,其特征在于,其中所述系统还包含一效能测试模块,用以通过一效能函数计算并显示所述SQL语句的执行效能。3、如权利要求1所述的结构化查询语言生成系统,其特征在于,其中所述等效语句是指能够产生相同执行结果的不同SQL语句。4、如权利要求1所述的结构化查询语言生成系统,其特征在于,其中所述SQL函数包含数学函数、字符串函数、格式化函数、时间函数、操作函数及系统函数。5、如权利要求1所述的结构化查询语言生成系统,其特征在于,其中该配置信息包含该数据库名称、该数据库中至少一数据表名称及所述数据表的字段名称。6、如权利要求2所述的结构化查询语言生成系统,其特征在于,其中该效能函数为各该数据库所内建用以测试效能的函数。7、一种结构化查询语言生成方法,其特征在于,其步骤包括建立至少一等效语句;记录至少一数据库所内建的至少一SQL函数;侦测所选择的该数据库,并将侦测结果记录于一配置信息;根据该配置信息及所述SQL函数产生一输入窗口,用以提供输入至少一选择条件;及接收所述选择条件,并依据所述等效语句生成至少一SQL语句。8、如权利要求7所述的结构化查询语言生成方法,其特征在于,其中该方法还包含通过一效能函数计算并显示所述SQL语句的执行效能的步骤。9、如权利要求7所述的结构化查询语言生成方法,其特征在于,其中所述SQL函数包含数学函数、字符串函数、格式化函数、时间函数、操作函数及系统函数。10、如权利要求7所述的结构化查询语言生成方法,其特征在于,其中该配置信息包含该数据库名称、该数据库中至少一数据表名称及所述数据表的字段名称。全文摘要本发明公开了一种结构化查询语言生成系统及方法,目的在于解决依赖SQL语句撰写经验的限制,以及执行效能不佳的问题,通过图形化界面供使用者生成SQL语句,藉以辅助使用者选择效能良好的SQL语句,从而达到提升SQL语句撰写便利性及数据库查询效率的技术功效。文档编号G06F17/30GK101464862SQ20071016062公开日2009年6月24日申请日期2007年12月21日优先权日2007年12月21日发明者许国华,邱全成申请人:英业达股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1