良好的 SQL 书写风格能够极大地提升代码的可读性和可维护性,尤其是在团队协作和代码审查时。无论是简单的查询还是复杂的多表关联,规范的格式都能帮助开发者快速理解语义。
| 规则 | 说明 | 示例 |
|---|---|---|
| 关键字大写 | SQL 关键字使用全大写,与用户标识符区分 | SELECT、FROM、WHERE |
| 主子句换行 | SELECT / FROM / WHERE / JOIN 等主要子句单独占一行 | 每个子句顶格或缩进对齐 |
| 列名缩进 | SELECT 后的列名列表相对主关键字缩进一级 | 4 个空格或 1 个 Tab |
| 括号对齐 | 嵌套子查询的括号单独一行,内部内容缩进 | 与外层语句保持层级关系 |
| 逗号前置/后置 | 列名之间的逗号统一放在行末或行首,保持一致 | id, 或 , id |
| 类别 | 关键字 |
|---|---|
| 查询 | SELECT FROM WHERE GROUP BY HAVING ORDER BY LIMIT OFFSET |
| 联接 | JOIN INNER JOIN LEFT JOIN RIGHT JOIN FULL JOIN CROSS JOIN ON |
| 操作符 | AND OR NOT IN NOT IN LIKE BETWEEN IS NULL EXISTS |
| 数据操作 | INSERT INTO VALUES UPDATE SET DELETE FROM |
| 集合操作 | UNION UNION ALL INTERSECT EXCEPT |
| DDL | CREATE TABLE ALTER TABLE DROP TABLE INDEX |
-- 注释内容:单行注释,适用于对某一行 SQL 的解释/* 注释内容 */:多行注释,适用于大段说明或临时注释掉代码块SELECT *,明确指定所需列名,减少数据传输量WHERE YEAR(create_time) = 2024 会导致全表扫描)LIMIT 分页时,配合索引覆盖扫描(覆盖索引)可以大幅提升深翻页性能