在MySQL数据库的日常使用中,查询多行数据是非常高频的操作,不同的查询场景需要搭配不同的语法规则来实现,下面会逐一介绍常见的多行数据查询实现方式。

基础全表多行查询
如果需要查询表中所有的行数据,直接使用SELECT *语句即可,这是最简单的多行查询方式,会返回目标表中的所有记录。
-- 查询user表中的所有多行数据 SELECT * FROM user;
带条件筛选的多行查询
实际场景中很少需要查询全表数据,通常会搭配WHERE子句添加筛选条件,只返回符合条件的结果行。
-- 查询user表中年龄大于18岁的所有用户数据 SELECT id, name, age FROM user WHERE age > 18;
如果需要多个条件同时满足,可以使用AND连接条件,多个条件满足其一则用OR连接。
-- 查询年龄大于18岁且状态为正常的用户 SELECT * FROM user WHERE age > 18 AND status = 'normal'; -- 查询年龄大于18岁或者状态为正常的用户 SELECT * FROM user WHERE age > 18 OR status = 'normal';
排序后的多行查询
如果需要对查询结果按照某个字段排序,可以搭配ORDER BY子句,默认是升序排列,降序需要添加DESC关键字。
-- 按照年龄升序查询所有用户数据 SELECT * FROM user ORDER BY age; -- 按照年龄降序查询所有用户数据 SELECT * FROM user ORDER BY age DESC;
分页查询多行数据
当表中数据量很大时,一次性返回所有数据会影响性能,这时候可以使用LIMIT子句实现分页查询,只返回指定范围的多行数据。
-- 查询前10条用户数据,LIMIT后面第一个参数是偏移量,第二个是返回行数 SELECT * FROM user LIMIT 0, 10; -- 查询第11到20条用户数据 SELECT * FROM user LIMIT 10, 10;
分组聚合后的多行查询
如果需要对数据进行分组统计后返回多行结果,可以搭配GROUP BY子句和聚合函数使用。
-- 按照部门分组,查询每个部门的员工数量 SELECT department, COUNT(*) AS user_count FROM user GROUP BY department;
注意事项
- 查询时尽量避免使用
SELECT *,明确指定需要的字段可以减少数据传输量,提升查询效率。 - 如果查询条件中涉及字符串匹配,尽量使用前缀匹配,避免全模糊查询导致索引失效。
- 分页查询时如果偏移量很大,性能会下降,可以考虑通过其他条件优化分页逻辑。
多行数据查询的核心是根据实际需求组合不同的SQL子句,熟练掌握基础语法后可以应对绝大多数查询场景。