上一章学习mysql语句里的where和join,这一章我们开始分析group by ,having,order by,limit语句。
three,too,one,go!
文章目录
- 重温select语法
- having:
- order by:
- limit
重温select语法
SELECT [ALL | DISTINCT]
{ * | table.* | [ table.field1 [ as alias1] [, table.field2 [as alias2]][, …]] }
FROM table_name [ as table_ alias ]
[ left|right|inner join table_name2 ] #联合查询
[ WHERE … ] #指定结果需满足的条件
[ GROUP BY …] #指定结果按照哪几个字段来分组
[ HAVING …] #过滤分组的记录必须满足的次要条件
[ ORDER BY… ] #指定查询记录按一个或者多个条件排序
[ LIMIT { [ offset,] row_count | row_count OFFSET offset }] ; #指定查询的记录从哪条至哪条
注意:
[] 括号代表可选的;
{} 括号代表必须的;
# MySQL语句中的注释符,也可以用 \*该处为注释*/
# group by:
group by 是用来对查询结果进行分组的。可以根据一个或多个字段来进行分组,将具有相同字段值的记录归为一组。在使用 group by 时,查询结果中只能出现以下两种情况的字段:
1. 被 group by 的字段
2. 在`聚合函数`中使用的字段(如 sum、avg、count 等)
**例子:**
```sql
-- 以下查询将根据部门对员工进行分组,并统计每个部门的员工数量
SELECT department, COUNT(*) as employee_count
FROM employees
GROUP BY department;
-- 这里的 COUNT(*) 是一个聚合函数,用于统计每个部门的员工数量。
having:
having 是在分组之后对分组结果进行过滤的。having 语句中可以使用聚合函数,对分组结果进行筛选。只有满足 having 条件的分组才会出现在查询结果中。
例子:
-- 以下查询将根据部门对员工进行分组,计算每个部门的平均工资,并筛选出平均工资大于 5000 的部门
SELECT department, AVG(salary) as avg_salary
FROM employees
GROUP BY department
HAVING avg_salary > 5000;
-- 这里的 AVG(salary) 是一个聚合函数,用于计算每个部门的平均工资。
order by:
order by 是用来对查询结果进行排序的,可以按照一个或多个字段进行排序,与升序(asc)和降序(desc)搭配使用,默认为asc,在 order by 中可以使用字段名、表达式或函数。
例子:
-- 以下查询将学生按照年龄降序排列
SELECT name, age
FROM students
ORDER BY age DESC;
-- 这里的 ORDER BY age DESC 表示按照年龄降序排列查询结果。
limit
limit 用于限制查询结果的数量。可以指定查询结果的起始位置和数量。有两种使用方式:
- limit row_count:查询结果从第一条开始,返回 row_count 条记录。
- limit offset, row_count:查询结果从第 offset+1 条开始,返回 row_count 条记录。
也就是 limit((当前页码-1)*每页显示条数),每页显示条数
例子:
-- 以下查询将返回前 10 条产品记录
SELECT *
FROM products
LIMIT 10;
-- 这里的 LIMIT 10 表示只返回前 10 条产品记录。
总结:
select语句一般由以下部分组成:
- select关键字:用于指定查询操作
- 字段列表:可以使用* 查询所有字段,也可以指定要查询的字段列表,可以使用 as 给字段取别名。
- from关键字:用于指定要查询的表名。
- join关键字:用于指定多个表之间的连接方式,如 left join、right join、inner join等。
- where子句:用于指定查询结果的限制条件。
- group by 子句:用于指定查询结果按照哪几个字段进行分组。
- having子句:用于指定对分组结果进行筛选的条件。
- order by子句:用于指定查询结果按照哪个字段排序,可以指定升序(asc)或降序(desc)。
- limit子句:用于指定查询结果的数量和起始位置。
建了一个公众号(名字叫音耀
),后续会在上面更新一些有用资源和笔记,大家有兴趣的话可以加一下谢谢了。