SQL 格式化工具
为 SQL 语句添加缩进和换行,提升可读性。
格式化前
格式化后
SQL 格式化工具是什么
冗长的 SQL 若挤在一行内,便读不出其结构。本工具会以 SELECT、FROM、WHERE、JOIN 等关键字为基准插入换行,并将嵌套的子查询逐层缩排,整理成能以肉眼追踪语句结构的形式。格式化不会改变语意。
方言的选择会影响结果。MySQL、PostgreSQL、Oracle、SQL Server 各有其独有语法,请配合您使用的数据库选择。另外,含有语法错误的 SQL 无法正确解析,可能不会被格式化。此时请先确认 SQL 本身是否有效。
SQL 的格式化步骤
- 贴上 SQL 将想格式化的 SQL 贴入输入栏。以分号分隔即可一次处理多个语句。
- 选择方言 请配合使用中的数据库选择。若不清楚,维持标准 SQL 也能格式化大部分语法。
- 设定缩排与大写转换 缩排宽度请配合团队规范调整。启用大写转换後关键字会对齐,更易阅读。
- 格式化并确认结果 按下「格式化」即会显示结果。可直接贴入代码审查或规格书。
用好本工具的小技巧
- SELECT、FROM、WHERE、JOIN 等 SQL 关键字将自动换行并对齐,嵌套子查询也会正确缩进。
- 启用"关键字大写"后,关键字将自动转为大写,提升可读性。
- 可调整缩进大小,以符合团队的代码规范。
- 将格式化后的 SQL 粘贴到代码审查或文档中,阅读更加清晰。
- 支持 MySQL、PostgreSQL、Oracle 等主流 SQL 方言。
SQL 格式化工具的实用场景
解读收到的 SQL
将从日志或应用程序原始码中取出的单行 SQL 格式化後,结合条件与筛选条件的结构便一目了然。
在提交代码审查前整理
先对齐缩排再提交,审查者便能专注于逻辑而非格式。差异也更易阅读。
放入规格书或文件
将格式化後的 SQL 粘贴数据,读者便能追踪其结构。搭配大写转换,印刷品上也清楚易读。
分析缓慢查询的结构
由于可用肉眼确认子查询的深度与结合的数量,在阅读执行计画之前便能先有个大概判断。
与 SQL 相关的术语
- SQL 方言
- 指各资料库产品之间语法的差异。由于各产品在标准 SQL 上加入了自有扩充,格式化时便需要指定。
- 子查询
- 指嵌套写在另一个 SQL 语句之中的查询。越深越难阅读,因此是缩排效果最大的部分。
- JOIN
- 指结合多个资料表来取得数据的语法。结合条件容易变长,换行位置会左右可读性。
- 预备语句
- 指以事後填入值的形式组建查询的方式。是防范 SQL 注入的基本。
- SQL 注入
- 指在输入值中混入 SQL 片段,使其执行非预期查询的攻击。以字符串串接组建 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 即可无需密码登录——这一古典漏洞至今仍是安全培训的标准教材。