sql基础查询核心是select语句,需严格遵循SELECT-FROM-WHERE-ORDER BY-LIMIT顺序,注意字符串用单引号、空值用IS NULL判断、聚合须配GROUP BY。

SQL基础查询核心就一条:用 SELECT 从表里取出你需要的数据。写对不难,但真正用好得理解“查什么、从哪查、怎么筛、如何排”,下面直接讲实战中高频、易错、必须掌握的要点。
SELECT 基本结构:别漏了 FROM
很多初学者只写 SELECT name 就停了,结果报错——因为 SQL 要求明确指定数据来源。完整骨架是:
SELECT 列名1, 列名2… FROM 表名;
例如查用户姓名和邮箱:
SELECT username, email FROM users;
小技巧:
- 用
*查所有列(仅限调试或小表,生产环境避免) - 列名可加别名:
SELECT username AS name FROM users; - 支持表达式:
SELECT price * 0.9 AS discounted_price FROM products;
WHERE 条件过滤:精准定位关键数据
WHERE 是筛选的核心,写在 FROM 后面,决定“取哪些行”。常见写法:
SELECT * FROM orders WHERE status = ‘paid’ AND total > 100;
注意点:
- 字符串用单引号,数字不用:
WHERE category = 'books'✅,WHERE id = 123✅ - 空值判断用
IS NULL或IS NOT NULL,不能用= NULL - 模糊匹配用
LIKE:WHERE name LIKE 'A%'(查以 A 开头的名字) - 多个条件优先用括号明确逻辑:
WHERE (type = 'vip' OR type = 'admin') AND active = 1
ORDER BY 和 LIMIT:让结果更可控
查出来数据乱序?加 ORDER BY 排序;数据太多?用 LIMIT 控制返回条数。
SELECT * FROM logs ORDER BY created_at DESC LIMIT 10;
说明:
-
ASC升序(默认),DESC降序 - 可按多列排序:
ORDER BY status ASC, updated_at DESC -
LIMIT 5取前5条;LIMIT 10 OFFSET 20跳过前20条取10条(适合分页)
去重与简单聚合:一眼看懂数据分布
想看有多少种分类?某个字段有哪些唯一值?用 DISTINCT:
SELECT DISTINCT category FROM products;
想统计数量、平均值、最大值?基础聚合函数马上上手:
-
COUNT(*)总行数|COUNT(email)非空邮箱数 -
SUM(amount)求和|AVG(price)平均价|MAX(created_at)最新时间 - 聚合必须搭配
GROUP BY(按某列分组后统计):
SELECT status, COUNT(*) FROM orders GROUP BY status;
基本上就这些。不复杂但容易忽略细节——比如 WHERE 写在 ORDER BY 后面会报错,或者 GROUP BY 漏掉非聚合字段。动手写几遍,对照报错信息读提示,比背语法管用得多。