如何以图形方式表示 SQL 查询

Posted

技术标签:

【中文标题】如何以图形方式表示 SQL 查询【英文标题】:How to represent an SQL query graphically 【发布时间】:2017-01-07 00:04:45 【问题描述】:

我有一个 SQL Select 查询,表之间有许多连接,我想知道哪种图表可以以图形方式表示它,以便可视化表之间的连接及其类型(区分 INNER 和 LEFT)?

我使用这个简单的模式来表示我的查询,但我正在寻找一种已知且更好的图表类型:

【问题讨论】:

【参考方案1】:

我相信您正在寻找的是Entity Relationship Diagram 的变体,其中不同的行尾表示关系类型。在构建数据库时,我相信这种类型的模型是最常见且易于理解的。

【讨论】:

我想过使用那个,但我想要一些可以直接表示连接的东西,而不仅仅是呈现表之间的关系【参考方案2】:

您可以对实体关系图使用乌鸦脚符号,您可以在其中指定关系(一对多,一对一)以及可选性(实体 A 恰好具有实体 B 之一或实体 A 具有实体 B 的 0 或 1)。在您的情况下,可选性可能代表您需要执行的连接类型。为什么您需要在 ERD 中指定连接类型?

【讨论】:

实际上这是一个直接用于报告的 BI 查询,在我的案例中,连接类型非常重要 鱼尾纹可能代表我所说的具有可选性的连接类型,检查一下。【参考方案3】:

我很困惑为什么这不是已经存在的东西,更令人困惑的是为什么更多的开发人员没有尖叫着要求这个。不可否认地需要动态创建的 sql 查询的可视化表示。如果没有使用“AsecRemFortsKilnNumAttr”之类的名称混淆其业务表示的列名,那么试图理解一个 300 行的 sql 过程就足够困难了。

如果一个过程中有数百个列具有这样的名称,但略有不同,例如“AsecRemAgsKilnNumAttr”和“AsecRemFortsKilnNumV”,那么这项任务是不可能的。

无论如何,这是我找到的一对:-

https://sqldep.com/sql-parser/

http://queryviz.com/

https://sourceforge.net/projects/revj/

最后一个包含一个 Python 实用程序,如果您知道如何改进和扩展,您可以使用它。

除此之外,唯一可能允许您查找的工具是 Informatica Developer 10,它允许您从导入的 sql 查询创建映射。

【讨论】:

以上是关于如何以图形方式表示 SQL 查询的主要内容,如果未能解决你的问题,请参考以下文章

使用 C++ 使用 openGL 以图形方式表示堆积条形图

如何以编程方式将 HQL 转换为 SQL 查询(不记录)

如何以输出生成“创建表语句”的方式格式化 Oracle SQL 查询?

sql如何按日期中的月份查询

如何以干净且可维护的方式编写非常复杂的 SQL? [关闭]

sql表中如何表示大于0小于100?