SQL 速查表及命令 & Descript离子 (2026)

⚡ 智能摘要

这份 SQL 速查表收集了开发人员日常工作中常用的命令,并按任务进行了分类。每个部分都提供了精确的语法和简明的描述,涵盖了数据库创建、数据类型、查询、筛选、连接和索引等内容。

  • 🗄️ 结构化命令: CREATE DATABASE、CREATE TABLE、ALTER、RENAME 和 DROP 定义和重塑模式。
  • 🔢 资料类型: 数值、文本、日期和二进制类型设置每一列的存储大小和有效范围。
  • 🔎 检索命令: 使用 WHERE、IN、LIKE 和 REGEXP 的 SELECT 语句可以将结果集缩小到重要的行。
  • ✍️ 修改命令: INSERT、UPDATE 和 DELETE 都会更改存储的行,并且每个操作都接受一个可选条件。
  • 📊 聚合命令: 按 COUNT、MIN、MAX、SUM 和 GROUP BY 分组 AVG 汇总数据,并筛选分组。
  • 🔗 组合指令: JOIN 将相邻的表合并,而 UNION 将两个查询的结果堆叠在一起。

SQL 备忘单

创建数据库和表命令

每个 SQL 会话都以一个数据库和至少一个用于保存行的表开始。

命令 描述
CREATE DATABASE database1; 创建数据库
CREATE DATABASE IF NOT EXISTS database1; IF NOT EXISTS 允许您指示 MySQL 服务器在创建数据库之前会检查是否存在名称相似的数据库。
CREATE DATABASE IF NOT EXISTS database1 CHARACTER SET latin1 COLLATE latin1_swedish_ci; latin1 字符集使用 latin1_swedish_ci 排序规则,即瑞典语不区分大小写的排序规则。
SHOW DATABASES; 运行此 SQL 命令即可查看现有数据库列表。
CREATE TABLE [IF NOT EXISTS] TableName (fieldname dataType [optional parameters]) ENGINE = storage Engine; 创建表语法

SQL 数据类型速查表

列的数据类型决定了它可以存储的内容以及每一行占用的空间大小。

数字数据类型

命令 描述
TINYINT( ) -128 至 127 为正常值,0 至 255 为无符号值。
SMALLINT( ) -32768 至 32767 正常
0 至 65535 无符号。
MEDIUMINT( ) -8388608 至 8388607 正常
0 至 16777215 无符号。
INT( ) -2147483648 至 2147483647 正常
0 至 4294967295 无符号。
BIGINT( ) -9223372036854775808 至 9223372036854775807 正常
0 至 18446744073709551615 无符号。
FLOAT 带有浮动小数点的小近似数。
DOUBLE( , ) 一个带有浮点小数点的较大近似值。
DECIMAL( , ) 精确的定点数。是存储货币值的首选方式。

文本数据类型

命令 描述
CHAR( ) 长度固定的段落,长度为 0 到 255 个字符。
VARCHAR( ) 长度可变的段落,长度范围为 0 到 65535 个字符。
TINYTEXT 最大长度为 255 个字符的字符串。
TEXT 最大长度为 65535 个字符的字符串。
BLOB 最大长度为 65535 字节的二进制数据。
MEDIUMTEXT 最大长度为 16777215 个字符的字符串。
MEDIUMBLOB 最大长度为 16777215 字节的二进制数据。
LONGTEXT 最大长度为 4294967295 个字符的字符串。
LONGBLOB 最大长度为 4294967295 字节的二进制数据。

日期/时间数据类型

命令 描述
DATE YYYY-MM-DD
DATETIME YYYY-MM-DD HH:MM:SS
TIMESTAMP YYYY-MM-DD HH:MM:SS,以 UTC 格式存储,并转换为会话时区。
TIME 时:分:秒

其他数据类型

命令 描述
ENUM 从预定义的文本值列表中选择一个文本值进行存储。
SET 它还用于存储从预定义文本值列表中选择的文本值。它可以存储多个值。
BOOL TINYINT(1) 的同义词,用于存储布尔值。
BINARY 与 CHAR 类似;区别在于文本以二进制格式存储。
VARBINARY 与 VARCHAR 类似;区别在于文本以二进制格式存储。

