CN102073642A - 自动生成结构化sql语句的方法与其电子装置 - Google Patents
自动生成结构化sql语句的方法与其电子装置 Download PDFInfo
- Publication number
- CN102073642A CN102073642A CN2009102219421A CN200910221942A CN102073642A CN 102073642 A CN102073642 A CN 102073642A CN 2009102219421 A CN2009102219421 A CN 2009102219421A CN 200910221942 A CN200910221942 A CN 200910221942A CN 102073642 A CN102073642 A CN 102073642A
- Authority
- CN
- China
- Prior art keywords
- record sheet
- data object
- sql statement
- field
- query
- 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.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种自动生成结构化SQL语句的方法,其包括下列步骤:根据一输入要求创建一暂存表与一历程记录表,该暂存表记录多个字段,该历程记录表记录该输入要求的一索引集合与每一输入要求的该字段的一结构信息;以外键连结至该历程记录表建立一结构记录表,每一该结构记录表中具有相应该字段的一数据对象;从该历程记录表与该结构记录表中选取该字段与该数据对象,并设定该字段与该数据对象的一查询结构要求;以及,根据该查询结构要求产生相应的一输出表。
Description
技术领域
本发明涉及一种数据生成方法与其电子装置,特别有关于一种自动生成结构化SQL语句的方法与其电子装置。
背景技术
随着计算机的快速发展,使得越来越多数据数据的处理事务越发的仰赖计算机来完成。所以为能提高的处理数据数据,所以国际商业机器(IBM)公司提出了一套结构化查询语言(Structured Query Language,简称SQL)。1986年10月,美国国家标准局(American National Standards Institute,ANSI)对SQL进行规范后,以此作为关系式数据库管理***的标准语言(ANSI X3.135-1986),1987年得到国际标准组织的支持下成为国际标准。不过各种通行的数据库***在其实践过程中都对SQL规范作了某些编改和扩充。所以,实际上不同数据库***之间的SQL语言不能完全相互通用。
为能有效率的从数据库中搜寻出相应的数据,使用者需要具备SQL语句编程的能力。由于SQL语句编程的学习需要耗费相当时间的钻研。因此,有其它厂商提供了许多图形化接口(graphic user interface,GUI)的SQL语句编程工具。
例如,微软公司曾经推出一套查询设计器。在查询设计器中,使用者可以从添加表中拖曳单独的表、视图(view)、函数等元件,请参考图1所示。使用者依序将所选出的各项元件组合成具有相应功能的SQL语句120。但是习知的查询设计器110仅能用在独立结构的SQL语句120中,并无法实现复杂结构的SQL语句120。举例来说,使用者欲从图1中的Talbe表A中选出第10条到第15条记录的SQL语句120为“select top 5*from(select top 15*fromTableA where targeted=’001a’order by name asc)TableA order by namedesc”。由于欲查询TableA中的第10条到第15条记录。所以在SQL语句120中需要加入复合式的SQL语句120。这样的作法无法在现有的查询设计器110中所实现。因此大大的降低了查询设计器110的可利用性。
发明内容
鉴于以上的问题,本发明要解决的技术问题在于提供一种自动生成结构化SQL语句的方法,用以自动建置带有子查询结构的复合式SQL语句及其数据表。
为实现上述技术问题,本发明提供一种自动生成结构化SQL语句的方法,其包括下列步骤:根据一输入要求创建一暂存表与一历程记录表,该暂存表记录多个字段,该历程记录表记录该输入要求的一索引集合与每一输入要求的该字段的一结构信息;以外键连结至该历程记录表建立一结构记录表,每一该结构记录表中具有相应该字段的一数据对象;从该历程记录表与该结构记录表中选取该字段与该数据对象,并设定该字段与该数据对象的一查询结构要求;以及,根据该查询结构要求产生相应的一输出表。
上述自动生成结构化SQL语句的方法,其特点在于,于创建该历程记录表的步骤,还包括:解析该输入要求的一字符结构;以及,根据该字符结构的组成顺序用以定义该历程记录表。
上述自动生成结构化SQL语句的方法,其特点在于,该结构信息为一延伸标记语言。
上述自动生成结构化SQL语句的方法,其特点在于,该数据对象为该字段、一数据、或该暂存表。
上述自动生成结构化SQL语句的方法,其特点在于,产生相应的该输出表步骤后,还包括:根据该输出表产生相应的一SQL语句。
从本发明的另一观点,本发明提出一种自动生成结构化SQL语句的电子装置,其提供一种可以自动建置带有子查询结构的复合式SQL语句及其数据表的接口的电子装置。
本发明还提供一种自动生成结构化SQL语句的电子装置,其特征在于,包含:一储存单元,其储存一接口生成程序、多笔历程记录表与多笔结构记录表;一处理单元,电性连接于该储存单元;以及,一显示单元,其电性连结于该处理单元,该显示单元具有一对象选择区、一对象编辑区与一语句输出区;其中,该处理单元接收一输入要求创建一暂存表与相应的该历程记录表,该处理单元将该历程记录表外键连结该结构记录表,再从每一该结构记录表中具有相应该字段的一数据对象,并根据该数据对象设定一查询结构要求,于该对象选择区中根据该查询结构要求绘制该数据对象,从该对象选择区中选出的该数据对象并将该数据对象绘制于该对象编辑区中,根据该对象编辑区中的该数据对象的排列顺序在该语句输出区中显示相应的一输出表。
本发明提供一种可自动产生SQL语句的数据表,从而提供使用者更为快速的处理环境。通过本发明可以构造复合结构的SQL语句或跨窗体等具有结构层次的SQL语句。
以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。
附图说明
图1为现有技术的查询设计器的接口示意图;
图2A为本发明的结构示意图;
图2B为本发明的界面示意图;
图3为本发明的运作流程图;
图4为本发明的运作态样的流程示意图;
图5为本发明的接口生成程序的细部流程示意图。
其中,附图标记:
110 查询设计器
120 SQL语句
210 储存单元
221 数据库程序
222 数据表接口生成程序
220 处理单元
230 显示单元
231 对象选择区
232 对象编辑区
233 语句输出区
具体实施方式
本发明可应用于具有数据库的计算机,而计算机所采用的数据库并不限定为网状式数据库(Network Database)、关系型数据库(Relational Database)以及对象导向式数据库(Object-Oriented Database)。请参考图2A所示,其为本发明的结构示意图。在本发明中包括:储存单元210、处理单元220与显示单元230。储存单元210中储存有上述的任一种数据库程序221,而储存单元210可以是硬盘(hard disk)、或是随身碟(flash memory)的任一种。处理单元220用以运行数据库程序221与本发明的数据表接口生成程序222,并将生成的数据表接口绘制于显示单元230中,并提供给使用者操作。显示单元230绘制对象选择区231、对象编辑区232与语句输出区233,请参考图2B所示,其为本发明的界面示意图。
本发明的数据表接口生成程序222包括以下步骤,请参考图3所示,其为本发明的运作流程图:
步骤S310:根据输入要求创建暂存表与历程记录表,暂存表记录多个字段,历程记录表记录该输入要求的索引集合与每一输入要求的字段的结构信息;
步骤S320:以外键连结至历程记录表建立结构记录表,每一结构记录表中具有相应字段的数据对象;
步骤S330:从历程记录表与结构记录表中选取字段与数据对象,并设定字段与数据对象的查询结构要求;以及
步骤S340:根据查询结构要求产生相应的输出表。
首先,从计算机接收来自使用者的输入要求,并根据输入要求创建出一张暂存表与历程记录表。输入要求为一SQL语句,其用以从数据库中的各项数据表、视图(view)调用相关数据数据的操作。由于SQL语句是由高阶语法所组成的,因此SQL语句中的语法是相近于一般人所使用的句子。所以可以将SQL语句视为数据对象所构成。换言之,在数据对象为SQL语句中每一指令或参数,例如:SQL语法中的“select”、“order”或“wherein”等。处理单元220从每一结构记录表中具有相应该字段的数据对象,根据数据对象设定一查询结构要求。
为清楚说明本发明的整体运作,以下述例子作为解说。并请配合参考图4所示。首先是建立数据来源区中的多组数值群组。在建立数据来源的过程包括以下步骤:
步骤S410:保存输入要求的SQL语句的查询记录;以及
步骤S420:分析输入要求的SQL语句中的数据对象组成。
每个使用者的查询设定,都能形成一个独立的SQL语句。因此,将使用者的SQL语句指派一个代码,并且把执行查询设定形成的SQL的查询结果表的表结构(字段名称、字段数据类型)保存起来,意即解析输入要求的一字符结构,并根据字符结构的组成顺序用以定义历程记录表。
比如根据使用者的查询设定形成了下面的SQL语句:
SELECT T_DataServer.name,T_DataServer.userName,
T_DataServer.password,T_DataServer_Database.databaseName
FROM T_DataServer
INNER JOIN T_DataServer_Database
ON T_DataServer.id=T_DataServer_Database.dataServerId
处理单元220会将上述输入要求的SQL语句用一个TempA暂存表存放,其中存放格式如下所示:
SELECT top 0 A.*into#TempA FROM(SELECT T_DataServer.name,
T_DataServer.userName,
T_DataServer.password,T_DataServer_Database.databaseName
FROM T_DataServer
INNER JOIN T_DataServer_Database
ON T_DataServer.id=T_DataServer_Database.dataServerId)A
use tempdb
接着,再取得TempA暂存表的结构记录表:
SELECT tempdb.dbo.syscolumns.name AS field,字段名
tempdb.dbo.systypes.name AS type,类型
tempdb.dbo.syscolumns.length长度
FROM tempdb.dbo.syscolumns
INNER JOIN tempdb.dbo.sysobjects
ON tempdb.dbo.sysobjects.id=tempdb.dbo.syscolumns.id
INNER JOIN tempdb.dbo.systypes
ON tempdb.dbo.syscolumns.xtype=tempdb.dbo.systypes.xtype
AND tempdb.dbo.syscolumns.xusertype =
tempdb.dbo.systypes.xusertype
where tempdb.dbo.sysobjects.xtype=’U’
AND(tempdb.dbo.sysobjects.id=object_id(’#TempA’))
执行输入要求的SQL语句就可以返回SQL语句的查询结果的结构记录表。在储存单元210中的每一笔SQL语句的查询记录如下表所示:
Id | databaseId | Name | structureXml |
001p | 0001a | myReport1 | |
002p | 0002a | myReport2 |
表1.T_CustomTable表
T_CustomTable表用来存放使用者查询设置信息的结构记录表。换言之,T_CustomTable表存放所有使用者为构造SQL而选择的设定。其中,databaseId:描述了这个使用者设定中使用者选择的数据库相关来源的信息(服务器、数据库名、使用者等);name:由使用者自行设定,描述了结构记录表的表名称;structureXml:描述了使用者的查询设定信息,是一种延伸标记语言(Extensible Markup Language,XML)格式描述的,包含了所有的使用者对查询相关的设定信息,比如选择字段、关联条件、查询条件等。
除了T_CustomTable表外,在本发明中另设置一相应于T_CustomTable表的T_CustomTable_Field表。T_CustomTable_Field表存放所有使用者自定义数据表的结构。
id | customTableId | fieldName | fieldType |
001c | 001p | name | nvarchar(100) |
002c | 001p | weight | float(8) |
003c | 002p | shortName | nvarchar(100) |
表2.T_CustomTable表
T_CustomTable表针对保存的每一个使用者的查询设定,都会在T_CustomTable表中产生一条记录。其中,T_CustomTable_Field表是描述使用者自定义表的表字段结构的表。customTableId是T_CustomTable表的外键,描述字段信息属于哪个自定义表;fieldName,表示字段的名称;fieldType:表示字段数据类型。
以上为对输入要求与SQL语句的分析历程,计算机会将前述历程记录于其中,并在对象选择区231中绘制出SQL语句的各项数据对象。
接着,计算机在接收查询结构要求后,计算机会从历程记录表与结构记录表中选取字段与数据对象,并设定字段与数据对象的查询结构要求。使用者可以从对象选择区231中选择不同的数据对象(服务器、和数据库)。使用者为通过对象编辑区232用以构造查询进行设定,选定查询对象的选择列表不仅包含从存在数据库中的真实的数据库的表(或者视图等),还包含使用者自定义表的选择列表,如T_CustomTable表、T_CustomTable_Field表中取到相应的对象选择。
从另一种角度来说,查询结构要求可以被视为将每一个自定义表。而每一个自定义表包含了若干子节点的查询的设定。这样一来可以继续被其它设定选择成为那个设定的子节点,这样形成的关系可以被视为树状结构。请参考图5所示,其为本发明的接口生成程序的细部流程示意图。以下为自动产生数据表的细部运作流程:
步骤S510:从数据来源区中选取多组数值群组;
步骤S520:选择一个数值群组为根节点;
步骤S530:取得根节点相接的数值群组为次一子节点,重复此一步骤直至无法取得次一层的子节点为止;
步骤S540:若已完成所有子节点时,判断最后子节点的当前父节点是否为空值;
步骤S550:若是最后子节点的当前父节点为空值时,则生成SQL语句;以及
步骤S560:若是最后子节点的当前父节点不为空值时,将形成当前节点的SQL语句放入父节点所存放的SQL语句中。
在本发明中将储存单元210中的历程记录表与结构记录表中选取该些字段与该些数据对象,并设定该字段与该数据对象的查询结构要求(对应步骤S520~步骤S550)。最后根据查询结构要求在语句输出区233中显示相应的输出表。
当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明权利要求的保护范围。
Claims (6)
1.一种自动生成结构化SQL语句的方法,其包括下列步骤:
根据一输入要求创建一暂存表与一历程记录表,该暂存表记录多个字段,该历程记录表记录该输入要求的一索引集合与每一输入要求的该字段的一结构信息;
以外键连结至该历程记录表建立一结构记录表,每一该结构记录表中具有相应该字段的一数据对象;
从该历程记录表与该结构记录表中选取该字段与该数据对象,并设定该字段与该数据对象的一查询结构要求;以及
根据该查询结构要求产生相应的一输出表。
2.根据权利要求1所述的自动生成结构化SQL语句的方法,其特征在于,于创建该历程记录表的步骤,还包括:
解析该输入要求的一字符结构;以及
根据该字符结构的组成顺序用以定义该历程记录表。
3.根据权利要求2所述的自动生成结构化SQL语句的方法,其特征在于,该结构信息为一延伸标记语言。
4.根据权利要求1所述的自动生成结构化SQL语句的方法,其特征在于,该数据对象为该字段、一数据、或该暂存表。
5.根据权利要求1所述的自动生成结构化SQL语句的方法,其特征在于,产生相应的该输出表步骤后,还包括:
根据该输出表产生相应的一SQL语句。
6.一种自动生成结构化SQL语句的电子装置,其特征在于,包含:
一储存单元,其储存一接口生成程序、多笔历程记录表与多笔结构记录表;
一处理单元,电性连接于该储存单元;以及
一显示单元,其电性连结于该处理单元,该显示单元具有一对象选择区、一对象编辑区与一语句输出区;
其中,该处理单元接收一输入要求创建一暂存表与相应的该历程记录表,该处理单元将该历程记录表外键连结该结构记录表,再从每一该结构记录表中具有相应该字段的一数据对象,并根据该数据对象设定一查询结构要求,于该对象选择区中根据该查询结构要求绘制该数据对象,从该对象选择区中选出的该数据对象并将该数据对象绘制于该对象编辑区中,根据该对象编辑区中的该数据对象的排列顺序在该语句输出区中显示相应的一输出表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009102219421A CN102073642A (zh) | 2009-11-23 | 2009-11-23 | 自动生成结构化sql语句的方法与其电子装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009102219421A CN102073642A (zh) | 2009-11-23 | 2009-11-23 | 自动生成结构化sql语句的方法与其电子装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102073642A true CN102073642A (zh) | 2011-05-25 |
Family
ID=44032186
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009102219421A Pending CN102073642A (zh) | 2009-11-23 | 2009-11-23 | 自动生成结构化sql语句的方法与其电子装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102073642A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103136263A (zh) * | 2011-11-23 | 2013-06-05 | 英业达股份有限公司 | 自动生成sql语句的方法 |
CN110019307A (zh) * | 2017-12-28 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 数据处理方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1459713A (zh) * | 2002-04-15 | 2003-12-03 | 住友电气工业株式会社 | 用于访问数据库的计算机程序的产品、记录介质以及方法 |
CN1556482A (zh) * | 2003-12-31 | 2004-12-22 | 中兴通讯股份有限公司 | 一种用于实现数据库多表查询的数据处理方法 |
CN101145162A (zh) * | 2007-10-31 | 2008-03-19 | 金蝶软件(中国)有限公司 | 一种数据库动态查询的方法和*** |
US20090024940A1 (en) * | 2007-07-18 | 2009-01-22 | Sas Institute Inc. | Systems And Methods For Generating A Database Query Using A Graphical User Interface |
CN101464862A (zh) * | 2007-12-21 | 2009-06-24 | 英业达股份有限公司 | 结构化查询语言生成***及方法 |
-
2009
- 2009-11-23 CN CN2009102219421A patent/CN102073642A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1459713A (zh) * | 2002-04-15 | 2003-12-03 | 住友电气工业株式会社 | 用于访问数据库的计算机程序的产品、记录介质以及方法 |
CN1556482A (zh) * | 2003-12-31 | 2004-12-22 | 中兴通讯股份有限公司 | 一种用于实现数据库多表查询的数据处理方法 |
US20090024940A1 (en) * | 2007-07-18 | 2009-01-22 | Sas Institute Inc. | Systems And Methods For Generating A Database Query Using A Graphical User Interface |
CN101145162A (zh) * | 2007-10-31 | 2008-03-19 | 金蝶软件(中国)有限公司 | 一种数据库动态查询的方法和*** |
CN101464862A (zh) * | 2007-12-21 | 2009-06-24 | 英业达股份有限公司 | 结构化查询语言生成***及方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103136263A (zh) * | 2011-11-23 | 2013-06-05 | 英业达股份有限公司 | 自动生成sql语句的方法 |
CN110019307A (zh) * | 2017-12-28 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 数据处理方法及装置 |
CN110019307B (zh) * | 2017-12-28 | 2023-09-01 | 阿里巴巴集团控股有限公司 | 数据处理方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102521416B (zh) | 数据关联查询方法和数据关联查询装置 | |
US20090125530A1 (en) | Hierarchy Nodes Derived Based on Parent/Child Foreign Key and/or Range Values on Parent Node | |
US8874619B2 (en) | Method and apparatus for defining common entity relationships | |
CN106649225A (zh) | 一种基于json自定义的报表生成***及方法 | |
US10296505B2 (en) | Framework for joining datasets | |
US20100191718A1 (en) | Complex relational database extraction system and method with perspective based dynamic data modeling | |
CN104750496B (zh) | 一种模型变更影响度自动检查方法 | |
CN101794315A (zh) | 一种数据库模式固定的对象关系映射模型 | |
Patel et al. | Data modeling techniques for data warehouse | |
CN103455335A (zh) | 一种多级分类的Web实现方法 | |
CN110968713B (zh) | Bim多尺度信息检索方法及装置 | |
CN109947741B (zh) | 一种物项属性参数的建模和存储方法 | |
CN108845942A (zh) | 产品特征管理方法、装置、***及存储介质 | |
JP2001014166A (ja) | オントロジー対応付け情報生成装置 | |
US20140143270A1 (en) | Generating dynamic drilldown reports | |
US20090228867A1 (en) | Methods for Configuring Software Package | |
CN111666456A (zh) | 一种基于多源配网网络的网架拓扑自动构建方法 | |
CN102360359A (zh) | 数据管理装置和数据管理方法 | |
CN102508971A (zh) | 概念设计阶段产品功能模型建立方法 | |
CN101297290B (zh) | 用于控制关系型数据库***的方法和设备 | |
CN102073642A (zh) | 自动生成结构化sql语句的方法与其电子装置 | |
CN101840427A (zh) | 数据处理的方法和装置 | |
Černjeka et al. | NoSQL document store translation to data vault based EDW | |
Schlitter et al. | DenGraph‐HO: a density‐based hierarchical graph clustering algorithm | |
CN101719159A (zh) | 一种数据管理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20110525 |