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,并自动在模型中找到了对应的字段,将其中文名称匹配出来了:
单记录属性列表
表格的右上角有个“显示内容面板”的小按钮,点一下会显示一个属性列表,方便查看单一记录:
表格与属性列表是联动的,点击表格的任一单元格,记录属性都会相应变化,反之亦然:
语法高亮和自动完成
从3.56版起,SQL工具支持语法高亮和自动完成提示,比如提示表名:
提示字段名:
注:如果连接了数据库,且右边的对象列表有列出表名,则可以同时对数据库中的表字段进行提示。
格式化
支持简单的SQL格式化,如上述SQL格式化的结果:
数据编辑
表格和表单都支持数据编辑,编辑完后切换一下记录就可以直接提交:
多行文本查看编辑
有些字段(如备注)可能会需要输入多行,这时可以在单元格上点右键,执行弹出菜单命令“查看/修改值”:
会弹出个输入框,比如我们输入几行内容:
确定后修改结果会显示,但不完整:
当然可以再次右键“查看/修改值”弹出来看,但如果有很多单元格要查看编辑,一个个点开就很麻烦,这时我们可以再次点击右上角的“显示内容面板”的小按钮(重复点击会切换各内容面板的显示/隐藏),界面会切换为显示单个字段,我们可以直接在这里查看/编辑:
模型表数据查看
前面我们是从数据库里拉表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’)
复制记录——复制当前记录的所有字段+值
示例复制结果:
1
2
3
4
5
6
7
8
9
10
11
12
13id: 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为例,复制结果如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29insert 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语句(所有记录)——这个生成格式跟上面差不多,只不过是循环遍历所有记录,相当于是导出整个表格了
示例结果太长,就不贴上来了。
复制为update语句(当前记录)——这个是V3.52版增加的功能,复制结果示例如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14update sp_bom set
bom_code = 'bbbbb',
materiel_code = 't002',
materiel_desc = 't002',
remark = null,
version_number = '1',
state = null,
factory = null,
is_deleted = '0',
create_time = to_date('2020-06-04 15:39:07','yyyy-mm-dd HH24:mi:ss'),
create_username = 'admin',
update_time = to_date('2020-07-16 11:17:20','yyyy-mm-dd HH24:mi:ss'),
update_username = 'admin'
where id = '1268447170115383298';复制为update语句(所有记录)——循环遍历所有记录生成update SQL然后拼一起,具体结果略。
复制为JSON语句(当前记录)——这个是V3.53版增加的功能,复制结果示例如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15{
"id": "1268447170115383298",
"bom_code": "bbbbb",
"materiel_code": "t002",
"materiel_desc": "t002",
"remark": "",
"version_number": "1",
"state": null,
"factory": null,
"is_deleted": "0",
"create_time": "2020-06-04 15:39:07",
"create_username": "admin",
"update_time": "2020-07-16 11:17:20",
"update_username": "admin"
}复制为JSON(所有记录)——循环遍历所有记录生成JSON然后拼一起形成一个JSON列表,具体结果略。
复制列——嗯,就是字面上的意思
示例结果:
1
2
3
4
5
6
7
8
9
10
11
12
13
14bbbbb
0001
测试
打算
阿斯顿发送到
77
001
A0001
Y001
dc001
11111
001
333
111222333复制全部——这个是方便复制到EXCEL
示例结果:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19id 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
粘贴结果
从3.56版起,SQL工具支持粘贴EXCEL和JSON结果,具有简单的导入导出功能。
EXCEL粘贴会对准当前单元格进行区块覆盖,JSON则是对字段名进行匹配导入。
特别说明
EZDML自带的SQL工具本身设计是用来执行DDL生成数据库的,查询数据只是顺便附送的功能,不支持事务,每次执行SQL都会COMMIT(直接通过表格修改数据可能需要手工执行COMMIT),因此不要在这里作复杂的事务操作。
另外工具比较简单粗糙,用它来执行insert update 粘贴导入等操作有可能会导致数据丢失,建议只用来查看数据。如确实要修改数据,请做好数据备份工作。
使用本工具导致任何损失作者均不承担任何责任!