查询数据是 MySQL 中最常见的操作,而 SELECT 语句就是数据查询的核心。无论是查看整张表、筛选部分字段,还是按条件查找记录,几乎都离不开 SELECT。
SELECT 的基本语法如下:
SELECT 字段列表
FROM 表名
[WHERE 条件];其中:
SELECT:表示查询字段列表:表示要查哪些列FROM:表示从哪张表查询WHERE:表示查询条件,可选
例如:
SELECT id, name, mobile
FROM user;如果要查看表中的全部字段,可以使用 *:
SELECT * FROM user;这表示返回 user 表中的所有列。
这种写法很方便,但在实际业务中要注意:
- 字段很多时会返回不必要的数据
- 不利于接口字段控制
- 某些场景会增加网络传输和读取成本
因此在正式业务 SQL 中,通常更推荐显式写出需要的字段。
如果只想查看部分列,可以把字段名写在 SELECT 后面,并用逗号分隔:
SELECT id, name, mobile
FROM user;也可以给字段起别名:
SELECT id, name AS username, mobile AS phone
FROM user;别名可以让结果更容易阅读,也适合报表展示和接口输出。
如果只想查询满足某个条件的记录,需要使用 WHERE:
SELECT *
FROM user
WHERE id = 1;还可以使用多个条件:
SELECT *
FROM user
WHERE age >= 18 AND city = '上海';WHERE 是查询中最核心的部分之一,常常与比较运算符、逻辑运算符、范围条件、模糊匹配一起使用。
IN 用于匹配多个可能的值,语义上可以理解为“是否在这个集合中”。
示例:
SELECT *
FROM user
WHERE city IN ('北京', '上海', '深圳');这条语句表示查询城市为北京、上海或深圳的用户。
如果不用 IN,往往需要写成:
SELECT *
FROM user
WHERE city = '北京' OR city = '上海' OR city = '深圳';相比之下,IN 更简洁,也更容易阅读。
BETWEEN ... AND ... 用于查询某个范围内的值。
例如查询年龄在 18 到 30 之间的用户:
SELECT *
FROM user
WHERE age BETWEEN 18 AND 30;也可以用于日期范围查询:
SELECT *
FROM orders
WHERE created_at BETWEEN '2026-01-01' AND '2026-01-31 23:59:59';它适合处理:
- 数值范围
- 日期范围
- 连续编号区间
LIKE 用于做字符串的模糊匹配。
常见通配符有:
%:匹配任意长度的任意字符_:匹配单个字符
例如:
SELECT *
FROM user
WHERE name LIKE '张%';表示查询姓名以“张”开头的记录。
再例如:
SELECT *
FROM article
WHERE title LIKE '%MySQL%';表示标题中只要包含 MySQL 就会被查询出来。
基础查询的核心就是 SELECT + FROM + WHERE。掌握查询全部字段、指定字段、条件查询、IN、BETWEEN ... AND ... 和 LIKE 之后,就已经能完成大部分常见单表查询。