MySQL单表查询详解:语法、约束至分组与聚合
190 浏览量
更新于2024-09-03
收藏 85KB PDF 举报
MySQL单表查询操作是数据库管理中常用的技术,本文详细介绍了在MySQL中进行单表查询时的各种关键语法、约束、分组、聚合、过滤、排序以及限制返回结果的数量。以下是主要内容的详细解析:
**语法概览**
在MySQL中,基本的单表查询语法如下:
```sql
SELECT [DISTINCT] 字段1, 字段2, ...
FROM 表名
WHERE 条件
GROUP BY 字段
HAVING 过滤条件
ORDER BY 字段 [ASC|DESC]
LIMIT 限制数目
```
- `SELECT`:指定要返回的列,可以使用`DISTINCT`去除重复数据。
- `FROM`:指定查询的数据来源,即要查询的表。
- `WHERE`:应用筛选条件,用于过滤出满足特定条件的记录。
- `GROUP BY`:对查询结果进行分组,通常与聚合函数一起使用,如COUNT(), SUM(), AVG()等。
- `HAVING`:对分组后的结果进行进一步筛选,用于过滤掉分组后的不满足条件的组。
- `ORDER BY`:按照指定字段对查询结果进行排序,可选升序(`ASC`)或降序(`DESC`)。
- `LIMIT`:限制返回结果的数量。
**关键字执行优先级**
- `FROM`:指定表来源,是查询过程的起点。
- `WHERE`:在获取记录后应用过滤条件。
- `GROUP BY`:在`WHERE`之后,根据字段进行分组。
- `HAVING`:对`GROUP BY`的结果进行过滤。
- `SELECT`:选择要返回的字段。
- `DISTINCT`:对`SELECT`的字段去重,一般紧跟`SELECT`。
- `ORDER BY`:最后对结果排序。
- `LIMIT`:限制最终返回的记录数。
**实例解析**
1. **WHERE子句**:用比较运算符(>, <, >=, <=, <>, !=)、区间范围(between, in)、通配符(like)及逻辑运算符(and, or, not)设置筛选条件。例如:
- `where age > 18`:年龄大于18的记录。
- `where gender in('Male', 'Female')`:筛选出男性和女性用户。
- `where name like 'xiaoming%'`:名字以“xiaoming”开头的记录。
2. **GROUP BY和HAVING**:分组查询用来处理聚合数据,如计算每个部门的平均工资或员工数量。分组是在`WHERE`之后进行的,`HAVING`确保只返回符合筛选条件的分组结果。例如:
- `SELECT department, AVG(salary) FROM employees GROUP BY department HAVING AVG(salary) > 5000`:获取每个部门薪资超过5000的平均薪资。
3. **ORDER BY和LIMIT**:对查询结果进行排序和限制返回行数。例如,`ORDER BY salary DESC LIMIT 10`:按薪水降序排列,取前10条记录。
通过理解并熟练运用这些SQL语法,你可以有效地执行MySQL单表查询,满足各种数据分析和业务需求。
2016-12-07 上传
2018-03-08 上传
2020-09-09 上传
2020-09-09 上传
2020-09-08 上传
2020-09-08 上传
2020-09-09 上传
2022-08-08 上传
点击了解资源详情
weixin_38554186
- 粉丝: 0
- 资源: 955
最新资源
- StarModAPI: StarMade 模组开发的Java API工具包
- PHP疫情上报管理系统开发与数据库实现详解
- 中秋节特献:明月祝福Flash动画素材
- Java GUI界面RPi-kee_Pilot:RPi-kee专用控制工具
- 电脑端APK信息提取工具APK Messenger功能介绍
- 探索矩阵连乘算法在C++中的应用
- Airflow教程:入门到工作流程创建
- MIP在Matlab中实现黑白图像处理的开源解决方案
- 图像切割感知分组框架:Matlab中的PG-framework实现
- 计算机科学中的经典算法与应用场景解析
- MiniZinc 编译器:高效解决离散优化问题
- MATLAB工具用于测量静态接触角的开源代码解析
- Python网络服务器项目合作指南
- 使用Matlab实现基础水族馆鱼类跟踪的代码解析
- vagga:基于Rust的用户空间容器化开发工具
- PPAP: 多语言支持的PHP邮政地址解析器项目