SQL SELECT 语句命令

SELECT 是用于从表中读取行的命令。

命令 描述
SELECT * FROM table1; 从表中选择每一列。
SELECT t1, t2, t3, t4 FROM table1; 我们只对获取 t1、t2、t3 和 t4 字段感兴趣。
SELECT CONCAT(t1, ' (', t3, ')'), t4 FROM table2; 将列值合并到单个输出列中
SELECT column_name | value | expression [AS] alias_name; 别名字段名称语法

带有 AND、OR、IN、NOT IN 命令的 SQL WHERE 子句

WHERE 子句用于筛选行,下面的运算符可以组合使用。

命令 描述
SELECT * FROM tableName WHERE condition; WHERE 子句语法
SELECT * FROM table1 WHERE t1 = 2 AND t2 = 2008; WHERE 子句与 AND 逻辑运算符结合使用
SELECT * FROM table1 WHERE t1 = 1 OR t1 = 2; WHERE 子句与 OR 逻辑运算符结合使用
SELECT * FROM table2 WHERE t1 IN (1,2,3); WHERE 子句与 IN 关键字结合使用
SELECT * FROM table2 WHERE t1 NOT IN (1,2,3); WHERE 子句与 NOT IN 关键字结合使用
SELECT * FROM table2 WHERE t3 = 'Female'; WHERE 子句与等于 (=) 比较运算符结合使用
SELECT * FROM table3 WHERE t3 > 2000; WHERE 子句与大于 (>) 比较运算符结合使用
SELECT * FROM table1 WHERE t1 <> 1; WHERE 子句与不等于 (<>) 比较运算符结合使用

SQL 命令 INSERT INTO 表

命令 描述
INSERT INTO table_name(column_1, column_2, ...) VALUES (value_1, value_2, ...); SQL INSERT 命令的基本语法
INSERT INTO table1 (t1,t2,t3,t4) VALUES (X1,X2,X3,X4); 将数据插入表中
INSERT INTO table_1 SELECT * FROM table_2; 从另一个表插入数据到一个表中

SQL DELETE 命令

命令 描述
DELETE FROM table_name [WHERE condition]; 删除一行 MySQL

SQL更新命令

命令 描述
UPDATE table_name SET column_name = new_value [WHERE condition]; 更新命令语法

SQL 中的 ORDER BY:DESC 和 ASC 命令

命令 描述
SELECT statement... [WHERE condition | GROUP BY field_name(s) HAVING condition] ORDER BY field_name(s) [ASC | DESC]; ORDER BY 子句基本语法
SELECT {fieldName(s) | *} FROM tableName(s) [WHERE condition] ORDER BY fieldname(s) ASC | DESC [LIMIT N]; DESC 和 ASC 语法

SQL GROUP BY 和 HAVING 子句命令

通过...分组 将行折叠成组,并在形成组后进行 HAVING 筛选。

通过...分组

命令 描述
SELECT statements... GROUP BY column_name1[, column_name2, ...] [HAVING condition]; GROUP BY 语法

的Grouping 和聚合函数

命令 描述
SELECT t2, COUNT(t1) FROM table1 GROUP BY t2; 假设我们想要数据库中 t2 列值的总数。

HAVING 子句

命令 描述
SELECT * FROM table2 GROUP BY t1_id, t4 HAVING t1_id = x1; 返回表2中t1_id为x1的所有行的t4值。

SQL 通配符命令为 Like、NOT Like、Escape、( %)、( _ )

通配符允许 LIKE 匹配部分字符串。

% 是百分比通配符命令。 MySQL

命令 描述
SELECT statements... WHERE fieldname LIKE 'xxx%'; % 百分比通配符的基本语法,可匹配任意数量的字符

_ 下划线通配符命令

命令 描述
SELECT * FROM table1 WHERE t3 LIKE 'x2_'; 下划线与一个字符完全匹配。

不像通配符命令

