SQL 编程语法速查手册
简洁记录常用 SQL 语法,便于快速回顾与查阅。
1. 基础查询
SELECT
1 2
| SELECT 列1, 列2 FROM 表名; SELECT * FROM 表名;
|
DISTINCT
1
| SELECT DISTINCT 列名 FROM 表名;
|
WHERE 子句
1
| SELECT * FROM 表名 WHERE 条件;
|
| 运算符 |
含义 |
= |
等于 |
<> 或 != |
不等于 |
> |
大于 |
< |
小于 |
>= |
大于等于 |
<= |
小于等于 |
BETWEEN |
在两值之间 |
LIKE |
模糊匹配 |
IN |
在列表内 |
IS NULL |
为空 |
IS NOT NULL |
不为空 |
逻辑运算符
LIKE 与通配符
1
| SELECT * FROM 表名 WHERE 列名 LIKE 'a%';
|
| 通配符 |
含义 |
% |
任意多个字符(含0个) |
_ |
单个字符 |
[a-c] |
括号内任一字符(如 a,b,c) |
[^a-c]或[!a-c] |
不在括号内的任一字符 |
IN / NOT IN
1 2
| SELECT * FROM 表名 WHERE 列名 IN (值1, 值2); SELECT * FROM 表名 WHERE 列名 NOT IN (值1, 值2);
|
BETWEEN / NOT BETWEEN
1 2
| SELECT * FROM 表名 WHERE 列名 BETWEEN 值1 AND 值2; SELECT * FROM 表名 WHERE 列名 NOT BETWEEN 值1 AND 值2;
|
别名 AS
1
| SELECT 列名 AS 别名 FROM 表名 AS 别名;
|
ORDER BY 排序
1
| SELECT * FROM 表名 ORDER BY 列1 ASC, 列2 DESC;
|
LIMIT / TOP
- MySQL / PostgreSQL / SQLite:
1 2
| SELECT * FROM 表名 LIMIT 数字; SELECT * FROM 表名 LIMIT 偏移量, 数量;
|
- SQL Server:
1
| SELECT TOP 数字 * FROM 表名;
|
2. 数据操作
INSERT
1
| INSERT INTO 表名 (列1, 列2) VALUES (值1, 值2);
|
UPDATE
1
| UPDATE 表名 SET 列1 = 新值, 列2 = 新值 WHERE 条件;
|
DELETE
1
| DELETE FROM 表名 WHERE 条件;
|
3. 数据定义
数据库操作
1 2
| CREATE DATABASE 数据库名; DROP DATABASE 数据库名;
|
表操作
1 2 3 4 5 6 7
| CREATE TABLE 表名 ( 列1 数据类型 约束, 列2 数据类型 约束, ... );
DROP TABLE 表名;
|
约束
| 约束 |
说明 |
NOT NULL |
列值不能为空 |
UNIQUE |
列值唯一 |
PRIMARY KEY |
主键(唯一且非空) |
FOREIGN KEY |
外键,引用另一表的主键 |
CHECK |
检查条件 |
DEFAULT 默认值 |
默认值 |
AUTO_INCREMENT (MySQL) / IDENTITY (SQL Server) / SERIAL (PostgreSQL) |
自动递增 |
示例
1 2 3 4 5 6
| CREATE TABLE Students ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50) NOT NULL, age INT CHECK (age > 0), city VARCHAR(50) DEFAULT '未知' );
|
ALTER 修改表结构
1 2 3 4 5
| ALTER TABLE 表名 ADD 列名 数据类型; ALTER TABLE 表名 DROP COLUMN 列名; ALTER TABLE 表名 ALTER COLUMN 列名 新数据类型; ALTER TABLE 表名 MODIFY COLUMN 列名 新数据类型; ALTER TABLE 表名 RENAME COLUMN 旧名 TO 新名;
|
4. 连接与集合
JOIN 连接
1 2 3 4 5 6 7 8 9 10 11
| SELECT * FROM 表1 INNER JOIN 表2 ON 表1.列 = 表2.列;
SELECT * FROM 表1 LEFT JOIN 表2 ON 表1.列 = 表2.列;
SELECT * FROM 表1 RIGHT JOIN 表2 ON 表1.列 = 表2.列;
SELECT * FROM 表1 FULL JOIN 表2 ON 表1.列 = 表2.列;
|
UNION / UNION ALL
1 2 3 4 5 6 7
| SELECT 列 FROM 表1 UNION SELECT 列 FROM 表2;
SELECT 列 FROM 表1 UNION ALL SELECT 列 FROM 表2;
|
5. 函数
聚合函数
| 函数 |
作用 |
AVG(列) |
平均值 |
COUNT(列) |
计数(可用 * 计行数) |
MAX(列) |
最大值 |
MIN(列) |
最小值 |
SUM(列) |
求和 |
FIRST(列) |
第一个值 (MS Access) |
LAST(列) |
最后一个值 (MS Access) |
字符串函数
| 函数 |
作用 (示例) |
UCASE(列) 或 UPPER(列) |
转大写 |
LCASE(列) 或 LOWER(列) |
转小写 |
MID(列, 开始, 长度) |
提取子串 (MySQL:SUBSTRING) |
LEN(列) 或 LENGTH(列) |
字符串长度 |
FORMAT(列, 格式) |
格式化 (日期/数值,不同数据库语法不同) |
数值函数
日期函数
| 函数 |
作用 (示例) |
NOW() |
当前日期和时间 (MySQL) |
DATE() |
提取日期部分 |
| 其他数据库差异大,使用时查阅对应文档 |
|
6. 分组与筛选
GROUP BY
1
| SELECT 列, 聚合函数 FROM 表名 GROUP BY 列;
|
HAVING
1 2
| SELECT 列, 聚合函数 FROM 表名 GROUP BY 列 HAVING 条件;
|
7. 索引
CREATE INDEX
1 2
| CREATE INDEX 索引名 ON 表名 (列1, 列2); CREATE UNIQUE INDEX 索引名 ON 表名 (列);
|
DROP INDEX
1 2
| DROP INDEX 索引名 ON 表名; DROP INDEX 表名.索引名;
|
8. 视图
创建视图
1
| CREATE VIEW 视图名 AS SELECT 语句;
|
删除视图
9. 注释
提示:不同数据库(MySQL、SQL Server、PostgreSQL、SQLite)语法细节可能略有差异,实际使用时请根据具体环境微调。
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 slowbirdie.top@outlook.com