在 SQL 中,合理的换行格式可以提高代码的可读性和维护性。以下是推荐的 SQL 换行格式规范,适用于大多数数据库(MySQL、PostgreSQL、SQL Server、ClickHouse 等):


📜 SQL 换行格式规范

1. 子句分行

每个主要子句(SELECT, FROM, WHERE, GROUP BY 等)单独一行:

1
2
3
4
5
6
7
8
9
10
11
12
SELECT
column1,
column2
FROM
table_name
WHERE
condition1
AND condition2
GROUP BY
column1
ORDER BY
column2;

2. 多列分行

查询多列时,每列单独一行并缩进:

1
2
3
4
5
6
7
SELECT
user_id,
username,
email,
created_at
FROM
users;

3. JOIN 语句

JOINON 条件分行对齐:

1
2
3
4
5
6
7
8
SELECT
u.user_id,
o.order_id
FROM
users u
JOIN
orders o
ON u.user_id = o.user_id;

4. WHERE 条件

多条件时,每个条件一行,逻辑运算符(AND/OR)放在行首:

1
2
3
4
WHERE
status = 'active'
AND created_at > '2023-01-01'
OR (is_premium = true AND login_count > 10);

5. 嵌套查询

子查询缩进并分行:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT
user_id,
username
FROM
users
WHERE
user_id IN (
SELECT DISTINCT
user_id
FROM
orders
WHERE
amount > 100
);

6. CASE WHEN 语句

每个分支分行缩进:

1
2
3
4
5
6
7
8
9
SELECT
user_id,
CASE
WHEN age < 18 THEN 'Underage'
WHEN age BETWEEN 18 AND 65 THEN 'Adult'
ELSE 'Senior'
END AS age_group
FROM
users;

7. 函数调用

参数过多时换行对齐:

1
2
3
4
5
6
7
8
SELECT
CONCAT(
first_name,
' ',
last_name
) AS full_name
FROM
employees;

8. INSERT/UPDATE 语句

字段和值分行对齐:

1
2
3
4
5
6
7
8
9
INSERT INTO users (
user_id,
username,
email
) VALUES (
101,
'john_doe',
'john@example.com'
);

格式对比示例

❌ 不推荐(紧凑难读)

1
SELECT user_id, username, email FROM users WHERE status='active' AND created_at>'2023-01-01' ORDER BY user_id;

✅ 推荐(清晰易维护)

1
2
3
4
5
6
7
8
9
10
11
SELECT
user_id,
username,
email
FROM
users
WHERE
status = 'active'
AND created_at > '2023-01-01'
ORDER BY
user_id;

⚙️ 工具推荐

  1. SQL 格式化工具
  • SQLFormat(在线)
  • IDE 插件:VSCode 的 _SQL Formatter_、JetBrains 的 SQL Delimiter
  1. 团队规范
    1
    2
    3
    4
    ## SQL 风格指南
    - 关键字大写(如 `SELECT`, `WHERE`
    - 缩进:4个空格
    - 表名/列名:小写 + 下划线(如 `user_orders`

📌 核心原则

  1. 一致性:团队统一风格
  2. 可读性:即使半年后也能快速理解
  3. 可扩展性:方便后续添加新条件/列

合理换行能让 SQL 像诗一样优雅! 🚀