一种sql语句生成方法及系统的制作方法

文档序号:731928阅读:401来源:国知局

专利名称::一种sql语句生成方法及系统的制作方法
技术领域
:本发明涉数据库处理
技术领域
,尤其涉及一种SQL语句生成方法及系统。
背景技术
:随着计算机技术的迅速发展,数据库的相关应用越来越广泛。然而,当数据库累积的资料越来越多,数据的关联性日益复杂时,如何方便快速的对数据库进行查询和管理操作成为各企业厂商研究的重要课题,在此环境下,各种数据库的操作语言应运而生。SQL(StructuredQueryLanguage,结构化查询语言),是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。SQL是高级的非过程化编程语言,允许用户在高层数据结构上工作。具有完全不同底层结构的不同数据库系统可以使用相同的SQL语言作为数据输入与管理的接口。SQL语句具有极大的灵活性和强大的功能,在多数情况下,在其他语言中需要一大段程序实现的功能只需要一个SQL语句就可以达到目的。因此,SQL语句得到越来越广泛的应用。现有技术中,SQL语句的生成方法是由具有一定撰写经验的开发人员根据数据库实体,使用代码构建数据库内各表的关系,进行SQL语句的编写。发明人在实现本发明的过程中发现,这种人工编写SQL语句的方式效率过低,不能快速批量形成用于编程、业务应用、报表查询等环境所需要的SQL语句,严重阻碍了SQL语句的应用。
发明内容本发明实施例提供一种SQL语句生成方法及系统,能够快速批量生成SQL语句,提高效率。为了解决上述技术问题,本发明实施例的技术方案如下一种SQL语句生成方法,包括设置字段及表的描述表项;填充与所述描述表项对应的描述信息,生成lt据字典;根据所述数据字典及结构化查询语言SQL语句生成规则生成SQL语句。进一步,所述填充与所述描述表项对应的描述信息具体为根据数据实体录入与所述描述表项对应的表实体描述信息和字段实体描述信息;或者,导入外部数据源的描述信息并与所述描述表项对应。进一步,所述外部数据源包括数据库系统表、产品数据管理库、可扩展标记语言文件、EXCEL文件、资源文件。进一步,所述描述表项包括控制信息描述表项,所述与所述描述表项对应的描述信息包括控制信息。进一步,生成的所述SQL语句符合所述控制信息的要求。进一步,在所述生成数据字典之后,还包括在所述数据字典中选择数据库实体表;依据所述数据实体表之间的关系构建业务模型;所述根据所述数据字典及结构化查询语言SQL语句生成规则生成SQL语句,具体为根据所述业务模型及SQL语句生成规则生成SQL语句。一种SQL语句生成系统,包括设置单元,用于设置字段及表的描述表项;填充单元,用于填充与所述描述表项对应的描述信息,生成数据字典;生成单元,用于根据所述数据字典及结构化查询语言SQL语句生成规则生成SQL语句。进一步,所述填充单元,具体用于根据数据实体录入与所述描述表项对应的表实体描述—信息和字段实体描述信息,生成数据字典;或者,所述填充单元,具体用于导入外部数据源的描述信息并与所述描述表项对应,生成数据字典。进一步,所述描述表项包括控制信息描述表项,所述与所述描述表项对应的描述信息包括控制信息。进一步,所述SQL语句符合所述控制信息的要求。进一步,还包括选择单元,用于在所述数据字典中选择数据库实体表;构建单元,用于依据所述数据实体表之间的关系构建业务模型;所述生成单元,具体用于根据所述业务模型及SQL语句生成规则生成SQL语句。现有技术中,没有形成统一名称的描述表项,对数据库实体没有详细的描述信息,开发人员需要根据经验和一定的编写技巧逐条编写SQL语句,本发明实施例中,通过首先设置统一的描述表项,然后填充入描述信息,为实现该发明目的提供了可能,然后根据SQL语句生成规则,应用数据字典的信息套入SQL语句的冲莫板从而实现了自动快速,大批量的生成SQL语句,提高了SQL语句的编写效率。图1是本发明实施例一种SQL语句生成方法的流程图2是本发明实施例一的方法流程图3是本发明实施例二的方法流程图4是本发明实施例一种SQL语句生成系统的结构示意图5是本发明实施例另一种SQL语句生成系统的结构示意图。具体实施例方式为了使本领域技术人员能进一步了解本发明的特征及技术内容,请参阅以下有关本发明的详细说明与附图,附图仅提供参考与说明,并非用来限制本发明。下面结合附图和实施例,对本发明的技术方案进行描述。参照图1,为本发明实施例一种SQL语句生成方法的流程图。该方法可以包4舌步骤IOI,设置字段及表的描述表项。在本步骤中,通过设置字段描述表项和表描述表项,来统一对数据库实体的描述,为后续自动快速,成批量的生成SQL语句才是供条件。字段描述表项和表描述表项主要是一些名称的说明,其中,字段描述表项可以包括字段名称、表名称、字段类别、字段类型、字段长度、字段精度、是否允许为空,顺序号、默认值等。表描述表项可以包括表名称,表物理名称、表类别、是否为视图、是否内置表、主键字段设置、表选设置、表类型设置等,该描述表项可以根据对数据实体的所需操作进行具体设置,不局限于上述描述表项。步骤102,填充与所述描述表项对应的描述信息,生成数据字典。该填充描述信息可以有多种方式实现,例如直接功能录入或导入其它现有的描述信息等,具体请参照后续实施例。填充完成后形成的对应关系表即构成数据字典。'步骤103,根据所述数据字典及SQL语句生成规则生成SQL语句。在生成数据字典后,根据SQL语句生成规则可以将该数据字典中各表名及需要操作的描述表项,以及描述表项和描述信息的对应关系等,套入SQL语句的模板即可实现自动快速,批量生成对该数据字典进行操作的SQL语句。现有技术中,没有形成统一名称的描述表项,对数据库实体没有详细的描述信息,开发人员需要根据经验和一定的编写技巧逐条编写SQL语句,本发明实施例中,通过首先设置统一的描述表项,然后填充入描述信息,为实现该发明目的提供了可能,然后根据SQL语句生成规则,应用数据字典的信息套入SQL语句的模板从而实现了自动快速,大批量的生成SQL语句,提高了SQL语句的编写效率。下面通过具体的实施例说明SQL语句的生成方法。参照图2,为本发明实施例一的方法流程图。该方法可以包括步骤步骤201,设置字段描述表项,生成HRMS—Fields(字段信息描述表)。该字段描述表项用于描述数据库表字段信息。如表1所示为HRMS_Fidds表,该HRMS一Fields中包括字段信息描述表项,如字段名称、表名称、字段类别、字段类型、字段长度、字段精度、是否允许为空,顺序号、默认值等,也还可以包括字段的控制信息描述表项,如输入控件类型、是否锁定、是否内置、字段引用关系设置、视图引用关系设置、字段选项设置等。表l.HRMS—Fields:HRMS-Fields(字段信息描述表)字段IDuniqueidentifier字段名称rwarchar(50)字段系统名称nvarchar(50)数据类型nvarchar(50)字段长度int小数位数int表IDuniqueidentifier引用字段IDuniqueidentifier引用字段名称nvarchar(50)显示字段IDuniqueidentifier显示字段名称rw3rchsr(50)显示字段名称繁体nvarchar(50)显示字段名称英文nvarchar(50)公用代码类型IDuniqueidentifier引用表名称nv3rchar(50)引用表别名nvarchar(50)携带字段1nvarchar(50)携带字段2nvarchar(50)携带字段3nv3rch3「(50)允许为空bit系统顺序号int输入控件nvarchar(50)是否锁定bit是否内置bit步骤202,设置表描述表项,生成HRMS—Table(表信息描述表)。8该表描述表项用于描述数据库实体表信息。如表2所示为HRMS—Table表,该HRMS—Table表中包括表信息描述表项,如表名称,表物理名称、表类别、是否为视图、是否内置表、主键字段设置、表选设置、表类型设置等,也还可以包括表的控制信息描述表项,如是否允许新增字段、是否允许修改字段、是否为锁定表、是否为同构表等。以上步骤201和步骤202的顺序可以根据需要进行调整。表2.HRMS—Table:HRMSJTables(表信息描述)<table>tableseeoriginaldocumentpage9</column></row><table>步骤203,根据数据实体录入与所述描述表项对应的表实体描述信息和字段实体描述信息,生成数据字典。本实施例中的数据实体如表3表6所示,包括国家代码表、组织单元表、职位表、职员表。表3.国家代码表<table>tableseeoriginaldocumentpage10</column></row><table><table>tableseeoriginaldocumentpage11</column></row><table>以国家代码表为例,国家代码表中设置有国家ID、国家代码、国家名称及排序等字段。将该国家代码表中的表实体描述信息和字段实体描述信息分别录入HRMS—Table和HRMS—Fields中,组织单元表等其它表类似,录入后形成如表7、表8所示的HRMS—Table和HRMS—Fields,这两张记录有描述信息的数据库表即构成了数据字典。表7.HRMSTable:<table>tableseeoriginaldocumentpage11</column></row><table><table>tableseeoriginaldocumentpage12</column></row><table>B6319512-DBE1-45A3-98E3-1A2234EAFF2E国家IDIDuniqueidentifier16D039EDE1-DECE-43D9-8929-05F97B135E0D国家代码Codenvsrchar1004D73F72B-2687-4E90-99A8-6B2656232636国家名称N孤6nvarchar100992124BF-A888-48D0-9133-D891犯1A6A75排序Indexint8D302DC85-C7D4-43E1-9CB9-FD7B7ECD48C4组织单兀IDIDuniqueidentifier16EFEF6707-1BF6-4997-80B6-BD526A9158D2组织单元代码Codenvarchar100BAAF1212-7DD3-4139-87D3-2ADB1E22A31A组织单元名称Mamsnvarchar10023D3DF39-B5EE-4FBB-975D-84BD0047733C职位IDIDuniqueidentifier162E9C519D-F066-4B28-8113-59830D4EE730职位代码Codenvarchar10071734076-C4BF-42C7-8DF8-6A犯E803犯AC职位名称M咖6nvarchar100C9326C犯-B95B-4838-87CA-914EACA81535职员IDIDuniqueidentifier16CBB1DCBF-2673-45FD-B1AA-9C14BFB7D06E职员代码Codenvaichax100626D917F-69C3-4C31-A43D-21A2B3FDA197职员名称Itemsnvarchar2016E5F98F-A913-47C8-96FF-1A801719FF87性别Sexnvarchar103BB7EAAE-3B59-46C1-A3C6-84ABF7547ABB国家CountryIDuniqueidentifier1658CAC132-2093-4B2D-B115-47109201D7B9所在部门ORGUnitl—Duniqueidentifier16388564A3-2288-4DC9-A5CF-BE38040DE63E职位PositionIDuniqueidentifier16在本发明的另一实施例中,填充与所述描述表项对应的描述信息的过程也可以采用另一种方式,即直接导入外部数据源的描述信息并与所述描述表项对应,其中外部数据源可以包括数据库系统表、PDM(ProductDataManagement,产品数据管理)库、XML(ExtensibleMarkupLanguage,可扩展标记语言)文件、EXCEL文件、资源文件等。这些都是构建数据字典的描述外部导入资源,是一种结构化的描述数据库或文件,这种外部导入资源中13可以有对数据库表、字段实体的描述,通过外部资源的导入,可以快速构建数据字典的表、字段描述。步骤204,根据数据字典及SQL语句生成规则生成SQL语句。如果步骤201和步骤202中设定的字段及表的描述表项中包括控制信息描述表项,则与描述表项对应的描述信息中也就包括控制信息,那么在本步骤中生成的所述SQL语句需要符合控制信息的要求,如是否锁定。本步骤中,还可以对SQL语句的种类进行区分,根据选择的SQL语句的种类生成对应的SQL语句。该种类可以包括构建数据字典描述SQL和构建数据实体SQL,其中,构建数据字典描述SQL可以包括表类别(新增、修改、删除)SQL、字段类别(新增、修改、删除)SQL、数据字典(完整新增、修改、删除)SQL、表属性(新增、修改、删除)SQL、字段属性(新增、修改、删除)SQL等;构建数据实体SQL可以包括表物理结构(完整新增、修改、删除)SQL、字段物理结构(新增、修改、删除)SQL、表主键SQL、表索引SQL等。举例说明本实施例中生成的SQL语句-清除表的主键信息UpdateHRMS—TablesSetPrimaryKeyID=NullWhereID=,{7A772099-0CEE-4D1A-8EC9-475AC46986A5}'GO--清除字段引用关系UpdateHRMS—FieldsSetRefFieldID=NullWhereTablelD^(7A772099-0CEE-4DlA隱8EC9-475AC46986A5yGO-清除显示字段引用关系UpdateHRMS—FieldsSetRefShowFieldID=NullWhereTableID=,{7A772099-0CEE-4D1A-8EC9-475AC46986A5}'GO14创建[国家代码表-HR—WorldStatus]CREATETABLE[HMEM—WorldStatus—Code](uniqueidentifierNOTNULL,[nvarchar](lOO)NOTNULL,[nvarchar](腦)NULL,[int]NULL)本实施例实现了自动快速,大批量的生成SQL语句,提高了SQL语句的编写效率。对于数据库实体中包含多个数据表,且各数据表具有一定的相关性的情况,还可以根据各数据表建立业务模型,生成对业务模型操作的SQL语句。下面通过具体的实施例进行说明。参照图3,为本发明实施例二的方法流程图。该方法可以包括步骤步骤301,生成数据字典。该步骤与前述实施例的相应步骤类似,此处不再赘述。步骤302,在所述数据字典中选择数据库实体表。仍以前述是实例中的各数据表为例,国家代码表、组织单元表、职位表、职员表之间具有一定的对应关系。_步骤303,依据所述数据实体表之间的关系构建业务模型。一个业务模型可能是一张数据实体表如"民族"的业务模型,可能就由一张"民族表"的数据库实体构成;也可能由多张数据库表实体构成,这些数据表实体,有一张主表,可能还有一张或多张从表和辅助表;如"员工工资数据,,的业务模型,主表"员工工资数据表",从表"工资期间表"、"员工表",辅助表"学历表","银行表","员工类别表",主要用于查询和辅助过滤分组等。本步骤中,首先,以前述实施例中的职员表作为主表,形成该表的HR业务实体表HR—Base_Model,其中该表的描述信息可以包括业务模型ID、业务模型名称、业务模型描述、主表描述、顺序号等,如表9所示。表9.HRBase—Model:<table>tableseeoriginaldocumentpage16</column></row><table>然后,通过HR业务表HR—Base—Table来设置业务模型中包含哪些表和字段,该表的描述信息如表10所示。表10.HR—Base—Table:<table>tableseeoriginaldocumentpage16</column></row><table>-4042-ABCA--4DCC-9EDC--43BF-B725--446F-AD4C-5DBA3476F55F396CFCF00F5E9D758FD107567672FFB3B610最后、通过HR业务表关联信息表HR—Base—Reference,表明职员表与国家代码表、组织单元表、职位表之间的主从关系,该表的描述信息如表ll所示。表11.HRBaseReference:业务表父表字段ID父表字段子表字段ID子表字段BusiTableIDPaxentFieldIDParentFieldChildFieldIDChildField14053AEC-798E-44A2-87ED-368025AA2D65犯B7EAAE-3B59-46C1-A3C6-84ABF7547ABBCountryIDB6319512-DBE1-45A3-98E3-1A2234EAFF2E1D0F003600-A8E9-493C-B82E-3814837D3A7558CAC132-2093-4B2D-B115-47109201D7B9ORGUnitIDD302DC85-C7D4-43E1-9CB9-FD7B7ECD48C41D91546925-F60D-4042-ABCA-5DBA3476F55F388564A3-2288-4DC9-A5CF-BE38040DE6犯PositionID23D3DF39-B5EE-4FBB-975D-84BD0047733CID本步骤中,通过上述三个表HR—Base—Model、HR—Base—Table、HR—Base—Reference即表示出了各数据表实体之间的关联关系。步骤304,根据所述业务模型及SQL语句生成规则生成SQL语句。通过将业务模型中三个表的描述信息根据SQL语句生成规则套入SQL语句生成模板中即可生成SQL语句,生成的语句用于对业务模型及业务对象等进行操作。本步骤中,也还可以对SQL语句的种类进行区分,根据选择的SQL语句的种类生成对应的SQL语句。该种类可以包括构建业务^f莫型描述SQL和构建业务数据SQL。其中,构建业务模型描述SQL可以包括业务模型(新增、修改、删除)SQL等。构建业务数据SQL可以包括业务对象(取数、查询过滤)SQL,业务对象主表数据(新增、修改、删除、级^:删除)SQL、业务对象从表(新增、修改、删除)SQL等。举例说明本实施例中生成的SQL语句职员业务模型,数据查询SQL:SelectHR—Employee.ID,HR—Employee.Code,HR—Employee.Name,HR—Employee.Sex,ORG—Unit.CodeasOrgUnitCode,ORG—Unit.NameasOrgUnitName,ORG—Position.CodeasPositionCode,ORG—Position.NameasPositionName,HR一WorldStatus.NameasCountryNameFromHR—EmployeeInnerjoinORG—UnitonHR—Employee.ORGUnitID=ORG—Unit.IDInnerjoinORG—PositiononHR—Employee.PositionID=ORG—Position.IDInnerjoinHR—WorldStatusonHR—Employee.CountryID=HR—WorldStatus.ID本实施例实现了自动快速,大批量的生成对业务模型操作的SQL语句,提高了SQL语句的编写效率。以上对生成SQL语句的方法进行了描述,下面对该方法对应的系统进行介绍。参照图4,为本发明实施例一种SQL语句生成系统的结构示意图。该系统可以包括设置单元401、填充单元402和生成单元403。设置单元401,用于设置字段及表的描述表项。填充单元402,用于填充与所述描述表项对应的描述信息,生成数据字典。生成单元403,用于根据所述数据字典及结构化查询语言SQL语句生成规则生成SQL语句。18设置单元401设置字段的描述表项和表的描述表项,以统一对数据库实体的描述,然后由填充单元402填充与设置单元401设置的描述表项对应的描述信息,从而生成数据字典。再由生成单元403根据该数据字典及SQL语句生成规则生成SQL语句。其中,设置单元401设置的字段和表的描述表项中还可以包括控制信息描述表项,对应的,填充单元402填充的描述信息也可以包括控制信息,生成的SQL语句符合该控制信息的要求。本实施例中通过上述设置单元401设置统一的描述表项,然后由填充单元402填充入描述信息,为实现该发明目的纟是供了可能,然后由生成单元403根据SQL语句生成规则,应用数据字典的信息套入SQL语句的模板从而实现了自动快速,大批量的生成SQL语句,提高了SQL语句的编写效率。在本发明的另一实施例中,填充单元401可以根据数据实体录入与所述描述表项对应的表实体描述信息和字段实体描述信息,生成数据字典。填充单元401也可以通过导入外部数据源的描述信息并与所述描述表项对应,生成数据字典。参照图5,为本发明实施例另一种SQL语句生成系统的结构示意图。本实施例中,该系统除了包括设置单元501、填充单元502和生成单元503之外,还可以包括选择单元504和构建单元505。其中,设置单元501和填充单元502与前述实施例类似,此处不再赘述。选择单元504,用于在所述数据字典中选择数据库实体表。构建单元505,用于依据所述数据实体表之间的关系构建业务模型。生成单元503在本实施例中具体用于才艮据所述业务4莫型及SQL语句生成规则生成SQL语句。在填充单元502生成数据字典后,进一步由选择单元504和构建单元505构建业务;f莫型,再由生成单元503生成对该业务^^莫型操作的SQL语句。本实施例实现了自动快速,大批量的生成对业务^^莫型操作的SQL语句,提高了SQL语句的编写效率。以上系统中各单元的具体实现过程请参照前述方法实施例中的相应描述,此处不再赘述。以上所述的本发明实施方式,并不构成对本发明保护范围的限定。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明的权利要求保护范围之内。权利要求1、一种SQL语句生成方法,其特征在于,包括设置字段及表的描述表项;填充与所述描述表项对应的描述信息,生成数据字典;根据所述数据字典及结构化查询语言SQL语句生成规则生成SQL语句。2、根据权利要求1所述的方法,其特征在于,所述填充与所述描述表项对应的描述信息具体为根据数据实体录入与所述描述表项对应的表实体描述信息和字段实体描述信息;或者,导入外部数据源的描述信息并与所述描述表项对应。3、根据权利要求2所述的方法,其特征在于,所述外部数据源包括数据库系统表、产品数据管理库、可扩展标记语言文件、EXCEL文件、资源文件。4、根据权利要求1至3中任意一项所述的方法,其特征在于,所述描述表项包括控制信息描述表项,所述与所述描述表项对应的描述信息包括控制信息。5、根据权利要求4所述的方法,其特征在于,生成的所述SQL语句符合所述控制信息的要求。6、根据权利要求1至3中任意一项所述的方法,其特征在于,在所述生成数据字典之后,还包括在所述数据字典中选择数据库实体表;依据所述数据实体表之间的关系构建业务模型;所述根据所述数据字典及结构化查询语言SQL语句生成规则生成SQL语句,具体为根据所述业务模型及SQL语句生成规则生成SQL语句。7、一种SQL语句生成系统,其特征在于,包括设置单元,用于设置字段及表的描述表项;填充单元,用于填充与所述描述表项对应的描述信息,生成数据字典;生成单元,用于根据所述数据字典及结构化查询语言SQL语句生成规则生成SQL语句。8、根据权利要求7所述的系统,其特征在于,所述填充单元,具体用于根据数据实体录入与所述描述表项对应的表实体描述信息和字段实体描述信息,生成数据字典;或者,所述填充单元,具体用于导入外部数据源的描述信息并与所述描述表项对应,生成数据字典。9、根据权利要求7或8所述的系统,其特征在于,所述描述表项包括控制信息描述表项,所述与所述描述表项对应的描述信息包括控制信息。10、根据权利要求9所述的系统,其特征在于,所述SQL语句符合所述控制信息的要求。11、根据权利要求7或8所述的系统,其特征在于,还包括选择单元,用于在所述数据字典中选择数据库实体表;构建单元,用于依据所述数据实体表之间的关系构建业务模型;所述生成单元,具体用于根据所述业务模型及SQL语句生成规则生成SQL语句。全文摘要本发明提供一种SQL语句生成方法及系统。一种SQL语句生成方法,包括设置字段及表的描述表项;填充与所述描述表项对应的描述信息,生成数据字典;根据所述数据字典及结构化查询语言SQL语句生成规则生成SQL语句。本发明实施例中,通过首先设置统一的描述表项,然后填充入描述信息,为实现该发明目的提供了可能,然后根据SQL语句生成规则,应用数据字典的信息套入SQL语句的模板从而实现了自动快速,大批量的生成SQL语句,提高了SQL语句的编写效率。文档编号G06F17/30GK101673287SQ20091017833公开日2010年3月17日申请日期2009年10月16日优先权日2009年10月16日发明者俊邹申请人:金蝶软件(中国)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1