CN104462429B - 数据库查询语句的生成方法及装置 - Google Patents

数据库查询语句的生成方法及装置 Download PDF

Info

Publication number
CN104462429B
CN104462429B CN201410773953.1A CN201410773953A CN104462429B CN 104462429 B CN104462429 B CN 104462429B CN 201410773953 A CN201410773953 A CN 201410773953A CN 104462429 B CN104462429 B CN 104462429B
Authority
CN
China
Prior art keywords
query
target
query object
leaf
database
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
Application number
CN201410773953.1A
Other languages
English (en)
Other versions
CN104462429A (zh
Inventor
李亚东
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Gridsum Technology Co Ltd
Original Assignee
Beijing Gridsum Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Gridsum Technology Co Ltd filed Critical Beijing Gridsum Technology Co Ltd
Priority to CN201410773953.1A priority Critical patent/CN104462429B/zh
Publication of CN104462429A publication Critical patent/CN104462429A/zh
Application granted granted Critical
Publication of CN104462429B publication Critical patent/CN104462429B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种数据库查询语句的生成方法及装置。该数据库查询语句的生成方法包括:获取多个预设查询对象,其中,多个预设查询对象包括根查询对象和多个叶查询对象;从多个叶查询对象中获取目标叶查询对象;确定查询列,其中,查询列用于表示待查询内容对应的列;将查询列和目标叶查询对象添加到根查询对象中,得到目标查询对象;根据目标查询对象生成目标数据库查询语句。通过本发明,解决了生成数据库查询语句时准确性差的问题,进而通过将查询列和目标叶查询对象添加到根查询对象中,得到目标查询对象,再根据目标查询对象生成目标数据库查询语句,达到了提高生成数据库查询语句的准确性的效果。

Description

数据库查询语句的生成方法及装置
技术领域
本发明涉及计算机领域,具体而言,涉及一种数据库查询语句的生成方法及装置。
背景技术
在对关系数据库进行数据查询时,需要利用数据库查询语句,例如结构化查询语句(Structured Query Language,简称为SQL),展开相应的数据查询。目前,利用数据库查询语句进行数据查询的方法主要有两种:一种是静态查询,这类查询中与查询条件相关的数据是固定的;另外一种是动态查询,这类查询中与查询条件相关的数据是变化的。静态查询方式可以进行预编译,然后放至存储过程或者视图中。动态查询则需要根据用户需求的不同,指定不同的查询内容。
对于动态查询,在执行查询之前需要动态构造查询内容。现有方法是针对不同的查询内容,将数据库查询语句进行字符串的拼接,然后再执行查询。该方法对编程人员来说极不友好,在拼接时容易出错,并且之后的维护也较难展开。
针对相关技术中生成数据库查询语句时准确性差的问题,目前尚未提出有效的解决方案。
发明内容
本发明的主要目的在于提供一种数据库查询语句的生成方法及装置,以解决生成数据库查询语句时准确性差的问题。
为了实现上述目的,根据本发明的一个方面,提供了一种数据库查询语句的生成方法。
根据本发明的数据库查询语句的生成方法包括:获取多个预设查询对象,其中,多个预设查询对象包括根查询对象和多个叶查询对象;从多个叶查询对象中获取目标叶查询对象;确定查询列,其中,查询列用于表示待查询内容对应的列;将查询列和目标叶查询对象添加到根查询对象中,得到目标查询对象;根据目标查询对象生成目标数据库查询语句。
进一步地,将查询列和目标叶查询对象添加到根查询对象中,得到目标查询对象包括:获取预设查询代码,其中,预设查询代码为表示查询条件的代码;将查询列、预设查询代码和目标叶查询对象添加到根查询对象中,得到目标查询对象。
进一步地,获取多个预设查询对象包括:获取预设数据库查询语句;将预设数据库查询语句按照预设规则进行拆分,获取多个拆分结果;将多个拆分结果分别作为多个预设查询对象。
进一步地,将预设数据库查询语句按照预设规则进行拆分包括:确定预设数据库查询语句的语句结构;按照语句结构,划分出预设数据库查询语句的根节点和叶节点;按照预设数据库查询语句的根节点和叶节点对预设数据库查询语句进行拆分。
进一步地,按照语句结构,划分出预设数据库查询语句的根节点和叶节点包括:将预设数据库查询语句中包含的物理表、联接表、逻辑表和子查询表作为预设数据库查询语句的叶节点;将预设数据库查询语句中的查询实体作为预设数据库查询语句的根节点。
进一步地,多个叶查询对象用于嵌套在根查询对象中,根据目标查询对象生成目标数据库查询语句包括:获取根查询对象和目标叶查询对象的预设嵌套关系,其中,嵌套在内部的查询对象先于嵌套在外部的查询对象生成目标数据库查询语句;根据预设嵌套关系和目标查询对象生成数据库查询语句。
为了实现上述目的,根据本发明的另一方面,提供了一种数据库查询语句的生成装置。
根据本发明的数据库查询语句的生成装置包括:第一获取单元,用于获取多个预设查询对象,其中,多个预设查询对象包括根查询对象和多个叶查询对象;第二获取单元,用于从多个叶查询对象中获取目标叶查询对象;确定单元,用于确定查询列,其中,查询列用于表示待查询内容对应的列;添加单元,用于将查询列和目标叶查询对象添加到根查询对象中,得到目标查询对象;生成单元,用于根据目标查询对象生成目标数据库查询语句。
进一步地,添加单元包括:第一获取模块,用于获取预设查询代码,其中,预设查询代码为表示查询条件的代码;添加模块,用于将查询列、预设查询代码和目标叶查询对象添加到根查询对象中,得到目标查询对象。
进一步地,第一获取单元包括:第二获取模块,用于获取预设数据库查询语句;拆分模块,用于将预设数据库查询语句按照预设规则进行拆分,获取多个拆分结果;确定模块,用于将多个拆分结果分别作为多个预设查询对象。
进一步地,拆分模块包括:确定子模块,用于确定预设数据库查询语句的语句结构;划分子模块,用于按照语句结构,划分出预设数据库查询语句的根节点和叶节点;拆分子模块,用于按照预设数据库查询语句的根节点和叶节点对预设数据库查询语句进行拆分。
通过本发明,采用包括以下步骤的方法:获取多个预设查询对象,其中,多个预设查询对象包括根查询对象和多个叶查询对象;从多个叶查询对象中获取目标叶查询对象;确定查询列,其中,查询列用于表示待查询内容对应的列;将查询列和目标叶查询对象添加到根查询对象中,得到目标查询对象;根据目标查询对象生成目标数据库查询语句,解决了生成数据库查询语句时准确性差的问题,进而通过将查询列和目标叶查询对象添加到根查询对象中,得到目标查询对象,再根据目标查询对象生成目标数据库查询语句,达到了提高生成数据库查询语句的准确性的效果。
附图说明
构成本申请的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明的数据库查询语句的生成方法的实施例的流程图;
图2是根据本发明的数据库查询语句的生成方法的实施例的第一树形语句结构示意图;
图3是根据本发明的数据库查询语句的生成方法的实施例的第二树形语句结构示意图;
图4是根据本发明的数据库查询语句的生成方法的实施例的第三树形语句结构示意图;以及
图5是根据本发明的数据库查询语句的生成装置的实施例的示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本发明的实施例,提供了一种数据库查询语句的生成方法。
图1是根据本发明的数据库查询语句的生成方法的实施例的流程图。如图1所示,该方法包括步骤S102至步骤S110:
步骤S102,获取多个预设查询对象,其中,多个预设查询对象包括根查询对象和多个叶查询对象。
多个预设查询对象包括根查询对象和多个叶查询对象。根查询对象是生成的数据库查询语句的最上层的查询实体,例如,SELECT…FROM…。叶查询对象是可以添加入根查询对象中的查询实体。叶查询对象包括表,例如物理表(PhysicalTableExpression,如tableA)、逻辑表(LogicalTableExpression),如(SELECT a FROM tableA)AS T)、子查询表、联接表(JoinTableExpression,包含两个联接表和一个联接条件)等。
可以通过如下方法获取多个预设查询对象包括:获取预设数据库查询语句;将预设数据库查询语句按照预设规则进行拆分,获取多个拆分结果;将多个拆分结果分别作为多个预设查询对象。
预设数据库查询语句中几乎涵盖了常用的全部查询对象,因此,只需要将现有的预设数据库查询语句进行拆分,将拆分之后获取到的结果作为预设查询对象。例如,预设数据库查询语句中包含语句SELECT a FROM(SELECT a FROM B INNER JOIN C ON B.ID=C.ID)AS T,因此,可以将该语句进行拆分,包括:SELECT…FROM…;INNER JOIN;B;C。当之后需要获取预设查询对象时,可以参考上述拆分之后的查询对象,如果和待查询的内容相关的话即可以直接调用。
可以通过如下步骤将预设数据库查询语句按照预设规则进行拆分包括:确定预设数据库查询语句的语句结构;按照语句结构,划分出预设数据库查询语句的根节点和叶节点;按照预设数据库查询语句的根节点和叶节点对预设数据库查询语句进行拆分。
可以根据如下方法,按照语句结构,划分出预设数据库查询语句的根节点和叶节点包括:将预设数据库查询语句中包含的物理表、联接表、逻辑表和子查询表作为预设数据库查询语句的叶节点;将预设数据库查询语句中的查询实体作为预设数据库查询语句的根节点。
根据预设数据库查询语句的语句结构,可以将预设数据库查询语句进行合理的拆分,并且对于后续准确完整地调用查询对象十分有利。下面将以图2、图3、图4为例进行具体的说明。
图2是根据本发明的数据库查询语句的生成方法的实施例的第一树形语句结构示意图。预设数据库查询语句为SELECT a FROM tableA。如图2所示,该语句可以描述为:从表(tableA)中取某些列(a)的数据。可以将此语句中的表看作是一个树的节点,整体看作是树的根节点,从而该语句的执行结果就可以描述为根节点。
图3是根据本发明的数据库查询语句的生成方法的实施例的第二树形语句结构示意图。图中的预设数据库查询语句为SELECT a FROM(SELECT a FROM tableA)T。该语句中,有一个嵌套子查询,外层查询从子查询中查询出来结果。如图3所示,该语句可以描述为:从表(tableA)中获取某些列(a)的数据,再将上述结果作为一个表(SELECT a FROM tableA),从该表中获取某些列(a)的数据。可以将此语句中的表看作是一个树的节点,tableA、SELECT a FROM tableA是该树形结构的两个节点,tableA是叶节点、SELECT a FROMtableA为父节点。该语句的最终结果(即整个完整的查询语句)为根节点。
图4是根据本发明的数据库查询语句的生成方法的实施例的第三树形语句结构示意图。图中的预设数据库查询语句为SELECT a FROM(SELECT a FROM B INNER JOIN C ONB.ID=C.ID)T。该语句中,有两个嵌套子查询,第一子查询语句从第二子查询语句中查询出结果,最外层查询从第一子查询语句中查询出结果。该语句可以描述为:首先建立表B和表C的关系表,从表(B INNER JOIN C)中获取某些列(a)的数据,再从SELECT a FROM B INNERJOIN C中获取某些列(a)的数据。可以将此语句中的表看作是一个树的节点,B、C是该树形结构位于最底层的两个叶节点,B INNER JOIN C为位于B、C之上的父节点,SELECT a FROMB INNER JOIN C为位于B INNER JOIN C之上的父节点。该语句的最终结果(即整个完整的查询语句)为根节点。
通过上述几个示例可以说明,预设数据库查询语句可以按照上述树的形式进行拆分,每一个节点,代表着一个表,该表可能是物理表,也可能是临时表、子查询等等,而最终的结果为该树形结构的根节点。
步骤S104,从多个叶查询对象中获取目标叶查询对象。
数据库中已经事先存储了多个叶查询对象,根据查询的需求,可以在多个叶查询对象中进行查找,获取目标叶查询对象,从而可以直接将获取的目标叶查询对象拼装在根查询对象中,这种实现方法简便易行,并且保证了拼接的准确性。例如,如果查询需要获取表B和表C的联接表,则可以直接在多个叶查询对象中查找,从而可以获取Table B INNERJoin Table C。
步骤S106,确定查询列,其中,查询列用于表示待查询内容对应的列。
查询列表示待查询内容对应的列,是用于指定查询的具体内容。例如,查询物理表A的第a列,则可以设定查询列为a。
步骤S108,将查询列和目标叶查询对象添加到根查询对象中,得到目标查询对象。
在一个查询过程中,需要确定实现查询需要利用的查询对象,包括物理表、逻辑表、子查询表、联接表等,同时,也需要指定查询上述表中的具体的内容。因此,可以将查询列和目标叶查询对象添加到根查询对象中,则根查询对象便具备了可以查询出预期结果的条件。
可选地,将查询列和目标叶查询对象添加到根查询对象中,得到目标查询对象还可以包括:获取预设查询代码,其中,预设查询代码为表示查询条件的代码;将查询列、预设查询代码和目标叶查询对象添加到根查询对象中,得到目标查询对象。
由于在对数据库进行查询的过程中,往往需要查询特定条件下的数据,例如,获取某一个年级排名在前10名的同学的家庭住址。因此,需要在根查询对象中添加入查询条件代码。例如,可以加入过滤条件、分组列、排序规则等查询条件。
步骤S110,根据目标查询对象生成目标数据库查询语句。
可选地,多个叶查询对象用于嵌套在根查询对象中,根据目标查询对象生成目标数据库查询语句包括:获取根查询对象和目标叶查询对象的预设嵌套关系,其中,嵌套在内部的查询对象先于嵌套在外部的查询对象生成目标数据库查询语句;根据预设嵌套关系和目标查询对象生成数据库查询语句。
经过上面的一系列转化,最终的结果只会有一个查询块。该查询块在最终生成SQL语句时,只需从上到下把每一部分都生成为对应的数据库查询语句即可(递归生成),其生成的过程在查询块中自动完成,不需要开发者手动进行,开发者只要指定查询的列、排序列等信息即可,操作十分简易。
例如,获取的根查询对象为SELECT a FROM logicTb;获取的叶查询对象为SELECTa FROM joinTb,命名为logicTb,B INNER JOIN C ON B.ID=C.ID,命名为joinTb,物理表B和C。在生成目标数据库查询语句时,从上到下把每一部分都生成为对应的数据库查询语句即可。最终自动生成的目标数据库查询语句为SELECT a FROM(SELECT a FROM B INNERJOIN C ON B.ID=C.ID)AS T。
从上面的分析可以看出来,本方法首先将预设数据库查询语句进行了拆解,分解出数据库查询语句的构成后,再将每一部分的构成表示为一个对象的结构。开发人员在进行查询语句开发时,只需要维护上述查询对象,即可高效地实现对一个数据库查询语句的拼接。这种方法能够以对象的方式对数据库查询语句进行管理,使得数据库查询语句在程序中实现了本土化,程序可以使用对象的方式控制数据库查询语句,这种方法可以在很大程度上减少拼接出错的几率,对于数据库查询语句的后期维护十分有利。
该实施例由于采用了如下步骤:获取多个预设查询对象,其中,多个预设查询对象包括根查询对象和多个叶查询对象;从多个叶查询对象中获取目标叶查询对象;确定查询列,其中,查询列用于表示待查询内容对应的列;将查询列和目标叶查询对象添加到根查询对象中,得到目标查询对象;根据目标查询对象生成目标数据库查询语句,解决了生成数据库查询语句时准确性差的问题,进而通过将查询列和目标叶查询对象添加到根查询对象中,得到目标查询对象,再根据目标查询对象生成目标数据库查询语句,达到了提高生成数据库查询语句的准确性的效果。
根据本发明的实施例,提供了一种数据库查询语句的生成装置。需要说明的是,本发明实施例的数据库查询语句的生成装置可以用于执行本发明实施例所提供的数据库查询语句的生成方法,本发明实施例的数据库查询语句的生成方法也可以通过本发明实施例所提供的数据库查询语句的生成装置来执行。
图5是根据本发明的数据库查询语句的生成装置的实施例的示意图。如图5所示,该装置包括:第一获取单元10、第二获取单元20、确定单元30、添加单元40和生成单元50。
第一获取单元10,用于获取多个预设查询对象,其中,多个预设查询对象包括根查询对象和多个叶查询对象。
可选地,第一获取单元10还可以包括:第二获取模块,用于获取预设数据库查询语句;拆分模块,用于将预设数据库查询语句按照预设规则进行拆分,获取多个拆分结果;确定模块,用于将多个拆分结果分别作为多个预设查询对象。
拆分模块包括:确定子模块,用于确定预设数据库查询语句的语句结构;划分子模块,用于按照语句结构,划分出预设数据库查询语句的根节点和叶节点;拆分子模块,用于按照预设数据库查询语句的根节点和叶节点对预设数据库查询语句进行拆分。
第二获取单元20,用于从多个叶查询对象中获取目标叶查询对。
确定单元30,用于确定查询列,其中,查询列用于表示待查询内容对应的列。
添加单元40,用于将查询列和目标叶查询对象添加到根查询对象中,得到目标查询对象。
可选地,添加单元40还可以包括:第一获取模块,用于获取预设查询代码,其中,预设查询代码为表示查询条件的代码;添加模块,用于将查询列、预设查询代码和目标叶查询对象添加到根查询对象中,得到目标查询对象。
生成单元50,用于根据目标查询对象生成目标数据库查询语句。
本实施例提供的数据库查询语句的生成装置包括:第一获取单元10、第二获取单元20、确定单元30、添加单元40和生成单元50。通过该装置,解决了生成数据库查询语句时准确性差的问题,进而利用添加单元40将查询列和目标叶查询对象添加到根查询对象中,得到目标查询对象,再利用生成单元50根据目标查询对象生成目标数据库查询语句,达到了提高生成数据库查询语句的准确性的效果。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (10)

