正在加载,请稍候…

如何格式化 SQL 查询以提高可读性

学习 SQL 格式化最佳实践、缩进规则和关键字大小写。使用我们的在线格式化工具即时清理混乱的查询——支持 MySQL、PostgreSQL、SQLite 等。

如何格式化 SQL 查询以提高可读性

什么是 SQL 格式化?

SQL 格式化(也称为 SQL 美化或 SQL 漂亮打印)是重构 SQL 查询以遵循一致的缩进、大小写和换行约定的过程。格式良好的 SQL 更易于阅读、调试和维护。

如何格式化 SQL 查询以提高可读性 插图

为什么 SQL 格式化很重要

未格式化的 SQL 查询几乎无法理解:

SELECT u.id,u.name,u.email,o.total,o.created_at FROM users u JOIN orders o ON u.id=o.user_id WHERE u.status='active' AND o.total>100 ORDER BY o.created_at DESC LIMIT 20;

格式化后的等价查询:

SELECT
  u.id,
  u.name,
  u.email,
  o.total,
  o.created_at
FROM users u
JOIN orders o ON u.id = o.user_id
WHERE
  u.status = 'active'
  AND o.total > 100
ORDER BY o.created_at DESC
LIMIT 20;

格式化版本使查询结构一目了然。

SQL 格式化约定

关键字大小写

SQL 关键字(SELECT、FROM、WHERE、JOIN、ORDER BY)传统上使用大写字母,以区别于标识符(表名/列名)。一些风格指南偏好小写关键字以减少视觉噪音。

缩进

每个主要子句另起一行。子子句(WHERE 中的条件、SELECT 中的列)进行缩进。JOIN 条件通常在 JOIN 关键字下缩进。

如何格式化 SQL 查询以提高可读性 插图

逗号位置

两种常见风格:

  • 尾随逗号:列在行尾,逗号在下一项之前
  • 前导逗号:逗号在每行开头(更容易注释掉最后一项)

别名

表别名可以提高复杂查询的可读性。对于大型查询,短而有意义的别名(u 表示 users,o 表示 orders)优于任意的单个字母。

SQL 方言

不同的数据库系统有其自己的 SQL 变体:

  • PostgreSQL:扩展 SQL,支持数组、JSONB、窗口函数、CTE
  • MySQL/MariaDB:具有非标准特性,如不带聚合的 GROUP BY
  • SQLite:简化的无服务器数据库,有一些限制
  • SQL Server (T-SQL):微软的方言,带有过程扩展
  • Oracle (PL/SQL):Oracle 的扩展 SQL,带有过程编程

理解方言的格式化工具可以正确保留方言特定的语法。

常见 SQL 查询模式

如何格式化 SQL 查询以提高可读性 插图

公用表表达式 (CTE)

WITH active_users AS (
  SELECT id, name
  FROM users
  WHERE status = 'active'
),
high_value_orders AS (
  SELECT user_id, SUM(total) AS total_spent
  FROM orders
  GROUP BY user_id
  HAVING SUM(total) > 1000
)
SELECT au.name, hvo.total_spent
FROM active_users au
JOIN high_value_orders hvo ON au.id = hvo.user_id;

窗口函数

SELECT
  name,
  salary,
  department,
  RANK() OVER (
    PARTITION BY department
    ORDER BY salary DESC
  ) AS salary_rank
FROM employees;

子查询

SELECT name, email
FROM users
WHERE id IN (
  SELECT DISTINCT user_id
  FROM orders
  WHERE created_at >= NOW() - INTERVAL '30 days'
);

SQL 代码检查

除了格式化,SQL 检查器还会检查常见错误:

  • 生产代码中的 SELECT *(检索不必要的列)
  • UPDATE/DELETE 缺少 WHERE 子句(影响所有行)
  • JOIN 中的隐式列引用(歧义)
  • WHERE 子句中阻止索引使用的函数
  • 降低可移植性的非 ANSI SQL

使用 SQL 格式化工具

我们的工具:

  1. 粘贴任何 SQL 查询 — 处理 SELECT、INSERT、UPDATE、DELETE、CREATE 等
  2. 即时格式化 — 应用一致的缩进和换行
  3. 方言支持 — 针对 PostgreSQL、MySQL、SQL Server 或标准 SQL 进行优化
  4. 关键字大小写 — 选择大写、小写或保留原样
  5. 缩进样式 — 2 空格、4 空格或制表符
  6. 复制格式化后的 SQL — 一键复制,立即使用

用于在提交到版本控制之前提高复杂查询的可读性,格式化从日志或错误消息中复制的查询,以及标准化团队中的 SQL 风格。