EZDML自带了一个SQL查询工具,当然它比较简单,不能代替我们常用的开发工具,但在救急时也能当个临时工,同时它跟模型结合来做一些数据查询操作也非常方便。接下来我们以之前导入过的MES模型为例简单介绍一下。
以下内容使用EZDML 3.48版进行说明。
SQL工具基本使用
打开之前导入的章鱼师兄的MES(生产制造管理系统)数据模型(参见《EZDML逆向工程导入数据库分析实操教程》),执行主菜单“工具|SQL工具”命令,并连接数据库:
连接后,右边会显示对象列表:
SQL工具顾名思义就是输入SQL执行获取结果的工具。当然你可以手工输入SQL执行,不过其实没必要装这个X,我们选中sp_bom,右键查询就好:
EZDML会自动生成表的查询select SQL,其中记录行数限制25,这个25可以在菜单“工具|设置|SQL生成|预览表数据”中修改。
可以看到,虽然SQL中没有输入中文逻辑名,但结果展示时列头上仍然会有中文名,这是因为EZDML分析出了表名sp_bom,并自动在模型中找到了对应的字段,将其中文名称匹配出来了:
单记录属性列表
表格的右上角有个“显示内容面板”的小按钮,点一下会显示一个属性列表,方便查看单一记录:
表格与属性列表是联动的,点击表格的任一单元格,记录属性都会相应变化,反之亦然:
数据编辑
表格和表单都支持数据编辑,编辑完后切换一下记录就可以直接提交:
多行文本查看编辑
有些字段(如备注)可能会需要输入多行,这时可以在单元格上点右键,执行弹出菜单命令“查看/修改值”:
会弹出个输入框,比如我们输入几行内容:
确定后修改结果会显示,但不完整:
当然可以再次右键“查看/修改值”弹出来看,但如果有很多单元格要查看编辑,一个个点开就很麻烦,这时我们可以再次点击右上角的“显示内容面板”的小按钮(重复点击会切换各内容面板的显示/隐藏),界面会切换为显示单个字段,我们可以直接在这里查看/编辑:
模型表数据查看
前面我们是从数据库里拉表SQL出来查看,但其实不需要这么麻烦,如果表已经在模型里了,双击模型中的表就可以查看,比如还是sp_bom这个表,我们在模型中双击打开它的属性:
然后我们切换到“数据”页;默认可能没有显示数据查看页,我们点击右上角的下拉菜单中的“数据”,即可查看数据(数据库需要预先连接):
同样可以切换显示单记录属性列表:
查询关联表数据
由于我们已经在模型里建立表对象之间的关系,因此SQL工具中可以轻松地查询关联表的数据。比如我们在sp_bom的数据结果中选中一个单元格,右键弹出菜单,其中“查询关联表”的下面,会针对当前记录列出所有关联表的查询条件:
点击其中一个条件后,弹出新的SQL工具界面,自动执行相应的SQL,显示相关结果:
重点来了,在这个新的SQL工具里,我们仍然可以右键查询当前SQL记录的关联表数据:
这样就可以一直玩下去了。
复制结果
除了字段数据本身,SQL工具还可以复制很多内容,大家在右键菜单里也看到了,以下图为例,可以复制以下内容:
-
字段名 = 字段值——其实就是以当前选中单元格内容作为SQL的where过滤条件来复制了,只是为了方便我们写SQL
示例复制结果:bom_code = 'bbbbb'
这个例子举得不太好,因为复制字符串值其实没什么意义,有时手敲更快;但复制日期就比较有用了,如:
create_time = STR_TO_DATE('2020-6-4 15:39:07','%Y-%m-%d %H:%i:%s')
-
复制记录——复制当前记录的所有字段+值
示例复制结果:
id: 1268447170115383298 bom_code: bbbbb materiel_code: t002 materiel_desc: t002 remark: version_number: 1 state: factory: is_deleted: 0 create_time: 2020/6/4 15:39:07 create_username: admin update_time: 2020/7/16 11:17:20 update_username: admin 复制代码
-
复制为insert语句(当前记录)——会弹出选择数据库类型,然后生成当前记录的insert语句
以MYSQL为例,复制结果如下:
insert into sp_bom( id, bom_code, materiel_code, materiel_desc, remark, version_number, state, factory, is_deleted, create_time, create_username, update_time, update_username ) values ( '1268447170115383298', 'bbbbb', 't002', 't002', null, '1', null, null, '0', STR_TO_DATE('2020-06-04 15:39:07','%Y-%m-%d %H:%i:%s'), 'admin', STR_TO_DATE('2020-07-16 11:17:20','%Y-%m-%d %H:%i:%s'), 'admin' ); 复制代码
-
复制为insert语句(所有记录)——这个生成格式跟上面差不多,只不过是循环遍历所有记录,相当于是导出整个表格了
示例结果太长,就不贴上来了。
-
复制列——嗯,就是字面上的意思
示例结果:
bbbbb 0001 测试 打算 阿斯顿发送到 77 001 A0001 Y001 dc001 11111 001 333 111222333 复制代码
-
复制全部——这个是方便复制到EXCEL
示例结果:
id bom_code materiel_code materiel_desc remark version_number state factory is_deleted create_time create_username update_time update_username 1268447170115383298 bbbbb t002 t002 1 0 2020/6/4 15:39:07 admin 2020/7/16 11:17:20 admin 1268811409925582850 0001 2019001 电子元件 1 0 2020/6/5 15:46:28 admin 2020/7/16 13:30:08 admin 1270189758686146562 测试 123 123 1 EzDml是一款国产免费的轻量级数据建模工具 2 它具有轻巧、快速、简便而功能强大的特点 3 可轻松地进行数据库表结构设计 4 建立界面数据模型 5 支持通过自定义脚本模板生成测试数据、界面原型和前后端代码文件 1 0 2020/6/9 11:03:32 admin 2020/7/4 15:32:47 admin 1272019534564536322 打算 123 123 1 2 2020/6/14 12:14:25 admin 2020/7/9 15:10:38 admin 1272783744282112002 阿斯顿发送到 t002 t002 1 0 2020/6/16 14:51:06 admin 2020/6/16 14:51:06 admin 1276415594372247554 77 123 123 1 0 2020/6/26 15:22:47 admin 2020/7/8 15:30:46 admin 1276535719725346818 001 123 123 1 0 2020/6/26 23:20:07 admin 2020/6/26 23:20:07 admin 1277125952237973506 A0001 t002 t002 1 0 2020/6/28 14:25:30 admin 2020/6/28 14:25:30 admin 1277599659653836802 Y001 Y001 Y001 1 0 2020/6/29 21:47:50 admin 2020/6/29 21:47:50 admin 1278528374608998401 dc001 Y001 Y001 Hello123 1 0 2020/7/2 11:18:13 admin 2020/7/2 11:18:13 admin 1280124062753075202 11111 002-2918 曲轴 11111 1 0 2020/7/6 20:58:55 admin 2020/7/6 20:58:55 admin 1281490436289179649 001 002-2918 曲轴 1 0 2020/7/10 15:28:24 admin 2020/7/10 15:28:24 admin 1283634934423203842 333 2019001 电子元件 1 0 2020/7/16 13:29:52 admin 2020/7/16 13:29:52 admin 1548645269971750914 111222333 000001 成品测试 huz测试2022 0 2022/7/17 12:26:19 admin 2022/7/17 12:26:19 admin 复制代码
特别说明
EZDML自带的SQL工具本身设计是用来执行DDL生成数据库的,查询数据只是顺便附送的功能,不支持事务,每次执行SQL都会COMMIT(直接通过表格修改数据可能需要手工执行COMMIT),因此不要在这里作复杂的事务操作。另外工具比较简单粗糙,用它来执行insert update等操作有可能会导致数据丢失,建议只用来查看数据。