SQL基础查询核心是SELECT...FROM...语句,配合WHERE筛选、ORDER BY排序、GROUP BY分组及聚合函数实现日常取数需求,生产环境应避免SELECT*而明确指定字段。

SQL基础查询核心就一条语句:SELECT ... FROM ...,配合 WHERE、ORDER BY、GROUP BY 等子句就能覆盖绝大多数日常取数需求。不复杂,但细节决定能不能快速写出正确结果。
查某张表的全部数据(入门第一句)
刚接触数据库时最常写的语句,适合看表结构、确认数据是否导入成功:
SELECT * FROM users;
⚠️注意:生产环境慎用 SELECT *,尤其表字段多或数据量大时,会拖慢查询、增加网络开销。建议明确写需要的字段,比如:
SELECT id, name, email, created_at FROM users;
带条件筛选:WHERE 是关键开关
查“满足什么条件”的数据,WHERE 后跟布尔表达式。常见写法:
- 单条件:查状态为“已激活”的用户
WHERE status = 'active' - 多条件:查2024年注册且性别为女的用户
WHERE YEAR(created_at) = 2024 AND gender = 'female' - 范围判断:查订单金额在100到500之间的记录
WHERE amount BETWEEN 100 AND 500 - 模糊匹配:查姓名含“小”字的用户
WHERE name LIKE '%小%'(% 表示任意字符) - 空值判断:查手机号为空的用户
WHERE phone IS NULL(不能用 = NULL)
排序与去重:让结果更可控
默认查出来的顺序是无序的,加 ORDER BY 才能按需排列:
SELECT name, score FROM students ORDER BY score DESC;
DESC 表示降序(从高到低),ASC 是升序(可省略)。想按多个字段排?比如先按部门,再按入职时间:
ORDER BY dept_name ASC, hire_date DESC
去重用 DISTINCT,比如查所有出现过的城市:
SELECT DISTINCT city FROM users;
注意:DISTINCT 作用于整行,如果选了多个字段,只有所有字段组合完全相同时才去重。
分组统计:GROUP BY + 聚合函数是分析起点
想看每个部门有多少人、平均薪资多少?必须用 GROUP BY:
SELECT dept, COUNT(*) AS user_count, AVG(salary) AS avg_salary FROM employees GROUP BY dept;
常用聚合函数还有 SUM()、MAX()、MIN()、COUNT(字段) 等。记住一个铁律:SELECT 中所有非聚合字段,都必须出现在 GROUP BY 后面。否则多数数据库会报错。
还想筛出人数超过5人的部门?用 HAVING(不是 WHERE):
HAVING COUNT(*) > 5
因为 WHERE 在分组前过滤行,HAVING 在分组后过滤组。
基本上就这些。把 SELECT、WHERE、ORDER BY、GROUP BY 这四个子句搭好骨架,再根据场景填上字段和条件,90% 的基础查询就跑起来了。