1.一种数据库查询语句的生成方法,其特征在于,包括:
获取多个预设查询对象,其中,所述多个预设查询对象包括根查询对象和多个叶查询对象,所述根查询对象是数据库查询语句的最上层的查询实体,所述叶查询对象是添加入所述根查询对象中的查询实体;
从所述多个叶查询对象中获取目标叶查询对象;
确定查询列,其中,所述查询列用于表示待查询内容对应的列;
将所述查询列和所述目标叶查询对象添加到所述根查询对象中,得到目标查询对象;以及
根据所述目标查询对象生成目标数据库查询语句。
2.根据权利要求1所述的方法,其特征在于,将所述查询列和所述目标叶查询对象添加到所述根查询对象中,得到目标查询对象包括:
获取所述预设查询代码,其中,所述预设查询代码为表示查询条件的代码;
以及
将所述查询列、所述预设查询代码和所述目标叶查询对象添加到所述根查询对象中,得到所述目标查询对象。
3.根据权利要求1所述的方法,其特征在于,获取多个预设查询对象包括:
获取预设数据库查询语句;
将所述预设数据库查询语句按照预设规则进行拆分,获取多个拆分结果;以及
将所述多个拆分结果分别作为所述多个预设查询对象。
4.根据权利要求3所述的方法,其特征在于,将所述预设数据库查询语句按照预设规则进行拆分包括:
确定所述预设数据库查询语句的语句结构;
按照所述语句结构,划分出所述预设数据库查询语句的根节点和叶节点;以及
按照所述预设数据库查询语句的根节点和所述叶节点对所述预设数据库查询语句进行拆分。
5.根据权利要求4所述的方法,其特征在于,按照所述语句结构,划分出所述预设数据库查询语句的根节点和叶节点包括:
将所述预设数据库查询语句中包含的物理表、联接表、逻辑表和子查询表作为所述预设数据库查询语句的叶节点;以及
将所述预设数据库查询语句中的查询实体作为所述预设数据库查询语句的根节点。
6.根据权利要求1所述的方法,其特征在于,所述多个叶查询对象用于嵌套在所述根查询对象中,根据所述目标查询对象生成目标数据库查询语句包括:
获取所述根查询对象和所述目标叶查询对象的预设嵌套关系,其中,嵌套在内部的查询对象先于嵌套在外部的查询对象生成目标数据库查询语句;以及
根据所述预设嵌套关系和所述目标查询对象生成数据库查询语句。
7.一种数据库查询语句的生成装置,其特征在于,包括:
第一获取单元,用于获取多个预设查询对象,其中,所述多个预设查询对象包括根查询对象和多个叶查询对象,所述根查询对象是数据库查询语句的最上层的查询实体,所述叶查询对象是添加入所述根查询对象中的查询实体;
第二获取单元,用于从所述多个叶查询对象中获取目标叶查询对象;
确定单元,用于确定查询列,其中,所述查询列用于表示待查询内容对应的列;
添加单元,用于将所述查询列和所述目标叶查询对象添加到所述根查询对象中,得到目标查询对象;以及
生成单元,用于根据所述目标查询对象生成目标数据库查询语句。
8.根据权利要求7所述的装置,其特征在于,所述添加单元包括:
第一获取模块,用于获取所述预设查询代码,其中,所述预设查询代码为表示查询条件的代码;以及
添加模块,用于将所述查询列、所述预设查询代码和所述目标叶查询对象添加到所述根查询对象中,得到所述目标查询对象。
9.根据权利要求7所述的装置,其特征在于,所述第一获取单元包括:
第二获取模块,用于获取预设数据库查询语句;
拆分模块,用于将所述预设数据库查询语句按照预设规则进行拆分,获取多个拆分结果;以及
确定模块,用于将所述多个拆分结果分别作为所述多个预设查询对象。
10.根据权利要求9所述的装置,其特征在于,所述拆分模块包括:
确定子模块,用于确定所述预设数据库查询语句的语句结构;
划分子模块,用于按照所述语句结构,划分出所述预设数据库查询语句的根节点和叶节点;以及
拆分子模块,用于按照所述预设数据库查询语句的根节点和所述叶节点对所述预设数据库查询语句进行拆分。
CN201410773953.1A 2014-12-12 2014-12-12 数据库查询语句的生成方法及装置 Active CN104462429B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410773953.1A CN104462429B (zh) 2014-12-12 2014-12-12 数据库查询语句的生成方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410773953.1A CN104462429B (zh) 2014-12-12 2014-12-12 数据库查询语句的生成方法及装置

