SQL Format

将你的 SQL 粘贴到下面的框中,并使用可用选项进行格式化。SQL-Format 由数据库管理员按照行业和大型科技公司的标准构建。尽情使用吧!

格式化选项
行数: 1 字符数: 0 行 1, 列 1 SQL · UTF-8

SQL Format 是什么,适合谁使用

SQL Format 是一款免费的在线格式化工具,可将拥挤的、写在一行里的或缩进不一致的 SQL 整理成清晰、可预期的布局。每个子句都从新的一行开始,列清单按每行一项拆分,连接及其条件缩进在所属的表下方,嵌套查询则在其括号内缩进。

它是为整天阅读 SQL 的人打造的:审查拉取请求的开发人员、梳理从日志中捕获的慢查询的 DBA、在分享前整理报表的分析师,以及任何接手过一条长达 300 行却写在一行里的语句的人。布局遵循数据库团队长期沿用的惯例,下面的选项可让你匹配自己团队的风格。

如何使用格式化工具

  1. 将 SQL 粘贴或输入到编辑器中。你可以一次粘贴多条语句;它们会按分号拆分,并依次格式化。
  2. 如有需要,可调整选项:缩进大小、最大行宽、逗号位置、关键字大小写,以及左括号是否单独成行。
  3. 点击 格式化 或按 Ctrl + Enter(在 Mac 上按 ⌘ + Enter)。格式化后的 SQL 会替换编辑器中的文本。
  4. 使用 复制 将结果放到剪贴板,或使用 清空 重新开始。状态栏会显示行数、字符数以及光标位置。

格式化选项

共有五个选项控制输出结果。默认值(4 个空格缩进、120 列、尾随逗号、关键字大写、括号不换行)适合大多数团队;每个选项都有独立页面,提供更多示例。

缩进空格

缩进空格 设置每一层嵌套使用的空格数,最小为 0;默认值为 4。输入中的制表符会被替换为相应数量的空格,但字符串字面量和带引号的标识符中的制表符除外。下面的示例使用 2。

格式化后(由 SQL Format 处理)
选项: 缩进空格 2 · 最大列数 120 · 逗号: 后 · 关键字: 大写 · 括号另起一行: 否
SELECT c.name,
  SUM(o.total) AS revenue
FROM customers c
  JOIN orders o
    ON  o.customer_id = c.id
WHERE o.status = 'PAID'
GROUP BY c.name

了解更多:“缩进空格”选项

最大列数

最大列数 是格式化工具力求遵守的行宽(默认 120)。较长的表达式会被拆分到多行,以保持在该宽度内;设为 0 则关闭自动换行。

格式化后(由 SQL Format 处理)
选项: 缩进空格 4 · 最大列数 60 · 逗号: 后 · 关键字: 大写 · 括号另起一行: 否
SELECT order_id,
    quantity * unit_price * (1 - discount_rate) * (1 +
      tax_rate) + shipping_fee - loyalty_credit AS
      amount_due
FROM order_lines
WHERE order_id = 42

了解更多:“最大列数”选项

逗号

逗号 用于在尾随逗号(位于每一项之后,默认)和前置逗号(位于下一行开头)之间进行选择。使用前置逗号时,注释掉某一列更方便,在末尾添加列时产生的 diff 也更小。

格式化后(由 SQL Format 处理)
选项: 缩进空格 4 · 最大列数 120 · 逗号: 前 · 关键字: 大写 · 括号另起一行: 否
SELECT id
    ,email
    ,country_code
    ,created_at
FROM customers

了解更多:“逗号”选项(逗号位置)

关键字

关键字 将 SELECT、FROM、JOIN 等 SQL 关键字切换为大写(默认)或小写。字符串字面量和注释保持你原来的写法。

格式化后(由 SQL Format 处理)
选项: 缩进空格 4 · 最大列数 120 · 逗号: 后 · 关键字: 小写 · 括号另起一行: 否
select id,
    name
from products
where price > 100
order by name

了解更多:“关键字”选项(大小写)

括号另起一行

括号另起一行 会将代码块的左括号(例如 IN 后的子查询、CTE 主体或拆分为多行的列表)移到单独一行,而不是留在上一行末尾。

格式化后(由 SQL Format 处理)
选项: 缩进空格 4 · 最大列数 120 · 逗号: 后 · 关键字: 大写 · 括号另起一行: 是
SELECT name
FROM customers
WHERE id IN
(
    SELECT customer_id
    FROM orders
    WHERE total > 500
)

了解更多:“括号另起一行”选项

支持哪些 SQL 方言

该格式化工具不绑定于某一种数据库。它处理主流数据库引擎共有的 SQL:包含连接、子查询和 CASE 的 SELECT,INSERT、UPDATE、DELETE,CREATE TABLE 和 CREATE VIEW 等常见 DDL,以及 -- 和 /* */ 两种形式的注释(注释会被保留)。

它对 PostgreSQL 提供额外支持::: 类型转换、$1 参数,以及美元符号引用的 $$ … $$ 主体,其中的 PL/pgSQL 会逐块排版。MySQL 的反引号标识符和 SQL Server 的 [bracket] 方括号标识符会被原样保留。由于没有方言切换功能,某个数据库特有的其他语法(例如 SQL Server 的 GO 批处理分隔符)不会被特殊处理。方言指南解释了其中的差异。

你的 SQL 会被如何处理

当你点击“格式化”时,编辑器中的 SQL 会通过 HTTPS 发送到我们的服务器,在内存中完成格式化后直接返回到页面中。它不会被写入数据库、文件或日志,也不会与分析或广告合作伙伴共享。尽管如此,请避免将真实的密码、密钥或个人数据粘贴到任何在线工具中;详情请参阅隐私页面。

隐私信息

常见问题

我的 SQL 会被存储在任何地方吗?

不会。SQL 仅针对该次请求在服务器内存中进行格式化,并在响应中返回。它不会被保存到数据库、文件或日志中。

格式化会改变查询的行为吗?

它被设计为只改变空白、换行和关键字的大小写,绝不改变 SQL 的顺序或逻辑。与任何改写代码的工具一样,在生产数据库上运行之前,请先检查结果。请注意,关键字大小写设置也会作用于本身是 SQL 关键字的名称,例如名为 month 的列。

它适用于哪些数据库?

它可以格式化 PostgreSQL、MySQL、SQL Server、Oracle、Db2 和 SQLite 共有的 SQL,并对 PostgreSQL 的类型转换、参数和 PL/pgSQL 主体进行额外处理。没有方言选择器。

有大小限制吗?

有。单次请求最多可包含 20,000 行 SQL。

可以一次格式化多条语句吗?

可以。用分号将它们分隔即可;每条语句会单独格式化,并保持原有顺序。

需要付费或注册账户吗?

不需要。格式化工具可免费使用,无需注册。

查看全部常见问题

指南与参考

除了工具本身,以下指南还介绍了可读 SQL 背后的惯例: