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

3次阅读

sql基础查询核心是 select…FROM…,搭配 WHERE、ORDER BY、GROUP BY 等子句覆盖 80% 需求;查单表需明确列名、注意 字符串 引号与空格;多表用 LEFT JOIN 防 数据丢失 且必写 ON;聚合须 GROUP BY 非聚合字段,HAVING 筛分组;排序后加 LIMIT/TOP 取前 N 条。

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

SQL 基础查询核心就一条语句:SELECT … FROM …,搭配 WHERE、ORDER BY、GROUP BY 等子句就能覆盖 80% 的日常取数需求。不复杂,但细节决定能不能查得准、查得快。

查单张表:最常用也最容易出错

比如查用户表里所有北京的 VIP 用户:

  • SELECT * 能用但慎用——字段多、性能差、后续改逻辑易出错,建议明确写列名,如 SELECT user_id, name, city
  • WHERE city = ‘ 北京 ’ AND is_vip = 1 —— 字符串加单引号,数字不用;多个条件用 AND/ OR 连接
  • 注意大小写和空格:’ 北京 ’ ≠ ‘ 北京 ‘(末尾有空格),可用 TRIM(city) = ‘ 北京 ’ 防一手

查多张表:JOIN 是关键,别只记得 INNER

想看每个订单对应的用户姓名,需关联 orders 和 users 表:

  • INNER JOIN:只返回两表都匹配的记录(比如没填收货信息的订单会被漏掉)
  • LEFT JOIN 更常用:以 orders 为主,即使 users 找不到对应用户,订单数据仍保留,user_name 显示为 NULL
  • 必须写 ON o.user_id = u.id,别漏 ON 条件,否则变笛卡尔积——1 万订单 × 1 万用户 = 1 亿行!

聚合统计:count/SUM/AVG 不是“算完就完”

统计各城市的订单总数、平均金额:

  • GROUP BY city 分组,SELECT 里所有非聚合字段(如 city)都得出现在 GROUP BY 中
  • COUNT(*) 统计行数,COUNT(user_id) 会自动忽略 NULL 值,选哪个看业务定义
  • HAVING COUNT(*) > 100 筛分组结果(WHERE 是筛行,HAVING 是筛组)

排序与限制:别让结果“飘着”

查最近 10 笔高金额订单:

  • ORDER BY amount DESC —— DESC 降序(默认 ASC 升序),按金额从高到低排
  • LIMIT 10mysql/postgresql)或 TOP 10(SQL Server)取前 N 条
  • 注意:LIMIT 要写在 ORDER BY 后面,否则先截断再排序,结果就不是“最近 10 笔”了

基本上就这些。写 SQL 别 功能,先确保能跑通、结果对,再考虑优化。字段别偷懒写 *,JOIN 别忘 ON,GROUP BY 别漏字段——踩过坑,自然就熟了。

站长
版权声明:本站原创文章,由 站长 2025-12-19发表,共计1048字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
1a44ec70fbfb7ca70432d56d3e5ef742
text=ZqhQzanResources