SQL 格式化工具

一键美化 SQL,再用大白话逐句拆解这条查询到底在做什么。

SQL 输入

缩进
关键字
query.sql
视图
粘贴一条查询即可格式化或解释。

SQL 的格式化和分析都在你的浏览器里完成,不会上传到 BroBroGo。

常见问题

支持哪些 SQL 方言?

标准 SQL、PostgreSQL、MySQL、MariaDB、SQL Server(T-SQL)、Oracle(PL/SQL)、SQLite、BigQuery、Snowflake 和 Spark SQL。选中和你数据库对应的方言,关键字和引号就会按那个引擎的习惯来处理。

大白话解释是怎么来的?

它会读取查询的结构——语句类型,以及 SELECT、FROM、JOIN、WHERE、GROUP BY、ORDER BY 等每个子句——并标注它们各自的作用。给出的是查询的结构解读,而不是数据库的执行计划,所以即使是残缺或某个厂商特有的 SQL 也读得懂。

粘贴生产环境的查询安全吗?

安全。格式化和分析全部在你的浏览器里进行,SQL 不会离开这个页面。

提升 SQL 代码可读性的重要性

在数据库开发与数据分析的工作中,编写 SQL 查询是日常核心任务。然而,随着业务逻辑的复杂化,SQL 查询往往会变得冗长且杂乱。未经格式化的 SQL 代码不仅难以阅读,还会显著增加团队协作沟通的成本,并在后续的代码维护与调试(Debugging)中埋下隐患。

将混乱的原始代码整理为结构清晰、排版整齐的格式化 SQL,能够帮助开发人员、数据分析师、数据库管理员(DBA)以及技术支持人员快速理清查询逻辑。清晰的缩进和统一的关键字大小写,可以让复杂的嵌套子查询、多表关联(JOIN)以及过滤条件(WHERE)一目了然,从而大幅提升代码审查与问题排查的效率。

多种 SQL 方言与格式化配置

不同的数据库管理系统在语法细节、关键字以及引号的使用习惯上存在差异。本工具支持多达十种主流的 SQL 方言,以确保格式化结果符合特定数据库的规范:

  • Standard SQL
  • PostgreSQL
  • MySQL
  • MariaDB
  • SQL Server (T-SQL)
  • Oracle (PL/SQL)
  • SQLite
  • BigQuery
  • Snowflake
  • Spark SQL

用户可以根据目标数据库自由选择对应的方言。此外,工具还提供了灵活的排版配置选项,包括:

  • 缩进风格:支持 2 个空格、4 个空格或 Tab 缩进。
  • 关键字大小写:可设置为大写、小写或保持原样(Keep)。

浏览器端本地处理与隐私保护

本工具在设计上充分考虑了数据隐私。SQL 的格式化和分析都在你的浏览器里完成,不会上传到 BroBroGo。

所有的解析、美化和结构拆解工作均在本地客户端即时运行,你的 SQL 不会离开这个页面。这种处理机制在保障数据安全的同时,也实现了即时的响应速度。此外,工具还会在浏览器本地保存用户的草稿和主题偏好设置,方便随时继续工作。

限制说明与异常处理

为了保证浏览器的运行性能,工具设置了合理的使用限制与容错机制:

  • 输入长度限制:SQL 输入的最大长度为 300,000 个字符。如果输入的 SQL 文本超过此限制,工具将无法进行处理,并会显示提示信息:“这条查询太大,处理不了,换一条小一点的吧。”
  • 语法错误处理:如果输入的 SQL 存在语法错误,工具将无法完成格式化,此时会显示错误提示:“无法格式化这段 SQL——请检查语法。”。在这种情况下,为了防止用户丢失已有成果,上一次成功生成的输出内容不会被该错误消息覆盖。
  • 清空操作:点击“清空”按钮会同时清空输入区和输出区的内容,隐藏所有错误详情,并显示“已清空。”。

逐句拆解:大白话解释查询逻辑

除了格式化代码,本工具还配备了查询解释功能,能够将复杂的 SQL 语句拆解为易于理解的文字说明。该功能通过分析 SQL 的语法结构,提供逐个子句的详细功能描述。

语句类型(Kind)解析

工具首先会识别 SQL 语句的总体类型,并给出对应的功能描述:

  • SELECT:读取并返回数据、不改动任何东西的查询。
  • INSERT:向表中插入新行。
  • UPDATE:修改已有行里的值。
  • DELETE:从表中删除行。
  • CREATE:新建表、视图、索引等对象。
  • ALTER:修改已有对象的定义。
  • DROP:把某个对象从数据库中永久删除。
  • TRUNCATE:清空整张表,删掉所有行。
  • WITH:为后面的查询定义一个命名的临时结果(CTE)。
  • MERGE:在一条语句里同时完成插入、更新或删除。
  • OTHER:一条 SQL 语句。

子句角色(Role)拆解

针对语句内部的各个子句,工具会进一步剖析其具体扮演的角色:

  • SELECT:要返回的列和表达式。
  • SELECT DISTINCT:要返回的列,并去掉重复行。
  • FROM:数据来源的表(或子查询)。
  • JOIN:把每一行和另一张表里匹配的行组合起来。
  • WHERE:只保留满足条件的行。
  • GROUP BY:把行归成组,好按组计算 COUNT、SUM 等聚合值。
  • HAVING:在聚合算完之后再筛选这些组。
  • ORDER BY:对结果行排序。
  • LIMIT:限制返回的行数。
  • OFFSET:返回结果前先跳过若干行。
  • UNION:把这部分结果和另一条查询的结果合并。
  • VALUES:要插入的行的值。
  • INTO:接收新行的目标表。
  • SET:要赋的新列值。
  • UPDATE:要修改其中行的表。
  • DELETE FROM:要从中删除行的表。
  • WITH:定义一个供下方使用的命名临时结果集。
  • STATEMENT:原样显示的语句。

在处理多语句查询时,工具会使用“第 {n} 条语句”来依次标注每个独立的语句,并显示“已解释 {count} 条语句。”。如果一次性输入的查询包含超过 25 条语句,工具将仅解析并展示前 25 条,并附带提示:“仅显示前 25 条。”。

值得注意的是,此解释功能基于查询的语法结构进行静态剖析,而非生成数据库的实际执行计划(Execution Plan)。因此,即使是残缺的 SQL 片段或特定厂商独有的个性化语法,工具也能够完成结构解读。

常见问题

支持哪些 SQL 方言?

标准 SQL、PostgreSQL、MySQL、MariaDB、SQL Server(T-SQL)、Oracle(PL/SQL)、SQLite、BigQuery、Snowflake 和 Spark SQL。选中和你数据库对应的方言,关键字和引号就会按那个引擎的习惯来处理。

大白话解释是怎么来的?

它会读取查询的结构——语句类型,以及 SELECT、FROM、JOIN、WHERE、GROUP BY、ORDER BY 等每个子句——并标注它们各自的作用。给出的是查询的结构解读,而不是数据库的执行计划,所以即使是残缺或某个厂商特有的 SQL 也读得懂。

粘贴生产环境的查询安全吗?

安全。格式化和分析全部在你的浏览器里进行,SQL 不会离开这个页面。