一、基本结构
SELECT 字段1, 字段2, ...
FROM 表名
WHERE 条件
GROUP BY 分组字段
HAVING 分组后的条件
ORDER BY 排序字段 ASC/DESC
LIMIT 数量 OFFSET 起始位置;
二、关键子句详解 + 示例
1. SELECT
:选择要查询的字段
SELECT name, age FROM users;
2. FROM
:指定数据来源的表
FROM users
3. WHERE
:筛选条件(布尔表达式)
SELECT * FROM users WHERE age > 18 AND gender = 'male';
常见操作符:
-
=
,<>
,<
,>
,<=
,>=
-
BETWEEN
,IN
,LIKE
,IS NULL
4. ORDER BY
:排序
SELECT * FROM users ORDER BY age DESC, name ASC;
5. LIMIT
和 OFFSET
:限制结果数量,分页常用
SELECT * FROM users ORDER BY id LIMIT 10 OFFSET 20;
三、聚合函数 + 分组
6. 聚合函数(用于计算)
-
COUNT(*)
:计数 -
SUM(字段)
-
AVG(字段)
-
MAX(字段)
-
MIN(字段)
SELECT COUNT(*) FROM users WHERE gender = 'female';
7. GROUP BY
:分组统计
SELECT gender, COUNT(*) FROM users GROUP BY gender;
8. HAVING
:对分组后的结果进一步筛选(类似 WHERE)
SELECT gender, COUNT(*) as cnt
FROM users
GROUP BY gender
HAVING cnt > 10;
四、连接查询(JOIN)
9. 内连接(INNER JOIN
):匹配双方都有的记录
SELECT users.name, orders.id
FROM users
INNER JOIN orders ON users.id = orders.user_id;
10. 左连接(LEFT JOIN
):保留左表全部记录
SELECT users.name, orders.id
FROM users
LEFT JOIN orders ON users.id = orders.user_id;
五、子查询 & 视图
11. 子查询(嵌套 SELECT)
SELECT name FROM users WHERE id IN (
SELECT user_id FROM orders WHERE total > 100
);
12. 视图(CREATE VIEW
)
CREATE VIEW active_users AS
SELECT * FROM users WHERE active = 1;
六、其他常用关键词
关键词 | 作用 |
---|---|
DISTINCT | 去重 |
AS | 起别名 |
CASE WHEN THEN ELSE END | 条件表达式 |
SELECT name,
CASE WHEN age >= 18 THEN 'Adult' ELSE 'Minor' END AS age_group
FROM users;