命令 描述
SELECT * FROM table1 WHERE t3 NOT LIKE 'x2_'; 假设我们想要查找表 1 中 t3 值与模式不匹配的行。

转义关键字通配符命令

命令 描述
LIKE '67#%' ESCAPE '#'; 检查字符串“67%”,因为 # 会转义通配符。

SQL 正则表达式 (REGEXP)

命令 描述
SELECT statements... WHERE fieldname REGEXP 'pattern'; 正则表达式匹配的基本语法

正则表达式元字符

命令 描述
* 星号 (*) 元字符匹配其前面字符串的零个或多个实例。
+ 加号(+)元字符匹配其前面字符串的一个或多个实例。
? 问号(?)元字符匹配其前面字符串的零个或一个实例。
. 点(.)元字符匹配除换行符之外的任何单个字符。
[abc] 字符列表 [abc] 匹配任何包含在其中的字符。
[^abc] 字符列表 [^abc] 匹配除其所括字符之外的任何字符。
[A-Z] [AZ] 范围匹配任何大写字母。
[a-z] [az] 范围匹配任何小写字母。
[0-9] [0-9] 范围对应 0 到 9 之间的任何数字。
^ 插入符号 (^) 将比赛锚定在比赛的开头。
| 竖线(|)用于分隔不同的选项。
[[:<:]] [[:<:]] 标记用于匹配单词的开头。
[[:>:]] [[:>:]] 标记用于匹配单词的结尾。
[:class:] [:class:] 标记匹配字符类,例如 [:alpha:] 表示字母,[:space:] 表示空格,[:punct:] 表示标点符号,[:upper:] 表示大写字母。

SQL 函数命令

字符串函数

命令 描述
SELECT t1_id, t2, UCASE(t2) FROM table1; UCASE 函数接受一个字符串作为参数,并将所有字母转换为大写。

数值函数

命令 描述 例如:
DIV 整数除法 SELECT 23 DIV 6;
/ 分部 SELECT 23 / 6;
- 小组tracTION SELECT 23 - 6;
+ 增加 SELECT 23 + 6;
* 乘法 SELECT 23 * 6 AS multiplication_result;
% or MOD 系数 SELECT 23 % 6; or SELECT 23 MOD 6;
FLOOR 去掉数字的小数部分,并向下取整到最接近的整数。 SELECT FLOOR(23 / 6) AS floor_result;
ROUND 将带有小数位的数字四舍五入到最接近的整数。 SELECT ROUND(23 / 6) AS round_result;

存储函数

命令 描述
CREATE FUNCTION sf_name ([parameter(s)]) 强制性的。说明 MySQL 服务器创建一个名为 sf_name 的函数,其中可选参数在括号中定义。
RETURNS data type 必填项。指定函数返回的数据类型。
DETERMINISTIC 无论向该函数提供相同的参数,它都会返回相同的值。
STATEMENTS 函数执行的程序代码。

SQL 聚合函数命令

命令 描述
SELECT COUNT(t1_id) FROM table1 WHERE t1_id = 2; 计数功能
SELECT MIN(t3) FROM table2; MIN功能
SELECT MAX(t3) FROM table2; MAX功能
SELECT SUM(t4) FROM table3; SUM功能
SELECT AVG(t4) FROM table3; AVG function

SQL IS NULL 和 IS NOT NULL 命令

A 是一个缺失值,因此必须使用 IS NULL 而不是 equals 运算符进行测试。

命令 描述
SELECT COUNT(t3) FROM table1; COUNT 函数会忽略列中的 NULL 值。
CREATE TABLE table2(
t1_number int NOT NULL,
t2_names varchar(255),
t3 varchar(6)
);
NOT NULL 禁止列中出现空值。
column_name IS NULL
column_name IS NOT NULL
NULL 关键字基本语法
SELECT * FROM table1 WHERE t2_number IS NULL; IS NULL 的示例
SELECT * FROM table1 WHERE t2_number IS NOT NULL; IS NOT NULL 的示例

SQL AUTO_INCREMENT 命令

