ZeroTool Workbench

SQL 格式化工具

即时格式化、美化和压缩 SQL 查询。支持 SELECT、INSERT、UPDATE、DELETE 等。免费在线工具,纯浏览器端运行。

100% 浏览器端运行 数据不离开你的设备 免费 · 无需注册

使用方法

  1. 将 SQL 查询粘贴到输入区域。
  2. 点击 Format 美化或 Minify 压缩。
  3. 通过选项调整缩进大小和关键字大小写。
  4. 点击 Copy 复制格式化后的结果。

格式化示例

格式化前

select u.id, u.name, o.total from users u join orders o on u.id = o.user_id where o.total > 100 and u.active = 1 order by o.total desc limit 10;

格式化后

SELECT
  u.id,
  u.name,
  o.total
FROM users u
JOIN orders o ON u.id = o.user_id
WHERE o.total > 100
  AND u.active = 1
ORDER BY o.total DESC
LIMIT 10;

为什么要格式化 SQL?

格式化的 SQL 更易于阅读、审查和调试。一致的格式有助于团队维护编码标准,使包含多个 JOIN 和子查询的复杂查询更易于管理。

子查询示例

以下是默认选项(2 空格缩进、关键字大写)的实际输出。括号里的子查询会多缩进一级:

select * from users where id in (select user_id from orders where total > 100);
SELECT
  *
FROM users
WHERE id IN (
  SELECT
    user_id
  FROM orders
  WHERE total > 100
);

CTE 示例

WITH ... AS (...) 的主体按子查询缩进。SUM(total) 这样的函数调用保持在一行,ROW_NUMBER() OVER (PARTITION BY ... ORDER BY ...) 这样的窗口函数也一样:

with recent as (select user_id, sum(total) as spent from orders group by user_id) select u.name, r.spent from users u join recent r on r.user_id = u.id order by r.spent desc;
WITH recent AS (
  SELECT
    user_id,
    SUM(total) AS spent
  FROM orders
  GROUP BY user_id
)
SELECT
  u.name,
  r.spent
FROM users u
JOIN recent r ON r.user_id = u.id
ORDER BY r.spent DESC;

限制

  • 只有一种通用方言,不做语法校验。 没有 MySQL、PostgreSQL、SQL Server 等模式,错误的 SQL 也会照样格式化,不报错。
  • CASE 保持在一行。 CASE WHEN ... THEN ... END 不会按 WHEN 拆行。
  • 压缩会删掉注释,也会去掉右括号后的空格,例如 SELECT COUNT(*)FROM events。

FAQ

支持哪些 SQL 方言?

格式化工具支持标准 SQL 语法,包括 SELECT、INSERT、UPDATE、DELETE、CREATE TABLE、JOIN、子查询和 CTE(含其中的函数调用与窗口函数),不区分 MySQL、PostgreSQL、SQLite、SQL Server 等方言;已知的排版问题见下文「限制」。

会验证 SQL 语法吗?

本工具专注于格式化,不进行语法验证。它会美化查询结构,但不检查语法错误或表结构。

可以自定义格式吗?

可以。您可以选择 2 空格、4 空格或制表符缩进,并切换关键字大写。

数据会发送到服务器吗?

不会。所有格式化完全在浏览器中通过 JavaScript 运行,SQL 不会离开您的设备。