一、基本结构

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. LIMITOFFSET:限制结果数量,分页常用

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;