Show HN: 图形化 SQL 构建器与调试器

Hacker News Top 工具

摘要

SQL Joiner 是一个用于 MySQL 的可视化 SQL 查询构建器,允许您通过将表拖拽到画布上来构建 SELECT 查询,支持连接、子查询和导入现有 SQL。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/06/24 07:51

webofmarius/SQLJoiner

来源: https://github.com/webofmarius/SQLJoiner

SQL Joiner

一个面向 MySQL 的可视化 SQL 查询构建器。

通过将表拖拽到画布上、使用连接线关联它们并设置条件来构建 SELECT 查询——全程无需手写 SQL。

SQL Joiner 截图

特性

  • 可视化画布 — 从侧边栏将表拖到画布上,然后在列之间绘制连接线
  • 连接类型 — INNER、LEFT、RIGHT、FULL OUTER、CROSS
  • SELECT 构建器 — 可视化选择列,或切换为原始 SQL 模式;支持列别名、DISTINCT、自定义表达式和字母排序
  • WHERE / GROUP BY / HAVING / ORDER BY — 每个子句均可使用可视化或原始 SQL 模式
  • 子查询 — 在画布上将子查询添加为命名表
  • 导入 SQL粘贴现有查询以在画布上逆向工程
  • 上下文 — 保存和恢复画布状态(表、连接、条件)
  • 笔记 — 为上下文附加自由格式的笔记
  • 连接配置 — 存储多个 MySQL 连接配置;可在顶部栏中切换
  • 查询取消 — 执行中可取消运行中的查询
  • 结果网格 — 分页结果,支持复制到剪贴板
  • 画布搜索 — 查找表、别名、连接或孤岛标签

技术栈

技术
桌面外壳Electron(可选
后端PHP(内置 CLI 服务器)
前端原生 JS + Canvas API

环境要求

  • PHP 8+ — 必需(唯一硬性依赖)
  • Node.js + Electron — 可选,仅当需要桌面应用封装或构建安装程序时需要
  • 打包后的应用: PHP 二进制文件已捆绑(Windows 和 Mac 版本包含在 php-bin/ 下)

快速开始

不使用 Electron(仅 PHP)

运行应用的最简单方式——只需 PHP:

bash cd app php -S localhost:8080

然后在浏览器中打开 http://localhost:8080

使用 Electron(桌面应用)

bash npm install npm start

构建安装程序

需要 Node.js。

bash npm run build:mac # macOS DMG npm run build:win # Windows 安装程序 (NSIS) npm run build:linux # Linux AppImage

输出文件位于 dist/

项目结构

app/ src/ Core/ Request, Response, ContextManager, AboutManager Database/ Connection (PDO), ProfileManager, SchemaInspector Query/ QueryBuilder, QueryParser, JoinClause, WhereClause, GroupByClause, HavingClause, OrderByClause assets/ js/ Canvas, joins, islands, autocomplete, undo/redo, results, profiles, api storage/ 连接配置和已保存的上下文(JSON) electron/ main.js Electron 入口——启动 PHP 服务器,打开窗口 php-bin/ 捆绑的 PHP 二进制文件(win/、mac/、linux/)

连接配置

配置存储在 app/storage/profiles.json 中。每个配置包含主机、端口、数据库、用户和密码。通过顶部栏中的 配置 进行管理。

相似文章

ggsql:面向 SQL 的图形语法

Lobsters Hottest

ggsql 是一款 Alpha 版本工具,它将图形语法的可视化能力引入 SQL,允许用户在 Quarto、Jupyter、Positron 和 VS Code 中利用 SQL 语法构建结构化、模块化的可视化图表。

SQLite查询结果格式化演示

Simon Willison's Blog

基于WebAssembly的交互式演示,允许用户以20多种样式格式化SQL查询结果,包括表格、CSV、JSON、HTML和Markdown,并支持实时调整。