# MySQL 格式化器

按照 MySQL 规则格式化 MySQL 查询和脚本，支持反引号标识符、字符串中的反斜杠转义、# 注释和 DELIMITER 代码块。每个子句各占一行，列和条件会缩进，ON DUPLICATE KEY UPDATE 等 MySQL 子句则保持在一起。未闭合的字符串、注释和括号会报告行号和列号，帮助开发者阅读和审查数据库代码。

## 常见问题

### 格式化器能识别哪些 MySQL 语法？

它能识别反引号标识符、带反斜杠转义和双写引号的单引号与双引号字符串、十六进制、位和国家字符集字面量，例如 X'FF'、B'101' 和 N'text'；还支持 _utf8mb4'text' 这类字符集引导符，以及 @user 变量。字面量内部的内容会保持原样。

### 注释如何处理？

井号注释 (#) 和双连字符注释 (--) 会保留在原处。与 MySQL 一样，双连字符后面只有跟着空格或换行时才会开始注释，因此 a--1 仍是一个表达式。可执行版本注释会按原样保留。

### 查询会如何排版？

SELECT、FROM、WHERE、GROUP BY、HAVING、ORDER BY 和 LIMIT 等主要子句各自从新行开始，内容缩进排列。选出的列每行一个，AND 和 OR 从新行开始，每个连接也各占一行。

### 支持特定于 MySQL 的子句吗？

支持。ON DUPLICATE KEY UPDATE、LOCK IN SHARE MODE、FOR UPDATE 和 FOR SHARE 会作为一个完整子句保留在一起，不会拆分到多行。

### 可以格式化存储过程和触发器吗？

可以。DELIMITER 命令会各自保留在单独的行上，自定义分隔符（例如 // 或 $$）会结束语句，而带有 IF、WHILE 和 LOOP 的 BEGIN 与 END 代码块会缩进排列。

### 它会更改关键字的大小写吗？

不会。关键字、函数名称和标识符会保留你输入时的大小写，因此 select 和 SELECT 都会保持原样。只有空白和换行符会改变。

### 格式化器会检查我的查询是否有效吗？

它会检查字符串、带引号的标识符和块注释是否已闭合，以及括号是否平衡，并报告问题所在的行号和列号。它不会运行查询，也不会检查表名或完整的 MySQL 语法。

### 可以更改缩进吗？

可以。每级缩进可选择 2 个或 4 个空格，也可选择制表符。较短的括号列表会保留在一行，较长的列表和子查询则会展开成缩进代码块。

### 输入内容可以有多大？

每次请求最多可处理 1 MB 的 SQL，单条语句最多可包含 128 KB。包含许多语句的脚本会逐条格式化，并以空行分隔。

### 我的 SQL 会被保存吗？

不会。查询会在内存中格式化并立即返回。它们绝不会被保存，只会记录请求大小。

在这里投放广告？

[给我们发邮件](mailto:hi@dennn.is?subject=%E5%9C%A8%20OneClick%20Pro%20%E4%B8%8A%E6%8A%95%E6%94%BE%E5%B9%BF%E5%91%8A)

[广告 适用于 WordPress 的智能体就绪型插件套件。](https://sleekwp.com/?ref=oneclickpro)
