MySQL 查询语句
一则或许对你有用的小广告
欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论
- 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于
Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...
,点击查看项目介绍 - 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/
截止目前, 星球 内专栏累计输出 66w+ 字,讲解图 2896+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2300+ 小伙伴加入学习 ,欢迎点击围观
MySQL 的查询语句是数据库操作中最常用的一部分。通过 SELECT
语句,我们可以从表中提取数据,并使用各种条件和函数进行过滤、排序、分组等操作。本节将介绍 MySQL 中常见的查询语句及其用法。
1. 基本查询
基本语法
SELECT 列名1, 列名2, ... FROM 表名;
示例
假设有一个名为 t_employee
的表,查询表中所有员工的姓名和职位:
SELECT name, position FROM t_employee;
2. 查询所有列
如果要查询表中的所有列,可以使用 *
来代替列名:
SELECT * FROM t_employee;
该语句将返回 t_employee
表中的所有列和记录。
3. 使用 WHERE
子句筛选数据
WHERE
子句用于指定查询条件,只返回满足条件的记录。
示例
查询 t_employee
表中职位为 “manager” 的员工:
SELECT * FROM t_employee WHERE position = 'manager';
多条件查询
可以使用 AND
或 OR
组合多个条件:
SELECT * FROM t_employee WHERE position = 'manager' AND salary > 6000;
4. 排序查询结果
可以使用 ORDER BY
子句对查询结果排序。默认是升序 (ASC
),降序排序则需使用 DESC
。
示例
按工资从高到低排序:
SELECT * FROM t_employee ORDER BY salary DESC;
5. 限制查询返回的行数
可以使用 LIMIT
子句限制返回的记录数量。
示例
查询前两条记录:
SELECT * FROM t_employee LIMIT 2;
查询第二到第四条记录(偏移量为 1):
SELECT * FROM t_employee LIMIT 1, 3;
6. 使用聚合函数
MySQL 提供了多种聚合函数,例如 COUNT()
、SUM()
、AVG()
、MAX()
和 MIN()
,用于对数据进行汇总。
示例
计算员工的总数:
SELECT COUNT(*) FROM t_employee;
查询职位为 “manager” 的员工平均工资:
SELECT AVG(salary) FROM t_employee WHERE position = 'manager';
7. 分组查询 (GROUP BY
)
GROUP BY
子句用于根据某一列对数据进行分组,并结合聚合函数进行统计。
示例
按职位分组,统计每个职位的员工数量:
SELECT position, COUNT(*) AS employee_count FROM t_employee GROUP BY position;
8. 使用 HAVING
过滤分组后的数据
HAVING
子句用于过滤 GROUP BY
之后的分组结果。WHERE
用于过滤记录,而 HAVING
用于过滤分组。
示例
查询员工人数大于 1 的职位:
SELECT position, COUNT(*) AS employee_count FROM t_employee GROUP BY position HAVING employee_count > 1;
9. 使用别名 (AS
)
可以使用 AS
为列名或表名指定别名,方便结果的阅读或后续的计算。
示例
查询员工姓名,并将 position
列重命名为 job_title
:
SELECT name, position AS job_title FROM t_employee;
10. 连接查询
在实际数据库设计中,数据通常存储在多个表中。可以使用 JOIN
操作将多个表的数据关联起来查询。
示例
假设还有一个 departments
表,记录了员工所属部门:
CREATE TABLE departments (
department_id INT PRIMARY KEY,
department_name VARCHAR(50),
employee_id INT,
FOREIGN KEY (employee_id) REFERENCES t_employee(employee_id)
);
查询员工姓名及其所在部门:
SELECT t_employee.name, departments.department_name
FROM t_employee
JOIN departments ON t_employee.employee_id = departments.employee_id;
11. 子查询
子查询指的是嵌套在另一个查询中的查询,可以用于复杂查询场景。
示例
查询工资高于 t_employee
表平均工资的员工:
SELECT name, salary FROM t_employee WHERE salary > (SELECT AVG(salary) FROM t_employee);
12. 小结
MySQL 查询语句为我们提供了丰富的操作数据的方式。从简单的 SELECT
查询,到使用 JOIN
关联表数据、聚合和分组数据、以及使用子查询和条件筛选数据。熟练掌握这些操作是数据库管理的关键。