MySQL单表查询详解:语法、约束至分组与聚合

1 下载量 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单表查询,满足各种数据分析和业务需求。