🐸 青蛙编程网
首页 / 数据库 / MySQL / 5. 查询基础:SELECT 与 WHERE

5. 查询基础:SELECT 与 WHERE

这是什么:SELECT = 从表里取数据的语句,一行取几列由你说了算;WHERE = 跟在后面的筛选条件,只留下符合条件的行。

为什么用:数据库 80% 的日常操作都是查询——后台要看用户列表,博客要列最新文章,都得靠它。没有 WHERE,上万行数据会一股脑全砸出来。

如何用:本章从 SELECT * 写到只取某几列,再加 WHERE 过滤,最后配 ORDER BY 排序和 LIMIT 限量。

5.1 SELECT:拿到你想要的列

SELECT * FROM `user`;                          -- 所有列(少用,浪费)
SELECT `username`, `email` FROM `user`;        -- 只要两列
SELECT `username` AS `name` FROM `user`;       -- AS 起别名
SELECT DISTINCT `email` FROM `user`;           -- 去重

生产里几乎不写 SELECT *,要几列取几列,理由:网络传输少、语义清楚、加列不炸代码。

5.2 WHERE:只留符合条件的行

SELECT * FROM `user` WHERE `age` > 10;
运算符 含义 示例
= > < >= <= !=/<> 比较 age >= 10
AND / OR / NOT 组合条件 age > 5 AND email IS NOT NULL
IN (…) 枚举匹配 username IN ('frog','panda')
LIKE 模糊匹配 username LIKE '%frog%'
IS NULL / IS NOT NULL 空值判断(不能用 = NULL) email IS NOT NULL

LIKE 通配符:% 代表任意个字符,_ 代表一个字符。

5.3 排序与限量

SELECT `username`, `age`
FROM `user`
WHERE `email` IS NOT NULL
ORDER BY `age` DESC          -- 降序(ASC 升序,默认)
LIMIT 3 OFFSET 0;            -- 取前 3 条,从第 0 条起(分页)

分页口诀:第 n 页取 LIMIT 10 OFFSET (n-1)*10。

5.4 完整查询四件套

把学过的装进一条语句(职场顺序必须这样写):

SELECT `username`, `age`        -- 1. 要哪些列
FROM `user`                     -- 2. 从哪张表
WHERE `age` IS NOT NULL         -- 3. 先过滤行
ORDER BY `age` DESC, `id` ASC   -- 4. 排序(同岁按 id 正排)
LIMIT 5;                        -- 5. 取几条

5.5 动手改

  1. 在 user 表加几条数据后,查「年龄最大的 2 人」
  2. 用 LIKE 找出邮箱含 frog 的用户
  3. 查第 2 页数据(每页 2 条),算 OFFSET

5.6 小结

  • 取列不贪 *;条件过滤靠 WHERE,空值用 IS NULL
  • ORDER BY 排序、LIMIT/OFFSET 分页
  • 顺序:SELECT → FROM → WHERE → ORDER BY → LIMIT

下一章:聚合与分组 🐸

📥 下载本章代码

ZIP 内含本章全部代码文件与说明,解压即用,与教程内容同步生成。