CN110807042B - 一种sql语句生成系统及方法 - Google Patents
一种sql语句生成系统及方法 Download PDFInfo
- Publication number
- CN110807042B CN110807042B CN201810805012.XA CN201810805012A CN110807042B CN 110807042 B CN110807042 B CN 110807042B CN 201810805012 A CN201810805012 A CN 201810805012A CN 110807042 B CN110807042 B CN 110807042B
- Authority
- CN
- China
- Prior art keywords
- icon
- mode icon
- association mode
- target
- data source
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 21
- 238000012216 screening Methods 0.000 claims description 67
- 238000010586 diagram Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 230000004308 accommodation Effects 0.000 description 2
- 238000012098 association analyses Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 239000002360 explosive Substances 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
Images
Landscapes
- User Interface Of Digital Computer (AREA)
Abstract
本发明提供了一种SQL语句生成系统及方法,系统包括前端和后端,前端显示图形化界面,包括用户操作区和操作对象显示区,操作对象显示区用于显示数据源图标和关联方式图标,若目标数据源图标和目标关联方式图标通过连接线形成满二叉树,在接收到SQL语句生成指令后,基于满二叉树生成字符串,将字符串发送给后端;后端解析字符串得到目标数据源图标的标识和位置、目标关联方式图标的标识和位置,确定目标关联方式图标标识对应的关键字,根据目标数据源图标和目标关联方式图标的位置,将目标数据源图标的标识以及关键字填充至SQL语句模型,生成SQL语句。应用本发明实施例,提高了生成SQL语句的效率。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种SQL语句生成系统及方法。
背景技术
随着数据爆发式的增长,数据之间的关联性日益复杂,如何方便快速的对数据库进行查询和管理操作成为研究热点,各种数据库的操作语言应运而生。常见的数据库操作语言包括:SQL(Structured Query Language,结构化查询语言)以及类SQL数据查询语言。SQL语句具有极大的灵活性和强大的功能,在多数情况下,在其他语言中需要一大段程序实现的功能只需要一个SQL语句就可以达到目的。因此,SQL语句得到越来越广泛的应用。
目前,生成SQL语句的方式主要为人工编写代码的方式,发明人在实现本发明的过程中发现,采用现有的方式,开发人员需要在了解业务的同时,必须了解数据库的表结构,当表结构调整时,需要根据调整后的表结构重新编写的SQL语句,因此,为了生成的SQL语句,开发人员需要投入较大的精力以及时间,导致SQL语句的生成效率不高。
因此有必要设计一种新的SQL语句生成方法,以克服上述问题。
发明内容
本发明的目的在于克服现有技术之缺陷,提供了一种SQL语句生成系统及方法,以实现提高SQL语句的生成效率。
本发明是这样实现的:
第一方面,本发明提供一种SQL语句生成系统,所述系统包括前端和后端,其中,
所述前端,用于显示图形化界面,所述图形化界面包括用户操作区和操作对象显示区,所述操作对象显示区用于显示各数据源图标和各关联方式图标,若目标数据源图标和目标关联方式图标通过连接线形成满二叉树,则在接收到SQL语句生成指令后,基于满二叉树各节点的标识和位置生成字符串,并将所生成的字符串发送给后端;其中,所述目标数据源图标为被移动至用户操作区的数据源图标,所述目标关联方式图标为被移动至用户操作区的关联方式图标,满二叉树各节点包括叶子节点和非叶子节点,非叶子节点为目标关联方式图标,叶子节点为目标数据源图标;
所述后端,用于解析所获得的字符串,得到目标数据源图标的标识和在满二叉树中的位置、目标关联方式图标的标识和在满二叉树中的位置,确定目标关联方式图标的标识对应的关键字,根据目标数据源图标和目标关联方式图标在满二叉树中的位置,将目标数据源图标的标识以及所确定的关键字填充至预设的SQL语句模型,生成SQL语句,一个关联方式图标的标识对应一个预设的关键字。
可选的,所述后端还用于执行SQL语句,得到查询结果,将查询结果返回给所述前端;所述前端还用于接收并显示所述查询结果。
可选的,所述前端,还用于当检测到筛选条件指令时,弹出筛选条件对话框;获得用户在所述筛选条件对话框输入的筛选条件;
所述前端基于满二叉树各节点的标识和位置生成字符串,具体为:
基于筛选条件、满二叉树各节点的标识和位置,生成字符串;
所述后端,具体用于:
解析所获得的字符串,得到筛选条件、目标数据源图标的标识和在满二叉树中的位置、目标关联方式图标的标识和在满二叉树中的位置,确定目标关联方式图标的标识对应的关键字,根据目标数据源图标和目标关联方式图标在满二叉树中的位置,将筛选条件、目标数据源图标的标识以及所确定的关键字填充至预设的SQL语句模型,生成SQL语句。
可选的,一个数据源图标对应一个预设的筛选条件对话框,所述前端当检测到筛选条件指令时,弹出筛选条件对话框,具体为:
当检测到目标数据源图标被双击时,弹出该目标数据源图标对应的筛选条件对话框;或者,
当检测到目标数据源图标被右击时,弹出该目标数据源图标对应的筛选条件对话框。
可选的,所述筛选条件对话框包括条件输入区,一个条件输入区包括一个字段下拉框和一个字段值输入框,所述前端获得用户在所述筛选条件对话框输入的筛选条件,具体为:
针对每一条件输入区,获得用户在该条件输入区内的字段下拉框选择的目标字段以及在该条件输入区内的字段值输入框输入的目标字段值;将该条件输入区的目标字段值赋给目标字段,得到该条件输入区的子筛选条件;
将每一条件输入区的子筛选条件合并,得到筛选条件。
可选的,每一条件输入区还包括添加按钮和删除按钮,所述前端还用于:
针对每一条件输入区,在检测到该条件输入区内的添加按钮被按下时,在该条件输入区的下方/上方新增条件输入区;在检测到该条件输入区内的删除按钮被按下时,删除该条件输入区。
可选的,所述后端还用于:
将所获得的字符串与所生成的SQL语句对应存储。
可选的,所述后端确定目标关联方式图标的标识对应的关键字,根据目标数据源图标和目标关联方式图标在满二叉树中的位置,将目标数据源图标的标识以及所确定的关键字填充至预设的SQL语句模型,生成SQL语句,具体为:
将处于满二叉树最下端的目标关联方式图标作为当前目标关联方式图标;确定当前目标关联方式图标对应的关键字为当前关键字;
将连接至当前目标关联方式图标两个目标数据源图标的标识以及当前关键字填充至预设的SQL语句模型,生成该当前目标关联方式图标所作用的子SQL语句;
判断当前目标关联方式图标是否为满二叉树的根节点;
若是,将所生成的子SQL语句作为SQL语句,完成SQL语句的生成。
可选的,若当前目标关联方式图标不为满二叉树的根节点,所述后端还用于:
将满二叉树中处于所述当前目标关联方式图标上一层、且与所述当前目标关联方式图标连接的目标关联方式图标作为当前目标关联方式图标;确定当前目标关联方式图标对应的关键字为当前关键字;
判断当前目标关联方式图标连接的另一个图标是否为目标关联方式图标;
若为目标关联方式图标,则将连接至所述当前目标关联方式图标的两个目标关联方式图标所作用的两个子SQL语句以及当前关键字填充至预设的SQL语句模型,生成该当前目标关联方式图标所作用的子SQL语句;
若不为目标关联方式图标,将连接至所述当前目标关联方式图标的一个目标关联方式图标所作用的子SQL语句、一个目标数据源图标的标识以及当前关键字填充至预设的SQL语句模型,生成该当前目标关联方式图标所作用的子SQL语句;
在生成该当前目标关联方式图标所作用的子SQL语句后,返回执行判断当前目标关联方式图标是否为满二叉树的根节点。
第二方面,本发明提供一种SQL语句生成方法,所述方法包括:
解析所获得的字符串,得到目标数据源图标的标识和在满二叉树中的位置、目标关联方式图标的标识和在满二叉树中的位置,确定目标关联方式图标的标识对应的关键字,根据目标数据源图标和目标关联方式图标在满二叉树中的位置,将目标数据源图标的标识以及所确定的关键字填充至预设的SQL语句模型,生成SQL语句,其中,
一个关联方式图标的标识对应一个预设的关键字,所述字符串是基于满二叉树各节点的标识和位置生成的,所述满二叉树由目标数据源图标和目标关联方式图标通过连接线形成,满二叉树各节点包括叶子节点和非叶子节点,非叶子节点为目标关联方式图标,叶子节点为目标数据源图标,所述目标数据源图标为被移动至用户操作区的数据源图标,所述目标关联方式图标为被移动至用户操作区的关联方式图标。
本发明具有以下有益效果:应用本发明实施例,前端可以显示图形化界面,若目标数据源图标和目标关联方式图标通过连接线形成满二叉树,则在接收到SQL语句生成指令后,基于满二叉树各节点的标识和位置生成字符串,并将所生成的字符串发送给后端;后端可以解析所获得的字符串,得到目标数据源图标的标识和在满二叉树中的位置、目标关联方式图标的标识和在满二叉树中的位置,确定目标关联方式图标的标识对应的关键字,根据目标数据源图标和目标关联方式图标在满二叉树中的位置,将目标数据源图标的标识以及所确定的关键字填充至预设的SQL语句模型,生成SQL语句。
可见,应用本发明实施例,只需移动数据源图标和关联方式图标,并且将数据源图标和关联方式图标通过连线连接,系统就可以生成SQL语句,用户无需了解表结构,也无需手动编写代码,从而,提高了生成SQL语句的效率,并且生成的SQL语句可以用于查找不同数据源的数据之间的关联关系。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本发明实施例提供的SQL语句生成系统的一种结构示意图;
图2为本发明实施例提供的满二叉树的一种结构示意图;
图3为本发明实施例提供的满二叉树的另一种结构示意图;
图4为本发明实施例提供的SQL语句生成方法的一种流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
为解决现有技术问题,本发明实施例提供了一种SQL语句生成系统及方法。下面首先对本发明所提供的一种SQL语句生成系统进行说明。
参见图1,图1为本发明实施例提供的一种SQL语句生成系统的结构示意图,系统包括前端和后端,其中,
所述前端11,用于显示图形化界面,所述图形化界面包括用户操作区和操作对象显示区,所述操作对象显示区用于显示各数据源图标和各关联方式图标,若目标数据源图标和目标关联方式图标通过连接线形成满二叉树,则在接收到SQL语句生成指令后,基于满二叉树各节点的标识和位置生成字符串,并将所生成的字符串发送给后端;其中,所述目标数据源图标为被移动至用户操作区的数据源图标,所述目标关联方式图标为被移动至用户操作区的关联方式图标,满二叉树各节点包括叶子节点和非叶子节点,非叶子节点为目标关联方式图标,叶子节点为目标数据源图标;
所述后端12,用于解析所获得的字符串,得到目标数据源图标的标识和在满二叉树中的位置、目标关联方式图标的标识和在满二叉树中的位置,确定目标关联方式图标的标识对应的关键字,根据目标数据源图标和目标关联方式图标在满二叉树中的位置,将目标数据源图标的标识以及所确定的关键字填充至预设的SQL语句模型,生成SQL语句,一个关联方式图标的标识对应一个预设的关键字。
前端11和后端12既可以为独立存在的物理实体,也可以为逻辑功能模块,当它们为独立存在的物理实体时,它们既可以为同一种类型的物理实体,也可以为不同类型的物理实体;当它们为逻辑功能模块时,即可以存在于同一物理实体中,也可以存在于不同物理实体中,本发明实施例对前端11和后端12的存在形态不做限定。例如,前端和后端可以为服务器、计算机、个人电脑等硬件实体。为了快速的搭建系统框架,可以采用Spring Boot技术来完成前端和后端的系统配置。
前端可以通过URL访问后端的接口,从而建立前端与后端之间的连接,在连接建立后,前端可以将字符串发送给后端,并可以接收后端返回的查询结果。
用户操作区还可以包括SQL语句生成按钮,用户在点击SQL语句生成按钮后,前端可以接收到SQL语句生成指令,或者,在预设时长后未检测到有数据源图标/关联方式图标被移动至用户操作区,则可以认为接收到SQL语句生成指令。预设时长事先设定,例如可以为3分钟、5分钟、10分钟等等。
满二叉树可以包括叶子节点和非叶子节点,非叶子节点可以有两个子节点,叶子节点没有子节点。
图形化界面可以支持jsplumb组件,jsPlumb是一个比较强大的绘图组件,它可以将界面中的元素用箭头、曲线、直线等连接起来,在其他实现方式中,也可以采用其他绘图组件,例如jQuery组件、Bootstrap组件等。
一个数据源图标用于表征一个数据源,一个关联方式图标用于表征一种关联方式,数据源可以为数据表,各数据表可以在同一个数据库中,也可以分别在不同的数据库中。关联方式可以包括交集、并集和差集中的至少一种。
各数据源图标和各关联方式图标开始可以均处于操作对象显示区,并且可以被移动至用户操作区,任一数据源图标/关联方式图标的具体移动方式可以为:用户将其从操作对象显示区拖动至用户操作区,也可以为:在用户点击后,跳动至用户操作区的预设位置,例如用户操作区的中心位置,或者左上角,或者右上角等等。
交集对应的关键字可以对两个或多个结果集(数据表)进行连接形成交集,从而可以返回左边结果集和右边结果集中都有的记录,左边结果集是处于关键字左边的结果集,右边结果集是处于关键字右边的结果集,交集对应的关键字可以为JOIN关键字或InterSect关键字,并集对应的关键字可以对两个或多个结果集进行连接形成并集,从而返回由所有结果集的所有的记录组合形成新的结果集,并集对应的关键字可以为Union关键字;差集(排除)对应的关键字可以对两个或多个结果集进行连接形成差集,返回左边结果集中已经有的、且右边结果集中没有的记录。差集对应的关键字可以为Except关键字或left JOIN关键字等。
字符串可以由字母、数字、中文等组成,字符串中可以包括二叉树各节点的标识和位置信息,位置信息包括根节点的位置、各非叶子节点的位置、非叶子节点的子节点位置,叶子节点的位置等,叶子节点的标识为目标数据源图标的标识,非叶子节点的标识为目标关联方式图标的标识,标识用于唯一的标记图标,目标数据源图标的标识可以为目标数据源图标所表征数据源的名称,例如,人员信息表的表名、住宿表的表名、汽车购票表的表名等等,目标关联方式图标的标识可以为目标关联方式图标所表征关联方式的名称,例如,交集、并集和差集,或者预先定义的标识为某个字符,例如,可以预先定义交集、并集和差集的标识分别为1,2,3。
预设的SQL语句模型可以为事先设计好的一段程序代码,并且该程序代码可以事先设置关联字段,关联字段可以为用于关联各数据表的字段,例如,数据表包括:人员信息表、住宿表和汽车购票表,各数据表都可以用身份证号码字段关联起来,从而关联字段可以为身份证号码字段,该程序代码可以存储在后端,从而,后端在获得目标数据源图标的标识以及关键字以后,可以直接将该目标数据源图标以及该关键字填充到该程序代码中,即可生成SQL语句。
示例性的,预设的SQL语句模型可以为:select sfz from a0关键字b0 on a0.sfz=b0.Sfz,其中,a0表示一个目标数据源图标的标识,可以为该目标数据源图标的所表征数据表的表名,b0表示另一个目标数据源图标的标识,可以为另一个目标数据源图标的所表征数据表的表名,sfz表示预先设置的关联字段,on后面的表示连接条件,即数据表a0中的sfz字段值等于数据表b0中的sfz字段值,或者,预设的SQL语句模型还可以为:select sfzfrom a0关键字b0 on a0.sfz=b0.Sfz where 1=1,其中,where后面的是筛选条件,由于1=1恒成立,所以这个筛选条件始终为True(真),在不定数量查询条件情况下,1=1可以很方便的规范语句。
应用本发明实施例,只需移动数据源图标和关联方式图标,并且将数据源图标和关联方式图标通过连线连接,系统就可以生成SQL语句,用户无需了解表结构,也无需手动编写代码,从而,提高了生成SQL语句的效率,简化了用户操作过程,并且生成的SQL语句可以用于查找不同数据源的数据之间的关联关系,实现了多维数据的时空关联分析。
一种实现方式中,为了便于用户查看查询结果,后端还可以用于执行SQL语句,得到查询结果,将查询结果返回给所述前端;前端还可以用于接收并显示所述查询结果。
一种实现方式中,为了便于快速的获得查询结果,前端还可以用于当检测到筛选条件指令时,弹出筛选条件对话框;获得用户在所述筛选条件对话框输入的筛选条件;
所述前端基于满二叉树各节点的标识和位置生成字符串,具体为:基于筛选条件、满二叉树各节点的标识和位置,生成字符串;
所述后端,具体用于:解析所获得的字符串,得到筛选条件、目标数据源图标的标识和在满二叉树中的位置、目标关联方式图标的标识和在满二叉树中的位置,确定目标关联方式图标的标识对应的关键字,根据目标数据源图标和目标关联方式图标在满二叉树中的位置,将筛选条件、目标数据源图标的标识以及所确定的关键字填充至预设的SQL语句模型,生成SQL语句。
筛选条件可以为待查询的某个字段的具体字段值,例如可以为具体时间、具体人名、身份证号码,或者,也可以为某个字段的模糊字段值,例如时间段、姓氏等等。通过输入筛选条件,可以缩小查询范围,更快的锁定满足条件的数据。
应用本发明实施例,SQL语句包含筛选条件,从而减少了需要查询的数据,提高了获得查询结果的速度,并且能够便于用户快速的查找到所需的数据。
一种实现方式中,一个数据源图标对应一个预设的筛选条件对话框,所述前端当检测到筛选条件指令时,弹出筛选条件对话框,具体为:
当检测到目标数据源图标被双击时,弹出该目标数据源图标对应的筛选条件对话框;或者,当检测到目标数据源图标被右击时,弹出该目标数据源图标对应的筛选条件对话框。
对于每一目标数据源图标,都可以通过双击或右击该目标数据源图标,来设置目标数据源图标对应的筛选条件,当然,在其他实现方式中,每一目标数据源图标还可以包括对应的筛选条件输入按钮,在用户点击该筛选条件输入按钮后,可以弹出该目标数据源图标对应的筛选条件对话框。应用本发明实施例,可以便于用户输入筛选条件。
在另一种实现方式中,用户还可以通过鼠标右击目标数据源图标/目标关联方式图标来删除目标数据源图标/目标关联方式图标,或者,也可以通过左击目标数据源图标/目标关联方式图标来拖动目标数据源图标/目标关联方式图标。
一种实现方式中,所述筛选条件对话框包括条件输入区,一个条件输入区包括一个字段下拉框和一个字段值输入框,所述前端获得用户在所述筛选条件对话框输入的筛选条件,具体为:
针对每一条件输入区,获得用户在该条件输入区内的字段下拉框选择的目标字段以及在该条件输入区内的字段值输入框输入的目标字段值;将该条件输入区的目标字段值赋给目标字段,得到该条件输入区的子筛选条件;
将每一条件输入区的子筛选条件合并,得到筛选条件。
一个筛选条件对话框可以包括一个或多个条件输入区,用户在点击字段下拉框后,可以出现一个或多个可选的字段选项,例如,包括姓名字段选项、身份证号码选项、性别选项等等。
示例性的,子筛选条件分别为:姓名为张三、性别为男,则筛选条件为:姓名为张三且性别为男。
一种实现方式中,每一条件输入区还包括添加按钮和删除按钮,前端还可以用于:
针对每一条件输入区,在检测到该条件输入区内的添加按钮被按下时,在该条件输入区的下方/上方新增条件输入区;在检测到该条件输入区内的删除按钮被按下时,删除该条件输入区。
在其他实现方式中,在检测到条件输入区内的添加按钮被按下时,也可以在该条件输入区的左方/右方新增条件输入区。在其他实现方式中,条件输入区还可以包括勾选框,从而通过勾选多个条件输入区,可以同时处理多个条件输入区,例如同时删除多个条件输入区,或,同时重置/保存多个条件输入区的内容。
应用本发明实施例,用户可以自行增加或删除条件输入区,可以更好的方便用户输入筛选条件,提高了用户体验。
一种实现方式中,所述后端还用于:将所获得的字符串与所生成的SQL语句对应存储。
从而,可以便于用户快速的获得之前的操作记录,进而可以快速的获得查询结果。
一种实现方式中,所述后端确定目标关联方式图标的标识对应的关键字,根据目标数据源图标和目标关联方式图标在满二叉树中的位置,将目标数据源图标的标识以及所确定的关键字填充至预设的SQL语句模型,生成SQL语句,具体为:
将处于满二叉树最下端的目标关联方式图标作为当前目标关联方式图标;确定当前目标关联方式图标对应的关键字为当前关键字;
将连接至当前目标关联方式图标两个目标数据源图标的标识以及当前关键字填充至预设的SQL语句模型,生成该当前目标关联方式图标所作用的子SQL语句;
判断当前目标关联方式图标是否为满二叉树的根节点;
若是,将所生成的子SQL语句作为SQL语句,完成SQL语句的生成。
示例性的,满二叉树的结构如图2所示,交集对应的关键字为JOIN,则将人员信息表的标识、住宿信息表的标识和JOIN填充预设的SQL语句模型,生成该交集所作用的子SQL语句,由于该交集为满二叉树的根节点,故SQL语句为:该交集所作用的子SQL语句。
一种实现方式中,为了生成多层嵌套的SQL语句,若当前目标关联方式图标不为满二叉树的根节点,所述后端还用于:
将满二叉树中处于所述当前目标关联方式图标上一层、且与所述当前目标关联方式图标连接的目标关联方式图标作为当前目标关联方式图标;确定当前目标关联方式图标对应的关键字为当前关键字;
判断当前目标关联方式图标连接的另一个图标是否为目标关联方式图标;
若为目标关联方式图标,则将连接至所述当前目标关联方式图标的两个目标关联方式图标所作用的两个子SQL语句以及当前关键字填充至预设的SQL语句模型,生成该当前目标关联方式图标所作用的子SQL语句;
若不为目标关联方式图标,将连接至所述当前目标关联方式图标的一个目标关联方式图标所作用的子SQL语句、一个目标数据源图标的标识以及当前关键字填充至预设的SQL语句模型,生成该当前目标关联方式图标所作用的子SQL语句;
在生成该当前目标关联方式图标所作用的子SQL语句后,返回执行判断当前目标关联方式图标是否为满二叉树的根节点。
示例性的,满二叉树的结构如图3所示,交集对应的关键字为JOIN,并集对应的关键字为Union,人员信息表的标识为R,火车购票记录表的标识为H,飞机购票记录表的标识为F,则将H、F和JOIN填充至预设的SQL语句模型,得到JOIN所作用的子SQL语句,由于交集不为满二叉树的根节点,且交集所连接的关联方式图标为并集,则将JOIN所作用的子SQL语句、R和Union填充至预设的SQL语句模型,得到Union所作用的子SQL语句,由于并集为满二叉树的根节点,则SQL语句为:该Union所作用的子SQL语句。
应用本发明实施例,实现了多层嵌套SQL语句的生成。
与上述的系统实施例相对应,本发明实施例还提供一种SQL语句生成方法。
参见图4,图4为本发明实施例所提供的一种SQL语句生成方法的流程示意图,方法包括:
S401、解析所获得的字符串,得到目标数据源图标的标识和在满二叉树中的位置、目标关联方式图标的标识和在满二叉树中的位置,确定目标关联方式图标的标识对应的关键字,根据目标数据源图标和目标关联方式图标在满二叉树中的位置,将目标数据源图标的标识以及所确定的关键字填充至预设的SQL语句模型,生成SQL语句,其中,
一个关联方式图标的标识对应一个预设的关键字,所述字符串是基于满二叉树各节点的标识和位置生成的,所述满二叉树由目标数据源图标和目标关联方式图标通过连接线形成,满二叉树各节点包括叶子节点和非叶子节点,非叶子节点为目标关联方式图标,叶子节点为目标数据源图标,所述目标数据源图标为被移动至用户操作区的数据源图标,所述目标关联方式图标为被移动至用户操作区的关联方式图标,一个数据源图标用于表征一个数据源,一个关联方式图标用于表征一种关联方式。
应用本发明实施例,只需移动数据源图标和关联方式图标,并且将数据源图标和关联方式图标通过连线连接,系统就可以生成SQL语句,用户无需了解表结构,也无需手动编写代码,从而,提高了生成SQL语句的效率,并且生成的SQL语句可以用于查找不同数据源的数据之间的关联关系。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种SQL语句生成系统,其特征在于,所述系统包括前端和后端,其中,
所述前端,用于显示图形化界面,所述图形化界面包括用户操作区和操作对象显示区,所述操作对象显示区用于显示各数据源图标和各关联方式图标,若目标数据源图标和目标关联方式图标通过连接线形成满二叉树,则在接收到SQL语句生成指令后,基于满二叉树各节点的标识和位置生成字符串,并将所生成的字符串发送给后端;其中,所述目标数据源图标为被移动至用户操作区的数据源图标,所述目标关联方式图标为被移动至用户操作区的关联方式图标,满二叉树各节点包括叶子节点和非叶子节点,非叶子节点为目标关联方式图标,叶子节点为目标数据源图标;
所述后端,用于解析所获得的字符串,得到目标数据源图标的标识和在满二叉树中的位置、目标关联方式图标的标识和在满二叉树中的位置,确定目标关联方式图标的标识对应的关键字,根据目标数据源图标和目标关联方式图标在满二叉树中的位置,将目标数据源图标的标识以及所确定的关键字填充至预设的SQL语句模型,生成SQL语句,一个关联方式图标的标识对应一个预设的关键字,具体为:
将处于满二叉树最下端的目标关联方式图标作为当前目标关联方式图标;确定当前目标关联方式图标对应的关键字为当前关键字;
将连接至当前目标关联方式图标两个目标数据源图标的标识以及当前关键字填充至预设的SQL语句模型,生成该当前目标关联方式图标所作用的子SQL语句;
判断当前目标关联方式图标是否为满二叉树的根节点;
若是,将所生成的子SQL语句作为SQL语句,完成SQL语句的生成;
若当前目标关联方式图标不为满二叉树的根节点,所述后端还用于:
将满二叉树中处于所述当前目标关联方式图标上一层、且与所述当前目标关联方式图标连接的目标关联方式图标作为当前目标关联方式图标;确定当前目标关联方式图标对应的关键字为当前关键字;
判断当前目标关联方式图标连接的另一个图标是否为目标关联方式图标;
若为目标关联方式图标,则将连接至所述当前目标关联方式图标的两个目标关联方式图标所作用的两个子SQL语句以及当前关键字填充至预设的SQL语句模型,生成该当前目标关联方式图标所作用的子SQL语句;
若不为目标关联方式图标,将连接至所述当前目标关联方式图标的一个目标关联方式图标所作用的子SQL语句、一个目标数据源图标的标识以及当前关键字填充至预设的SQL语句模型,生成该当前目标关联方式图标所作用的子SQL语句;
在生成该当前目标关联方式图标所作用的子SQL语句后,返回执行判断当前目标关联方式图标是否为满二叉树的根节点;
所述前端,还用于当检测到筛选条件指令时,弹出筛选条件对话框;获得用户在所述筛选条件对话框输入的筛选条件;
所述前端基于满二叉树各节点的标识和位置生成字符串,具体为:
基于筛选条件、满二叉树各节点的标识和位置,生成字符串;
所述后端,具体用于:
解析所获得的字符串,得到筛选条件、目标数据源图标的标识和在满二叉树中的位置、目标关联方式图标的标识和在满二叉树中的位置,确定目标关联方式图标的标识对应的关键字,根据目标数据源图标和目标关联方式图标在满二叉树中的位置,将筛选条件、目标数据源图标的标识以及所确定的关键字填充至预设的SQL语句模型,生成SQL语句;
将所获得的字符串与所生成的SQL语句对应存储;
一个数据源图标用于表征一个数据源,一个关联方式图标用于表征一种关联方式,数据源为数据表,所述预设的SQL语句模型为事先设计好的一段程序代码,并且该程序代码事先设置关联字段,关联字段为用于关联各数据表的字段。
2.根据权利要求1所述的系统,其特征在于,所述后端还用于执行SQL语句,得到查询结果,将查询结果返回给所述前端;所述前端还用于接收并显示所述查询结果。
3.根据权利要求1所述的系统,其特征在于,一个数据源图标对应一个预设的筛选条件对话框,所述前端当检测到筛选条件指令时,弹出筛选条件对话框,具体为:
当检测到目标数据源图标被双击时,弹出该目标数据源图标对应的筛选条件对话框;或者,
当检测到目标数据源图标被右击时,弹出该目标数据源图标对应的筛选条件对话框。
4.根据权利要求1所述的系统,其特征在于,所述筛选条件对话框包括条件输入区,一个条件输入区包括一个字段下拉框和一个字段值输入框,所述前端获得用户在所述筛选条件对话框输入的筛选条件,具体为:
针对每一条件输入区,获得用户在该条件输入区内的字段下拉框选择的目标字段以及在该条件输入区内的字段值输入框输入的目标字段值;将该条件输入区的目标字段值赋给目标字段,得到该条件输入区的子筛选条件;
将每一条件输入区的子筛选条件合并,得到筛选条件。
5.根据权利要求4所述的系统,其特征在于,每一条件输入区还包括添加按钮和删除按钮,所述前端还用于:
针对每一条件输入区,在检测到该条件输入区内的添加按钮被按下时,在该条件输入区的下方/上方新增条件输入区;在检测到该条件输入区内的删除按钮被按下时,删除该条件输入区。
6.一种基于权利要求1所述SQL语句生成系统的SQL语句生成方法,其特征在于,所述方法包括:
通过前端显示图形化界面,所述图形化界面包括用户操作区和操作对象显示区,所述操作对象显示区用于显示各数据源图标和各关联方式图标,若目标数据源图标和目标关联方式图标通过连接线形成满二叉树,则在接收到SQL语句生成指令后,基于满二叉树各节点的标识和位置生成字符串,并将所生成的字符串发送给后端;
通过后端解析所获得的字符串,得到目标数据源图标的标识和在满二叉树中的位置、目标关联方式图标的标识和在满二叉树中的位置,确定目标关联方式图标的标识对应的关键字,根据目标数据源图标和目标关联方式图标在满二叉树中的位置,将目标数据源图标的标识以及所确定的关键字填充至预设的SQL语句模型,生成SQL语句,一个关联方式图标的标识对应一个预设的关键字,具体为:
将处于满二叉树最下端的目标关联方式图标作为当前目标关联方式图标;确定当前目标关联方式图标对应的关键字为当前关键字;
将连接至当前目标关联方式图标两个目标数据源图标的标识以及当前关键字填充至预设的SQL语句模型,生成该当前目标关联方式图标所作用的子SQL语句;
判断当前目标关联方式图标是否为满二叉树的根节点;
若是,将所生成的子SQL语句作为SQL语句,完成SQL语句的生成;
若当前目标关联方式图标不为满二叉树的根节点,所述后端还用于:
将满二叉树中处于所述当前目标关联方式图标上一层、且与所述当前目标关联方式图标连接的目标关联方式图标作为当前目标关联方式图标;确定当前目标关联方式图标对应的关键字为当前关键字;
判断当前目标关联方式图标连接的另一个图标是否为目标关联方式图标;
若为目标关联方式图标,则将连接至所述当前目标关联方式图标的两个目标关联方式图标所作用的两个子SQL语句以及当前关键字填充至预设的SQL语句模型,生成该当前目标关联方式图标所作用的子SQL语句;
若不为目标关联方式图标,将连接至所述当前目标关联方式图标的一个目标关联方式图标所作用的子SQL语句、一个目标数据源图标的标识以及当前关键字填充至预设的SQL语句模型,生成该当前目标关联方式图标所作用的子SQL语句;
在生成该当前目标关联方式图标所作用的子SQL语句后,返回执行判断当前目标关联方式图标是否为满二叉树的根节点;
所述前端,还用于当检测到筛选条件指令时,弹出筛选条件对话框;获得用户在所述筛选条件对话框输入的筛选条件;
所述前端基于满二叉树各节点的标识和位置生成字符串,具体为:
基于筛选条件、满二叉树各节点的标识和位置,生成字符串;
所述后端,具体用于:
解析所获得的字符串,得到筛选条件、目标数据源图标的标识和在满二叉树中的位置、目标关联方式图标的标识和在满二叉树中的位置,确定目标关联方式图标的标识对应的关键字,根据目标数据源图标和目标关联方式图标在满二叉树中的位置,将筛选条件、目标数据源图标的标识以及所确定的关键字填充至预设的SQL语句模型,生成SQL语句;
将所获得的字符串与所生成的SQL语句对应存储。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810805012.XA CN110807042B (zh) | 2018-07-20 | 2018-07-20 | 一种sql语句生成系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810805012.XA CN110807042B (zh) | 2018-07-20 | 2018-07-20 | 一种sql语句生成系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110807042A CN110807042A (zh) | 2020-02-18 |
CN110807042B true CN110807042B (zh) | 2023-02-24 |
Family
ID=69486623
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810805012.XA Active CN110807042B (zh) | 2018-07-20 | 2018-07-20 | 一种sql语句生成系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110807042B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112130841B (zh) * | 2020-09-02 | 2022-04-22 | 广州市双照电子科技有限公司 | Sql开发方法、装置及终端设备 |
CN114637765A (zh) * | 2022-04-26 | 2022-06-17 | 阿里巴巴达摩院(杭州)科技有限公司 | 基于表格数据的人机交互方法、装置及设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103093000A (zh) * | 2013-02-25 | 2013-05-08 | 用友软件股份有限公司 | 数据库查询建模系统和数据库查询建模方法 |
CN104462429A (zh) * | 2014-12-12 | 2015-03-25 | 北京国双科技有限公司 | 数据库查询语句的生成方法及装置 |
CN104615737A (zh) * | 2015-02-10 | 2015-05-13 | 百度在线网络技术(北京)有限公司 | 一种基于搜索框的计算方法及装置 |
CN106909610A (zh) * | 2017-01-10 | 2017-06-30 | 中电科华云信息技术有限公司 | 基于浏览器的可视化拖拽查询数据的方法及系统 |
CN107391739A (zh) * | 2017-08-07 | 2017-11-24 | 北京奇艺世纪科技有限公司 | 一种查询语句生成方法、装置及电子设备 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7908266B2 (en) * | 2007-07-18 | 2011-03-15 | Sas Institute Inc. | Systems and methods for automatically creating an SQL join expression |
US8375014B1 (en) * | 2008-06-19 | 2013-02-12 | BioFortis, Inc. | Database query builder |
-
2018
- 2018-07-20 CN CN201810805012.XA patent/CN110807042B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103093000A (zh) * | 2013-02-25 | 2013-05-08 | 用友软件股份有限公司 | 数据库查询建模系统和数据库查询建模方法 |
CN104462429A (zh) * | 2014-12-12 | 2015-03-25 | 北京国双科技有限公司 | 数据库查询语句的生成方法及装置 |
CN104615737A (zh) * | 2015-02-10 | 2015-05-13 | 百度在线网络技术(北京)有限公司 | 一种基于搜索框的计算方法及装置 |
CN106909610A (zh) * | 2017-01-10 | 2017-06-30 | 中电科华云信息技术有限公司 | 基于浏览器的可视化拖拽查询数据的方法及系统 |
CN107391739A (zh) * | 2017-08-07 | 2017-11-24 | 北京奇艺世纪科技有限公司 | 一种查询语句生成方法、装置及电子设备 |
Non-Patent Citations (1)
Title |
---|
SQL生成器的设计与实现;胡宏银 等;《计算机工程与设计》;20061130(第11期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110807042A (zh) | 2020-02-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10860548B2 (en) | Generating and reusing transformations for evolving schema mapping | |
US10585883B2 (en) | Search around visual queries | |
US9569506B2 (en) | Uniform search, navigation and combination of heterogeneous data | |
CA2952938C (en) | Indirect filtering in blended data operations | |
JP5721818B2 (ja) | 検索におけるモデル情報群の使用 | |
US10140325B2 (en) | Data source identification mapping in blended data operations | |
US7788259B2 (en) | Locating, viewing and interacting with information sources | |
US10268737B2 (en) | System and method for performing blended data operations | |
US8352496B2 (en) | Entity name matching | |
CN112966004B (zh) | 数据查询方法、装置、电子设备以及计算机可读介质 | |
CN104699841A (zh) | 提供搜索结果的列表摘要信息的方法和装置 | |
US20110252049A1 (en) | Function execution using sql | |
US11308177B2 (en) | System and method for accessing and managing cognitive knowledge | |
US20210012219A1 (en) | Dynamic generation of rule and logic statements | |
AU2014228754A1 (en) | Non-deterministic disambiguation and matching of business locale data | |
CN110807042B (zh) | 一种sql语句生成系统及方法 | |
CN112765159A (zh) | 报表生成方法、系统、计算机设备和存储介质 | |
US10216792B2 (en) | Automated join detection | |
US20130031123A1 (en) | Locating ambiguities in data | |
CN108549672A (zh) | 一种数据智能分析方法及系统 | |
US20160179857A1 (en) | Database joins using uncertain criteria | |
CN113535966A (zh) | 知识图谱的创建方法、信息获取的方法、装置和设备 | |
CN112784113A (zh) | 数据处理方法及装置、计算机可读存储介质、电子设备 | |
TWI547888B (zh) | A method of recording user information and a search method and a server | |
US20170091187A1 (en) | Search-independent ranking and arranging data |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |