主题
SELECT 查
sql
SELECT id, name, email
FROM users
WHERE status = 1
ORDER BY id DESC
LIMIT 10 OFFSET 0;条件、排序和分页
sql
SELECT *
FROM users
WHERE age BETWEEN 18 AND 30
AND email LIKE '%@example.com'
ORDER BY created_at DESC, id DESC
LIMIT 20 OFFSET 0;聚合和分组
sql
SELECT status, COUNT(*) AS total
FROM users
GROUP BY status
HAVING COUNT(*) > 1
ORDER BY total DESC;WHERE 在分组前过滤行,HAVING 在分组后过滤聚合结果。
关联查询
sql
SELECT u.id, u.name, o.id AS order_id, o.amount
FROM users AS u
INNER JOIN orders AS o ON o.user_id = u.id
WHERE u.id = 1;常用连接:
INNER JOIN:只返回两边都匹配的数据。LEFT JOIN:保留左表全部数据,右表没有匹配时为NULL。RIGHT JOIN:保留右表全部数据,左表没有匹配时左侧字段为NULL。
