新闻中心 分类>>

SQL基础查询怎么写_高频场景实例讲解便于理解使用【技巧】

2025-12-24 00:00:00
浏览次数:
返回列表
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'
  • 多条件:查2025年注册且性别为女的用户 WHERE YEAR(created_at) = 2025 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% 的基础查询就跑起来了。

搜索