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 会被保存吗?
不会。查询会在内存中格式化并立即返回。它们绝不会被保存,只会记录请求大小。