Publications (2)

Publication Number Publication Date
CN104462429A CN104462429A (zh) 2015-03-25
CN104462429B true CN104462429B (zh) 2017-12-22

Family

ID=52908464

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410773953.1A Active CN104462429B (zh) 2014-12-12 2014-12-12 数据库查询语句的生成方法及装置

Country Status (1)

Country Link
CN (1) CN104462429B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106649363A (zh) * 2015-10-30 2017-05-10 北京国双科技有限公司 数据查询方法及装置
CN105868255A (zh) * 2015-12-25 2016-08-17 乐视网信息技术(北京)股份有限公司 查询推荐方法及装置
CN106933929B (zh) * 2015-12-31 2020-02-07 北京国双科技有限公司 调整数据表连接的方法和装置
CN108241670A (zh) * 2016-12-26 2018-07-03 北京国双科技有限公司 数据库语句生成方法及装置
CN110807042B (zh) * 2018-07-20 2023-02-24 武汉烽火众智智慧之星科技有限公司 一种sql语句生成系统及方法
CN111581237B (zh) * 2019-02-15 2023-06-09 阿里巴巴集团控股有限公司 数据查询方法、装置、系统及电子设备
CN114547067A (zh) * 2022-01-20 2022-05-27 北京元年科技股份有限公司 基于通用查询结构的sql查询语句生成方法、装置及设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102012945A (zh) * 2010-12-16 2011-04-13 重庆国际复合材料有限公司 一种面向用户的数据库管理系统
CN102799644A (zh) * 2012-06-28 2012-11-28 用友软件股份有限公司 基于元数据的数据库动态查询系统和数据库动态查询方法
CN103577420A (zh) * 2012-07-23 2014-02-12 中国移动通信集团上海有限公司 一种用户信息动态查询方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130117288A1 (en) * 2011-11-08 2013-05-09 Microsoft Corporation Dynamically typed query expressions

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102012945A (zh) * 2010-12-16 2011-04-13 重庆国际复合材料有限公司 一种面向用户的数据库管理系统
CN102799644A (zh) * 2012-06-28 2012-11-28 用友软件股份有限公司 基于元数据的数据库动态查询系统和数据库动态查询方法
CN103577420A (zh) * 2012-07-23 2014-02-12 中国移动通信集团上海有限公司 一种用户信息动态查询方法及装置