命令 描述
CREATE TABLE table1 (
t1_id int(11) AUTO_INCREMENT,
t2_name varchar(150) DEFAULT NULL,
t3 varchar(500) DEFAULT NULL,
PRIMARY KEY (t1_id)
);
自动增量语法

SQL — ALTER、DROP、RENAME、MODIFY

这些命令会修改一个已经包含数据的表。

命令 描述
ALTER TABLE table_name ADD COLUMN column_name data_type; ALTER 语法
DROP TABLE sample_table; DROP TABLE 语法
RENAME TABLE current_table_name TO new_table_name; RENAME 命令语法
ALTER TABLE table1 CHANGE COLUMN t1_names t1name char(250) NOT NULL; 更改关键字
ALTER TABLE table1 MODIFY t1name char(50) NOT NULL; 修改关键字
ALTER TABLE table1 ADD t4 date NULL AFTER t3; 关键字之后

SQL 限制和偏移

命令 描述
SELECT {fieldname(s) | *} FROM tableName(s) [WHERE condition] LIMIT N; LIMIT 关键字语法
SELECT * FROM table1 LIMIT 1, 2; LIMIT 查询中的偏移量:跳过 1 行,然后返回 2 行。

SQL 子查询命令

命令 描述
SELECT t1_name FROM table1 WHERE
category_id = (SELECT MIN(t1_id) FROM table2);
子查询

SQL JOINS 命令

JOINS 把两个表中的列合并到一个结果集中。

命令 描述
SELECT * FROM table1 CROSS JOIN table2; 交叉连接
SELECT table1.t1, table1.t2, table2.t1
FROM table1, table2
WHERE table2.id = table1.table2_id;
INNER JOIN
SELECT A.t1, B.t2, B.t3
FROM table2 AS A
LEFT JOIN table1 AS B
ON B.table2_id = A.id;
LEFT JOIN
SELECT A.t1, A.t2, B.t3
FROM table1 AS A
RIGHT JOIN table2 AS B
ON B.id = A.table2_id;
正确加入
SELECT A.t1, B.t2, B.t3
FROM table2 AS A
LEFT JOIN table1 AS B
USING (table2_id);
“ON” 和 “USING” 子句

SQL UNION 命令

UNION 将两个查询的行堆叠在一起,而 JOIN 则将它们扩展到更多列中。

命令 描述
SELECT column1, column2 FROM table1
UNION
SELECT column1, column2 FROM table2;
UNION 语法。重复行将被删除。
SELECT column1, column2 FROM table1
UNION ALL
SELECT column1, column2 FROM table2;
UNION ALL 会保留重复的行。

视图中的 SQL 命令

观看数 将查询语句以特定名称存储起来,以便像表一样重复使用。

命令 描述
CREATE VIEW view_name AS SELECT statement; 视图语法
DROP VIEW general_v_movie_rentals; Dropping 意见

SQL 索引命令

索引是一种查找结构,它可以大大加快对列的搜索速度。

命令 描述
CREATE INDEX id_index ON table_name(column_name); 添加索引基本语法
DROP INDEX index_id ON table_name; 删除索引基本语法

常见问题

不。SELECT 和 WHERE 等关键字在任何情况下都有效。大写是一种约定,用于区分命令和标识符。但是,在 Linux 系统中,表名区分大小写。

DELETE 语句会删除选定的行,并且可以回滚。TRUNCATE 语句会快速清空整个表并重置 AUTO_INCREMENT 值。DROP 语句会删除表定义本身。

FROM 和 JOIN 子句首先执行,然后是 WHERE、GROUP BY、HAVING、SELECT、ORDER BY,最后是 LIMIT 子句。这就是为什么在 SELECT 子句中定义的列别名不能在 WHERE 子句中使用的原因。

是的。文本转 SQL 助手会根据表结构将问题转换为查询语句。务必仔细阅读生成的 WHERE 和 JOIN 条件,因为看似合理的查询语句也可能返回错误的行。

是的。 Rev查看 AI 输出、优化慢查询以及阅读执行计划都需要熟练掌握命令。参考资料可以加快回忆速度,但不能取代理解。

总结一下这篇文章: