SQL Format
将你的 SQL 粘贴到下面的框中,并使用可用选项进行格式化。SQL-Format 由数据库管理员按照行业和大型科技公司的标准构建。尽情使用吧!
SQL Format 是什么,适合谁使用
SQL Format 是一款免费的在线格式化工具,可将拥挤的、写在一行里的或缩进不一致的 SQL 整理成清晰、可预期的布局。每个子句都从新的一行开始,列清单按每行一项拆分,连接及其条件缩进在所属的表下方,嵌套查询则在其括号内缩进。
它是为整天阅读 SQL 的人打造的:审查拉取请求的开发人员、梳理从日志中捕获的慢查询的 DBA、在分享前整理报表的分析师,以及任何接手过一条长达 300 行却写在一行里的语句的人。布局遵循数据库团队长期沿用的惯例,下面的选项可让你匹配自己团队的风格。
如何使用格式化工具
- 将 SQL 粘贴或输入到编辑器中。你可以一次粘贴多条语句;它们会按分号拆分,并依次格式化。
- 如有需要,可调整选项:缩进大小、最大行宽、逗号位置、关键字大小写,以及左括号是否单独成行。
- 点击 格式化 或按 Ctrl + Enter(在 Mac 上按 ⌘ + Enter)。格式化后的 SQL 会替换编辑器中的文本。
- 使用 复制 将结果放到剪贴板,或使用 清空 重新开始。状态栏会显示行数、字符数以及光标位置。
格式化选项
共有五个选项控制输出结果。默认值(4 个空格缩进、120 列、尾随逗号、关键字大写、括号不换行)适合大多数团队;每个选项都有独立页面,提供更多示例。
缩进空格
缩进空格 设置每一层嵌套使用的空格数,最小为 0;默认值为 4。输入中的制表符会被替换为相应数量的空格,但字符串字面量和带引号的标识符中的制表符除外。下面的示例使用 2。
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 则关闭自动换行。
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 也更小。
SELECT id
,email
,country_code
,created_at
FROM customers关键字
关键字 将 SELECT、FROM、JOIN 等 SQL 关键字切换为大写(默认)或小写。字符串字面量和注释保持你原来的写法。
select id,
name
from products
where price > 100
order by name括号另起一行
括号另起一行 会将代码块的左括号(例如 IN 后的子查询、CTE 主体或拆分为多行的列表)移到单独一行,而不是留在上一行末尾。
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 背后的惯例: