SQL格式化

点击「格式化」或「压缩」后,结果将显示在此处

在线SQL格式化工具,免费支持SQL语句格式化、压缩、美化。支持MySQL、PostgreSQL、SQL Server等,关键字大小写转换,语法高亮,本地浏览器运行。

下面是极速工具给你整理部分常用命令,并补充了一下简短示例、关键点、注意事项,区分标准通用与数据库特有差异

基础SQL命令清单

  1. SELECT 提取数据
  2. UPDATE 更新数据
  3. DELETE 删除行数据
  4. INSERT INTO 插入新行
  5. CREATE DATABASE 创建数据库
  6. ALTER DATABASE 修改数据库属性
  7. CREATE TABLE 创建数据表
  8. ALTER TABLE 修改表结构
  9. DROP TABLE 删除数据表
  10. CREATE INDEX 创建索引
  11. DROP INDEX 删除索引

1. SELECT 查询数据

语法

SELECT column_name(s) FROM table_name WHERE condition ORDER BY column_name [ASC|DESC]
  • column_name(s):查询列,*代表全部列
  • table_name:表名
  • WHERE condition:筛选条件(可选)
  • ORDER BY:排序,ASC升序(默认),DESC降序(可选)

示例

-- 查询指定列
SELECT id,name FROM user WHERE age>18 ORDER BY id DESC;
-- 查询去重
SELECT DISTINCT age FROM user;

2. INSERT INTO 插入数据

语法

INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...)

示例

INSERT INTO user(name,age) VALUES ('张三',22);

⚠️注意:多值VALUES (),(),()是MySQL扩展;旧版MSSQL不支持。

3. UPDATE 更新数据

语法

UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition

示例

UPDATE user SET age=23,name='李四' WHERE id=1;

⚠️高危:省略WHERE会更新整张表所有行。

4. DELETE 删除行

语法

DELETE FROM table_name WHERE condition

示例

DELETE FROM user WHERE id=5;

⚠️高危:省略WHERE删除全表数据;不会重置自增。清空表可用TRUNCATE TABLE table_name。

5. CREATE DATABASE 创建数据库

CREATE DATABASE db_name;

6. ALTER DATABASE 修改数据库

-- 修改字符集等属性,不同数据库参数不一样
ALTER DATABASE db_name CHARACTER SET utf8;

7. CREATE TABLE 创建表

语法

CREATE TABLE table_name (
    column1 data_type constraint,
    column2 data_type constraint,
    ...
)
  • data_type:数据类型 INT,VARCHAR(n),DATETIME
  • constraint约束:PRIMARY KEY、NOT NULL、UNIQUE

示例

CREATE TABLE user(
    id INT PRIMARY KEY NOT NULL,
    name VARCHAR(50) NOT NULL
);

⚠️自增:MySQL用AUTO_INCREMENT;MSSQL用IDENTITY(1,1),不属于标准SQL。

8. ALTER TABLE 修改表结构

添加列

ALTER TABLE table_name ADD column_name data_type;

删除列

ALTER TABLE table_name DROP COLUMN column_name;

修改字段类型/字段名语法 MySQL与MSSQL有差异。

9. DROP TABLE 删除表

DROP TABLE table_name;

直接删除表结构+所有数据,不可恢复。

10. CREATE INDEX 创建索引

CREATE INDEX index_name ON table_name (column_name);

作用:提升查询速度,会降低写入性能。

11. DROP INDEX 删除索引

-- MySQL写法
DROP INDEX index_name ON table_name;
-- MSSQL写法:DROP INDEX table_name.index_name

⚠️DROP INDEX语法MySQL和MSSQL略有区别。


条件、分组、连接关键字

WHERE 条件过滤(分组之前过滤行)

SELECT * FROM user WHERE age>18 AND name <> '';

ORDER BY 排序

SELECT * FROM user ORDER BY age ASC, id DESC;

GROUP BY 分组

搭配聚合函数:COUNT()、SUM()、AVG()、MAX()、MIN()

SELECT age,COUNT(*) total FROM user WHERE age>10 GROUP BY age;

HAVING 分组后过滤(对聚合结果过滤)

SELECT age,COUNT(*) total FROM user GROUP BY age HAVING COUNT(*) > 2;

区别:WHERE过滤原始行;HAVING过滤分组后的结果。

DISTINCT 返回不重复值

SELECT DISTINCT age FROM user;

JOIN 多表连接

SELECT t1.*,t2.* 
FROM table1 t1
INNER JOIN table2 t2 ON t1.id = t2.t1_id;
  • INNER JOIN:内连接,两边匹配的数据
  • LEFT JOIN:左连接,左表全部,右表匹配不到为NULL
  • RIGHT JOIN:右连接
  • FULL JOIN:全连接(MySQL不支持FULL JOIN,MSSQL支持)

标准SQL执行顺序(记忆)

FROM → WHERE → GROUP BY → HAVING → SELECT → DISTINCT → ORDER BY → LIMIT/TOP

LIMIT(MySQL) / TOP(MSSQL)不是标准SQL,跨库要避开。

跨MySQL&MSSQL开发注意点

  1. 表字段尽量不用关键字,不用反引号、[]方括号标识符。
  2. 判空优先标准函数:COALESCE(col,'默认值'),替代IFNULL / ISNULL。
  3. 逻辑判断优先CASE WHEN,不要用MySQL的IF()函数。
  4. 分页语法不通用,不要写LIMIT / TOP,业务层处理。
  5. 建表、自增、索引删除语法存在差异,DDL语句需要两套脚本;DML查询大部分可以通用。

常见问题 FAQ

SQL 格式化/压缩工具支持哪些功能?

支持 SQL 格式化(美化排版)、压缩(去除多余空白)、关键字大小写转换(大写/小写/保持原样)以及语法高亮,并提供示例、清空、复制等操作。

支持哪些数据库方言?

面向通用 SQL 语法,可处理 MySQL、PostgreSQL、SQL Server 等常用数据库的常见语句;涉及某数据库独有语法时,建议先用对应数据库环境验证。

关键字大小写转换会改变表名或字段名吗?

不会。大小写转换只作用于 SQL 关键字(SELECT、FROM、WHERE 等),字符串内容以及表名、字段名等标识符保持原样。

格式化会改变 SQL 的执行结果吗?

不会。格式化只调整换行与缩进,SQL 逻辑不变,压缩同理;字符串内部的空格会被原样保留,不参与缩进处理。

压缩时会删除注释吗?

会。压缩模式会去掉 -- 单行注释与 /* */ 块注释以减小体积;需要保留注释请使用格式化模式,或先备份再压缩。

数据会上传到服务器吗?

不会。格式化、压缩、大小写转换全部在浏览器本地完成,SQL 文本不会离开设备,可以断网使用。

格式化后仍报语法错误怎么办?

工具负责排版而不执行 SQL;若数据库仍提示错误,通常是语句本身的语法或对象问题,可以借助格式化后的清晰结构逐段检查表名、字段名与关键字拼写。

压缩和 gzip 有什么区别,都要做吗?

压缩去除的是 SQL 文本中的空白,gzip 是传输层压缩;两者可叠加使用,适合大量 SQL 脚本的存储与传输场景,本地维护时仍建议保持格式化状态。