Also Published As

Publication number Publication date
CN104462429A (zh) 2015-03-25

Similar Documents

Publication Publication Date Title
CN104462429B (zh) 数据库查询语句的生成方法及装置
CN108733713B (zh) 数据仓库中的数据查询方法及装置
CN107341215A (zh) 一种基于分布式计算平台的多源垂直知识图谱分类集成查询方法
US7680783B2 (en) Configurable search strategy
US20180246955A1 (en) Method and device for searching legal provision
US6675170B1 (en) Method to efficiently partition large hyperlinked databases by hyperlink structure
CN102243660B (zh) 一种数据访问方法及设备
CN104408159B (zh) 一种数据关联、加载、查询方法及装置
US6886016B2 (en) Method and system for supporting multivalue attributes in a database system
US20120130997A1 (en) Hybrid-distribution model for search engine indexes
CN104462430B (zh) 关系型数据库的数据处理方法及装置
US8250532B2 (en) Efficient development of configurable software systems in a large software development community
US20080256067A1 (en) File Search Engine and Computerized Method of Tagging Files with Vectors
CN102298650B (zh) 一种海量数字信息的分布式推荐方法
JP5410514B2 (ja) X500データモデルをリレーショナル・データベースにマッピングするための方法
CN106933897A (zh) 数据查询方法和装置
CN108427736A (zh) 一种用于查询数据的方法
CN108241709A (zh) 一种数据集成方法、装置和系统
An et al. Automatic generation of ontology from the deep web
CN107239568B (zh) 分布式索引实现方法及装置
CN106227515A (zh) 一种信息处理方法及服务器
KR101743731B1 (ko) 분산된 데이터를 통합하여 생성한 온톨로지를 기반으로 쿼리를 처리하는 방법 및 장치
CN106649447B (zh) 一种文件获取方法及服务器
CN105488170B (zh) 一种erp系统的信息管理方法及装置
CN104765835B (zh) 一种搜索词的搜索方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
PE01 Entry into force of the registration of the contract for pledge of patent right
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: Method and device for generating database query sentences

Effective date of registration: 20190531

Granted publication date: 20171222

Pledgee: Shenzhen Black Horse World Investment Consulting Co., Ltd.

Pledgor: Beijing Guoshuang Technology Co.,Ltd.

Registration number: 2019990000503

CP02 Change in the address of a patent holder
CP02 Change in the address of a patent holder

Address after: 100083 No. 401, 4th Floor, Haitai Building, 229 North Fourth Ring Road, Haidian District, Beijing

Patentee after: BEIJING GRIDSUM TECHNOLOGY Co.,Ltd.

Address before: 100086 Beijing city Haidian District Shuangyushu Area No. 76 Zhichun Road cuigongfandian 8 layer A

Patentee before: BEIJING GRIDSUM TECHNOLOGY Co.,Ltd.