菜鸟科技网

sql命令 换行

  1. 在编写 SQL 脚本时:直接使用 Enter 键换行,SQL 语句中的换行、空格和缩进通常被忽略(字符串和注释内除外),所以你可以自由地格式化代码。
  2. 在执行命令行工具时:在语句末尾加上分号 ,然后按 Enter 键执行,或者,在换行后输入 \G (在 MySQL/MariaDB 中) 来获得更易读的纵向输出。
  3. 在应用程序代码中:将 SQL 语句定义为一个 多行字符串,具体语法取决于你使用的编程语言(如 Python, Java, JavaScript, C# 等)。
  4. 在数据库客户端工具中:通常有“执行”按钮或快捷键(如 F9),工具会自动处理整个脚本,无论其中有多少换行。

在 SQL 脚本文件中 (.sql 文件)

这是最常见的情况,当你编写一个包含多个子句(如 SELECT, FROM, WHERE, JOIN)的复杂查询时,为了方便自己和他人阅读,你会进行格式化。

sql命令 换行-图1
(图片来源网络,侵删)

最佳实践:

  • 大写关键字:将 SELECT, FROM, WHERE 等关键字大写。
  • 缩进:对 SELECT 的列列表、WHERE 条件、JOIN 等进行缩进。
  • 逻辑分组:将相关的条件放在一起。

示例:

一个未经格式化的、难以阅读的查询:

SELECT u.user_id, u.username, o.order_id, o.order_date, o.total_amount FROM users u JOIN orders o ON u.user_id = o.user_id WHERE u.status = 'active' AND o.order_date > '2025-01-01' ORDER BY o.order_date DESC;

一个格式化后、易于阅读的查询:

sql命令 换行-图2
(图片来源网络,侵删)
SELECT
    u.user_id,
    u.username,
    o.order_id,
    o.order_date,
    o.total_amount
FROM
    users AS u
JOIN
    orders AS o ON u.user_id = o.user_id
WHERE
    u.status = 'active'
    AND o.order_date > '2025-01-01'
ORDER BY
    o.order_date DESC;

关键点:

  • 这种换行和缩进对数据库引擎来说没有任何影响,它只是让人类更容易理解代码。
  • 别忘了在每个 SQL 语句的末尾加上分号 ,这表示一个语句的结束。

在命令行工具中 (如 mysql, psql, sqlcmd)

在命令行终端中直接输入 SQL 命令时,换行的方式取决于你的工具。

a) 标准换行和执行

在大多数命令行客户端(如 MySQL, PostgreSQL, SQL Server 的 sqlcmd)中,你可以直接输入多行语句,当输入结束时,用分号 然后按 Enter 键,整个语句就会被执行。

MySQL (mysql) 示例:

sql命令 换行-图3
(图片来源网络,侵删)
mysql> SELECT user_id, username
    -> FROM users
    -> WHERE status = 'active';
+----------+----------+
| user_id  | username |
+----------+----------+
|        1 | alice    |
|        2 | bob      |
+----------+----------+
2 rows in set (0.00 sec)
  • -> 是 MySQL 的提示符,表示它正在等待你输入当前语句的其余部分。

b) 使用 \G 进行纵向输出 (MySQL / MariaDB 特有)

当查询结果列很多时,横向显示会很混乱,MySQL 和 MariaDB 提供了一个非常有用的 \G 选项,它可以将查询结果以纵向、易读的格式输出。

示例:

SELECT * FROM users WHERE user_id = 1\G
*************************** 1. row ***************************
  user_id: 1
username: alice
 email: alice@example.com
  status: active
create_time: 2025-10-27 10:00:00
1 row in set (0.00 sec)

注意:使用 \G 时,末尾不需要分号


在应用程序代码中

在用 Python, Java, PHP 等语言编写代码时,你需要将 SQL 字符串传递给数据库驱动程序,为了避免在一行中写超长的字符串,可以使用多行字符串语法。

Python 示例

使用三重引号 或 来定义多行字符串。

import sqlite3
# 定义一个多行 SQL 查询
sql_query = """
SELECT
    u.user_id,
    u.username,
    o.order_id,
    o.order_date
FROM
    users AS u
JOIN
    orders AS o ON u.user_id = o.user_id
WHERE
    u.status = 'active'
ORDER BY
    o.order_date DESC;
"""
# 连接数据库并执行
conn = sqlite3.connect('my_database.db')
cursor = conn.cursor()
cursor.execute(sql_query)
results = cursor.fetchall()
for row in results:
    print(row)
conn.close()

Java 示例

Java 13+ 支持文本块,非常适合写 SQL。

// Java 13+
String sqlQuery = """
    SELECT
        u.user_id,
        u.username,
        o.order_id,
        o.order_date
    FROM
        users AS u
    JOIN
        orders AS o ON u.user_id = o.user_id
    WHERE
        u.status = 'active'
    ORDER BY
        o.order_date DESC;
    """;
// 使用 JDBC 执行...
// PreparedStatement pstmt = conn.prepareStatement(sqlQuery);
// ...

对于旧版 Java,通常使用字符串连接或 StringBuilder。


在数据库 GUI 客户端中 (如 DBeaver, DataGrip, SQL Server Management Studio)

这些图形化工具通常有一个SQL 编辑器,它们的设计就是为了方便编写和执行多行 SQL。

  • 编写:像在文本编辑器一样,自由地使用 Enter、Tab 键进行换行和缩进。
  • 执行:你可以选择执行整个脚本(通常有一个“闪电”图标或 "Execute" 按钮),或者只执行光标所在位置的语句(快捷键如 Ctrl+EnterF9)。

这些工具非常智能,能正确处理带分号的多行语句。

场景 如何换行 关键点
SQL 脚本文件 直接按 Enter 键进行换行和缩进。 提高可读性,不影响执行,语句末尾需加 。
命令行工具 输入多行,用 结尾后按 Enter 执行。 MySQL/MariaDB 可用 \G 替代 获得纵向输出。
应用程序代码 使用语言的多行字符串语法(如 Python 的 )。 将 SQL 代码与程序逻辑清晰分离,易于维护。
GUI 客户端 像在记事本一样自由换行和缩进。 使用工具的“执行”按钮或快捷键来运行脚本。
分享:
扫描分享到社交APP
上一篇
下一篇