SQL 格式化器
SQL(结构化查询语言)是关系型数据库的标准语言。此工具使用正确的缩进格式化 SQL 查询,将关键字转换为大写,并对复杂查询进行结构化处理以提高可读性。支持常见 SQL 方言。
规范
常见用例
- 格式化来自日志或 ORM 输出的压缩 SQL
- 使复杂查询便于代码审查阅读
- 为文档准备 SQL
- 调试和理解现有查询
功能
- 使用一致的缩进格式化 SQL
- 将 SQL 关键字转换为大写(SELECT、FROM、WHERE 等)
- 格式化复杂的 JOIN 和子查询
- 处理 CTE(公用表表达式)和 WITH 子句
- 支持窗口函数
- 支持 6 种 SQL 方言(Standard、PostgreSQL、MySQL、MariaDB、SQLite、T-SQL)
- 表名提取
- 压缩视图切换
- 显示大小节省(原始与压缩对比)
示例
带 JOIN 的复杂查询
试试看 →带有聚合、连接和排序的查询。
SELECT
u.id,
u.name,
COUNT(o.id) AS order_count
FROM users u
LEFT JOIN orders o ON u.id = o.user_id
WHERE u.active = true
GROUP BY u.id, u.name
HAVING COUNT(o.id) > 5
ORDER BY order_count DESC提示
- 在提交到版本控制之前格式化查询。
- 大写关键字提高可读性,但 SQL 并不要求这样做。
- 子查询应进行缩进以提高清晰度。
理解 SQL 格式化器
SQL(结构化查询语言)自 20 世纪 70 年代以来一直是关系型数据库的标准语言。它提供了声明式语法,用于在 PostgreSQL、MySQL、SQLite、SQL Server 和 Oracle 等数据库系统中查询、操作和管理数据。虽然每个数据库都添加了专有扩展,但核心语言非常一致。
SQL 语句分为几个类别。数据操作语言(DML)包括 SELECT、INSERT、UPDATE 和 DELETE,用于读取和修改数据。数据定义语言(DDL)包括 CREATE、ALTER 和 DROP,用于管理数据库对象。数据控制语言(DCL)使用 GRANT 和 REVOKE 处理权限。现代 SQL 还支持使用 WITH 子句的公用表表达式(CTE)、用于分析的窗口函数以及用于半结构化数据的 JSON 操作。
SQL 格式化对于可读性和维护至关重要。包含连接、子查询和聚合的复杂查询在被压缩成单行时会变得难以理解——这在 ORM 生成的查询、应用程序日志和数据库监控工具中很常见。使用大写关键字、正确缩进和对齐子句的一致格式化使查询更易于审查、调试和优化。
SQL 格式化还有助于性能分析。格式良好的查询更容易识别缺失的索引(通过查看哪些列出现在 WHERE 和 JOIN 条件中)、发现可以重写为连接的不必要子查询,以及理解涉及 CTE 和窗口函数的复杂查询的逻辑流程。
SQL 关键字不区分大小写,因此 SELECT 和 select 被数据库引擎同等对待。大写关键字(SELECT、FROM、WHERE、JOIN)是一种广泛遵循的约定,通过在视觉上区分 SQL 关键字和表名、列名来提高可读性。大多数格式化器和编码风格指南因此推荐使用大写关键字。
公用表表达式(CTE)是使用 WITH 关键字定义的命名临时结果集,仅在单个查询执行期间存在。CTE 通过将复杂查询拆分为命名步骤来提高可读性,用从上到下的顺序结构替代深度嵌套的子查询。递归 CTE 扩展了这一能力,可以遍历组织架构图或嵌套评论等层次数据。
核心 SQL 语法(SELECT、JOIN、WHERE、GROUP BY)在各数据库方言中保持一致,但在专有功能上存在差异。MySQL 使用反引号引用标识符,PostgreSQL 使用双引号,SQL Server 使用方括号。函数、数据类型以及 LATERAL 连接、MERGE 和 UPSERT 等高级功能也因方言而异。此格式化器处理适用于所有主要数据库的标准 SQL 语法。