查询mysql语句是数据库操作中最基础也最常用的功能,通过SQL语句可以从数据库表中获取需要的数据,满足业务系统的数据读取需求。不同的查询场景对应不同的语法规则,掌握这些规则能大幅提升数据操作效率。

基础查询语法
最基础的mysql查询使用SELECT语句,核心作用是选择需要返回的列和对应的数据表。如果不需要指定查询条件,可以直接查询表中的所有数据。
查询所有列
使用星号*可以代表表中的所有列,语法如下:
-- 查询user表中的所有数据 SELECT * FROM user;
查询指定列
如果只需要获取部分列的数据,可以在SELECT后面指定列名,多个列名之间用英文逗号分隔:
-- 查询user表中的id和name列 SELECT id, name FROM user;
带条件的查询
实际场景中很少需要查询全表数据,通常会通过WHERE子句添加查询条件,过滤出符合要求的数据。
常用条件运算符
mysql支持多种条件运算符,常见的包括:
=:等于,匹配完全相同的值!=或<>:不等于>、<、>=、<=:大于、小于、大于等于、小于等于LIKE:模糊匹配,配合%和_使用IN:匹配多个指定值中的一个BETWEEN...AND...:匹配某个范围内的所有值
条件查询示例
以下是几个常见的条件查询示例:
-- 查询年龄大于18的用户 SELECT * FROM user WHERE age > 18; -- 查询名字以张开头的用户 SELECT * FROM user WHERE name LIKE '张%'; -- 查询id为1、3、5的用户 SELECT * FROM user WHERE id IN (1,3,5); -- 查询年龄在20到30之间的用户 SELECT * FROM user WHERE age BETWEEN 20 AND 30;
排序与分页查询
当查询出的数据量较大时,通常需要对结果进行排序,或者分页展示数据。
结果排序
使用ORDER BY子句可以对查询结果排序,ASC代表升序(默认),DESC代表降序:
-- 按年龄升序排序查询用户 SELECT * FROM user ORDER BY age ASC; -- 按注册时间降序排序查询用户 SELECT * FROM user ORDER BY register_time DESC;
分页查询
使用LIMIT子句可以实现分页,语法为LIMIT 起始偏移量, 每页条数,起始偏移量从0开始:
-- 查询第一页数据,每页10条 SELECT * FROM user LIMIT 0, 10; -- 查询第二页数据,每页10条 SELECT * FROM user LIMIT 10, 10;
分组查询
如果需要按某个字段对数据进行分组统计,可以使用GROUP BY子句,通常配合聚合函数使用。
常用聚合函数
| 函数名 | 作用 |
|---|---|
| COUNT() | 统计行数 |
| SUM() | 求和 |
| AVG() | 求平均值 |
| MAX() | 求最大值 |
| MIN() | 求最小值 |
分组查询示例
以下是分组查询的常见用法:
-- 统计每个部门的用户数量 SELECT department, COUNT(*) AS user_count FROM user GROUP BY department; -- 统计每个部门的平均年龄 SELECT department, AVG(age) AS avg_age FROM user GROUP BY department;
如果需要过滤分组后的结果,不能使用WHERE子句,而要使用HAVING子句:
-- 查询用户数量大于5的部门 SELECT department, COUNT(*) AS user_count FROM user GROUP BY department HAVING user_count > 5;
多表关联查询
当数据存储在多个关联表中时,需要通过关联查询获取完整数据,常见的关联方式有内连接、左连接、右连接。
内连接查询
内连接返回两个表中匹配关联条件的所有数据,语法如下:
-- 查询用户和对应的订单信息,只返回有订单的用户 SELECT u.name, o.order_no FROM user u INNER JOIN order_table o ON u.id = o.user_id;
左连接查询
左连接返回左表的所有数据,以及右表中匹配关联条件的数据,右表没有匹配的数据则显示为NULL:
-- 查询所有用户和对应的订单信息,没有订单的用户订单信息为NULL SELECT u.name, o.order_no FROM user u LEFT JOIN order_table o ON u.id = o.user_id;
查询语句执行顺序
了解mysql查询语句的执行顺序有助于写出更合理的查询语句,标准执行顺序如下:
- FROM:确定查询的数据表
- ON:关联查询的匹配条件
- JOIN:关联其他表
- WHERE:过滤行数据
- GROUP BY:分组
- HAVING:过滤分组结果
- SELECT:选择返回的列
- DISTINCT:去重
- ORDER BY:排序
- LIMIT:分页
查询优化建议
为了提升查询效率,编写mysql查询语句时可以注意以下几点:
- 尽量避免使用
SELECT *,只查询需要的列,减少数据传输量 - 在
WHERE、ORDER BY、GROUP BY涉及的列上建立合适的索引 - 避免在条件字段上使用函数或运算,会导致索引失效
- 关联查询时尽量用小表驱动大表,减少关联的数据量
- 合理使用分页,避免一次性查询大量数据