本发明涉及计算机,尤其涉及一种sql语句生成方法、装置、设备及介质。
背景技术:
::1、现有的一些业务项目管理中,经常涉及到对数据库数据的处理,例如存取数据以及查询、更新和管理数据库等,这些数据处理逻辑都需要通过sql(structured querylanguage,结构化查询语言)语句来实现,需要开发人员了解业务需求,当有新的业务需求时,就需要重新编写对应的sql语句来实现对应的逻辑,不仅需要专门的开发人员手动编写大量的sql语句,还会面临编译报错的现象,导致sql语句的编写效率低下。2、以电子病历emr数据为例,emr数据是医院中最具有价值的数据,它包含医院诊断治疗全过程的原始记录,可以为医护人员提供最全面的病人临床诊疗信息,因此emr的数据需求越来越多。但是,目前emr数据查询工具大部分都是面向明细数据,对于需要聚合的统计数据,只能支持单表查询,无法自动的进行跨表查询,所以支撑不了医院业务强相关的聚合统计。自主数据开发对于医务人员的门槛太高,导致医务人员需要数据工程师来辅助进行数据统计和分析,而数据工程师的工作效率影响了数据使用的体验,而且需求沟通和检验口径是否一致也会耗费额外的时间成本,使得医务人员无法便捷的得到想要的数据结果,影响emr数据的有效利用。3、发明人意识到,目前,sql语句需要由开发人员手动书写,人工成本高且效率低。因此需要一种能够自动生成sql语句的方法。技术实现思路1、本发明提供一种人工智能的sql语句生成方法、装置、计算机设备及介质,以解决由开发人员手动书写sql语句人工成本高且效率低的的技术问题。2、第一方面,提供了一种sql语句生成方法,包括:3、当接收到结构化查询语言sql语句创建指令时,生成并显示sql语句编辑界面,其中,所述sql语句编辑界面包括查询字段编辑区和查询条件编辑区,所述查询字段编辑区包括多个查询字段输入框,所述查询条件编辑区包括多个查询条件输入框;4、接收基于所述查询字段编辑区接收的查询字段和基于所述查询条件编辑区接收的查询条件;5、基于所述查询字段,根据预设语法规则在缓存区域中生成sql语句对应的查询语句select;6、基于所述查询条件,根据预设语法规则在缓存区中生成sql语句对应的过滤条件语句where;7、基于所述查询字段和所述查询条件,根据预设语法规则在缓存区生成sql语句对应的表结构语句from;8、重复执行上述步骤,直至接收到基于所述sql语句编辑界面发送的编辑完成指令,组合缓存区域中所述查询语句select、所述过滤条件语句where和所述表结构语句from生成目标sql语句。9、在上述方案中,所述查询字段包括列结构、聚合函数、窗口函数,所述列结构代表要选择的列信息,所述聚合函数代表统计函数,所述窗口函数包括窗口分组、窗口的排序和取前几行和取后几行。10、在上述方案中,所述基于所述查询条件,根据预设语法规则在缓存区中生成sql语句对应的过滤条件语句where,包括:11、根据所述查询条件,确定所述查询条件是一条单独的条件或者是多个条件组合;12、如果所述查询条件是一条单独的条件,则基于预设的但条件结构,生成基于所述查询条件的所述过滤条件语句where;13、如果所述查询条件是多个条件组合,则基于预设的条件树结构,生成基于所述查询条件的所述过滤条件语句where。14、在上述方案中,所述基于所述查询条件,根据预设语法规则在缓存区中生成sql语句对应的过滤条件语句where,还包括:15、根据所述查询条件的标记符,确定所述过滤条件语句where在所述目标sql语句中的位置。16、在上述方案中,所述基于所述查询字段和所述查询条件,根据预设语法规则在缓存区生成sql语句对应的表结构语句from包括:17、根据所述查询字段中的列,找到对应的表集合,记为query tables;18、根据所述查询条件中的列,找到对应的表集合,记为condition tables;19、确定查询条件中跨表的条件对应的表集合,找到表集合构建的子树,加入到querytables,组成from的表集合,记为from tables;20、确定所有嵌套子查询所包含的所有表集合,记为child tables;21、确定child tables的根表记为table t,加入到from tables,记为main tables;22、如果是本级表关联,则根据from tables生成表结构语句from;23、如果是嵌套表关联,则根据嵌套子查询生成自动from语句。24、在上述方案中,所述根据嵌套子查询生成自动from语句,包括:25、找到child tables中所有表的主键key,添加到嵌套子查询的查询字段中,并取别名为“表名_pid”;26、用嵌套子查询与main tables的表交集来生成关联;27、生成嵌套子查询俩俩之间的关联,用生成主键的交集进行关联。28、在上述方案中,所述基于所述查询条件,根据预设语法规则在缓存区中生成sql语句对应的过滤条件语句where,还包括:29、当所述查询条件是跨表查询,则所述查询条件是子查询条件,将所述查询条件当成关联,加入到from tables里面;30、当所述查询条件是单查询,这个表不存在from tables里面,这个表的祖先节点存在from tables里面,则需要构建子查询。31、第二方面,提供了一种sql语句生成装置,包括:32、编辑界面,用于当接收到结构化查询语言sql语句创建指令时,生成并显示sql语句编辑界面,其中,所述sql语句编辑界面包括查询字段编辑区和查询条件编辑区,所述查询字段编辑区包括多个查询字段输入框,所述查询条件编辑区包括多个查询条件输入框;33、接收模块,用于接收基于所述查询字段编辑区接收的查询字段和基于所述查询条件编辑区接收的查询条件;34、select模块,用于基于所述查询字段,根据预设语法规则在缓存区域中生成sql语句对应的查询语句select;35、where模块,用于基于所述查询条件,根据预设语法规则在缓存区中生成sql语句对应的过滤条件语句where;36、from模块,用于基于所述查询字段和所述查询条件,根据预设语法规则在缓存区生成sql语句对应的表结构语句from;37、生成模块,用于重复执行上述步骤,直至接收到基于所述sql语句编辑界面发送的编辑完成指令,组合缓存区域中所述查询语句select、所述过滤条件语句where和所述表结构语句from生成目标sql语句。38、第三方面,提供了一种计算机设备,包括存储器、处理器以及存储在存储器中并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述sql语句生成方法的步骤。39、第四方面,提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现上述sql语句生成方法的步骤。40、上述sql语句生成方法、装置、计算机设备及存储介质所实现的方案中,可以通过当接收到结构化查询语言sql语句创建指令时,生成并显示sql语句编辑界面,其中,所述sql语句编辑界面包括查询字段编辑区和查询条件编辑区,所述查询字段编辑区包括多个查询字段输入框,所述查询条件编辑区包括多个查询条件输入框;接收基于所述查询字段编辑区接收的查询字段和基于所述查询条件编辑区接收的查询条件;基于所述查询字段,根据预设语法规则在缓存区域中生成sql语句对应的查询语句select;基于所述查询条件,根据预设语法规则在缓存区中生成sql语句对应的过滤条件语句where;基于所述查询字段和所述查询条件,根据预设语法规则在缓存区生成sql语句对应的表结构语句from;重复执行上述步骤,直至接收到基于所述sql语句编辑界面发送的编辑完成指令,组合缓存区域中所述查询语句select、所述过滤条件语句where和所述表结构语句from生成目标sql语句。在本发明中,通过构建sql语法树的数据对象,利用emr的树状表间关系的结构特征,生成自动关联和子查询,再拼接为可执行的sql语句。提供便捷的界面式查询方式,为医务人员提供更便捷的emr数据查询方式,降低了emr数据查询的技术门槛,提高emr数据使用效率,消除数据计算中的口径不一致误差,最大化emr数据的使用价值。当前第1页12当前第1页12