免费转换器

SQL 查询 格式化与高亮

在浏览器中即时格式化、美化和语法高亮SQL查询。免费、安全,无需上传。

拖放 .sql 文件到此处

或在下方粘贴SQL查询

关于此工具

SQL 查询很快就会变得又长又复杂——跨多个表的联接、嵌套子查询、具有许多条件的大型 WHERE 子句、复杂的 CASE 表达式。紧凑的 SQL 塞满几行是不可读的;正确缩进的 SQL 且大小写一致,使查询结构一目了然。格式化是可以调试的查询和不能调试的查询之间的区别。

该格式化程序解析 SQL 并发出缩进的、大小写正确的输出。 SQL 关键字(SELECT、FROM、WHERE、JOIN、GROUP BY)通常为大写,表名和列名与源匹配,缩进反映嵌套(子查询在其父查询内缩进,CASE 分支缩进)。多种方言支持可处理 MySQL、PostgreSQL、SQL Server、Oracle 和 SQLite 差异。

格式化是非破坏性的——格式化的查询在功能上与输入相同。仅空格和大小写发生变化。

为什么要格式化 SQL

阅读密集的、未格式化的 SQL 是一件很费脑力的事情。当所有内容都在几行上时,确定哪些条件属于哪些 JOIN、子查询从哪里开始和结束以及 CASE 分支如何关联都变得更加困难。格式化的 SQL 读取速度更快,并减少误读结构带来的错误。

代码审查尤其受益。审阅者可以快速掌握查询格式化后的功能;在审阅期间阅读未格式化的 SQL 会鼓励跳过或橡皮图章。当查询发生变化时,格式化的 SQL 也会产生有意义的差异。

使用方法

粘贴查询,单击格式。

  1. 粘贴您的 SQL: 将查询放入输入区域。单语句或多语句输入都可以。
  2. 选择方言: 默认是通用 SQL。选择 MySQL、PostgreSQL、SQL Server 或 Oracle 进行特定于方言的关键字识别。
  3. 配置选项: 缩进大小(通常为 2 或 4 个空格)、关键字大小写(大写是最常见的,小写是一些团队的偏好)、逗号位置(尾随或前导)。
  4. 格式: 格式化的输出立即出现。复制或下载使用。

常见用例

技术细节

SQL 解析需要理解方言,因为不同的数据库以不同的方式扩展语法。格式化程序通常使用标记器来识别关键字、标识符、文字和标点符号,然后生成具有标记之间的空格和缩进规则的输出。

缩进规则:SELECT、FROM、WHERE、GROUP BY、ORDER BY 各占一行。后续行中的连接表在 FROM 下缩进。为了便于阅读,WHERE 中的条件位于单独的行上。子查询位于自己的缩进块中。

大小写约定:关键字大写(SELECT、FROM、WHERE)最常见。有些团队更喜欢小写。标识符(表名和列名)保留源大小写。

最佳实践

常见问题

格式化会改变查询行为吗?
不会。SQL 格式化仅调整空格、换行符和关键字大小写。查询逻辑、执行计划和结果保持不变。这纯粹是可读性的改进。
支持哪些 SQL 方言?
该工具支持标准 SQL 和特定方言:MySQL、PostgreSQL、SQLite、SQL Server (T-SQL) 和 Oracle PL/SQL。方言特定的关键字和功能可以正确识别。
它是否处理子查询和 CTE?
是的。公共表表达式(WITH 子句)、嵌套子查询、窗口函数和复杂的 JOIN 链均采用适当的缩进级别进行格式化。
我可以将其用于存储过程吗?
格式化程序最适合处理单个 SQL 语句。多语句过程、触发器和函数可能有效,但复杂的过程逻辑(IF/ELSE、循环)格式取决于方言。
关键字应该大写还是小写?
约定各不相同。大写关键字是传统且常见的。小写字母正在现代风格指南中得到采用。选择一个并在代码库中保持一致。
它会格式化存储过程吗?
大多数格式化程序处理存储过程语法(CREATE PROCEDURE、BEGIN/END 块、控制流)。可能部分支持特定于方言的扩展。
我的 SQL 上传了吗?
不会。格式化发生在您的浏览器中。
我可以从命令行格式化吗?
一些 SQL 格式化程序提供 CLI 工具(sqlfluff、sql-formatter)。使用它们进行批量格式化或 CI 集成。浏览器格式化程序仅供临时一次性使用。