SQL 格式化工具

为 SQL 语句添加缩进和换行,提升可读性。

格式化前

格式化后

SQL 格式化工具是什么

冗长的 SQL 若挤在一行内,便读不出其结构。本工具会以 SELECT、FROM、WHERE、JOIN 等关键字为基准插入换行,并将嵌套的子查询逐层缩排,整理成能以肉眼追踪语句结构的形式。格式化不会改变语意。

方言的选择会影响结果。MySQL、PostgreSQL、Oracle、SQL Server 各有其独有语法,请配合您使用的数据库选择。另外,含有语法错误的 SQL 无法正确解析,可能不会被格式化。此时请先确认 SQL 本身是否有效。

SQL 的格式化步骤

  1. 贴上 SQL 将想格式化的 SQL 贴入输入栏。以分号分隔即可一次处理多个语句。
  2. 选择方言 请配合使用中的数据库选择。若不清楚,维持标准 SQL 也能格式化大部分语法。
  3. 设定缩排与大写转换 缩排宽度请配合团队规范调整。启用大写转换後关键字会对齐,更易阅读。
  4. 格式化并确认结果 按下「格式化」即会显示结果。可直接贴入代码审查或规格书。

用好本工具的小技巧

  • SELECT、FROM、WHERE、JOIN 等 SQL 关键字将自动换行并对齐,嵌套子查询也会正确缩进。
  • 启用"关键字大写"后,关键字将自动转为大写,提升可读性。
  • 可调整缩进大小,以符合团队的代码规范。
  • 将格式化后的 SQL 粘贴到代码审查或文档中,阅读更加清晰。
  • 支持 MySQL、PostgreSQL、Oracle 等主流 SQL 方言。

SQL 格式化工具的实用场景

解读收到的 SQL

将从日志或应用程序原始码中取出的单行 SQL 格式化後,结合条件与筛选条件的结构便一目了然。

在提交代码审查前整理

先对齐缩排再提交,审查者便能专注于逻辑而非格式。差异也更易阅读。

放入规格书或文件

将格式化後的 SQL 粘贴数据,读者便能追踪其结构。搭配大写转换,印刷品上也清楚易读。

分析缓慢查询的结构

由于可用肉眼确认子查询的深度与结合的数量,在阅读执行计画之前便能先有个大概判断。

与 SQL 相关的术语

SQL 方言
指各资料库产品之间语法的差异。由于各产品在标准 SQL 上加入了自有扩充,格式化时便需要指定。
子查询
指嵌套写在另一个 SQL 语句之中的查询。越深越难阅读,因此是缩排效果最大的部分。
JOIN
指结合多个资料表来取得数据的语法。结合条件容易变长,换行位置会左右可读性。
预备语句
指以事後填入值的形式组建查询的方式。是防范 SQL 注入的基本。
SQL 注入
指在输入值中混入 SQL 片段,使其执行非预期查询的攻击。以字符串串接组建 SQL 时容易发生。
预存程序
指保存在资料库端的一连串处理。由于含有控制语法,可能超出格式化的支援范围。

常见问题

除标准 SQL 外,还支持 MySQL、PostgreSQL、Oracle(PL/SQL)、SQL Server(T-SQL)。从下拉菜单中选择与所用数据库匹配的方言,即可正确格式化该方言特有的语法。

如果输入的 SQL 包含语法错误,格式化工具可能无法正确解析。请先在数据库客户端中确认 SQL 语法是否有效,再进行格式化。

可以将多条 SQL 语句用分号分隔后粘贴,工具会一并格式化。但存储过程和 PL/SQL 块语法可能无法完全支持。
工具君

闲话 ― SQL 的 50 年:关系型数据库的历史

SQL 起源于 E.F. Codd(IBM)1970 年论文提出的关系模型,IBM 以此为基础开发了"SEQUEL"(因商标问题改名为 SQL)。1986 年被 ANSI 标准化,至今仍被众多数据库广泛使用,是一门历久弥新的语言。

最著名的安全事件之一是 SQL 注入攻击。2011 年索尼 PSN(PlayStation Network)事件导致逾 1 亿条个人信息泄露,估计损失达 1.71 亿美元。时至今日,SQL 注入仍是 OWASP Top 10(Web 应用主要漏洞排行)的常客,使用预处理语句是基本防御手段。

"WHERE 1=1"是构建动态 SQL 的实用技巧,但也是 SQL 注入的经典案例。在登录表单中输入 ' OR '1'='1 即可无需密码登录——这一古典漏洞至今仍是安全培训的标准教材。