mysql之单表查询

1.聚合函数

(1)使用聚合函数查询出了person表中salary工资字段的所有工资和

select sum(salary) from person; -- 使用聚合函数查询出了person表中salary工资字段的所有工资和

2.分组查询

(1)分组查询person表中的dept_id字段,看有哪几个,同样dept_id值的被分为一组

select dept_id from person GROUP BY dept_id; -- 分组查询person表中的dept_id字段,看有哪几个,同样dept_id值的被分为一组

(2)分组查询person表的每个dept_id部门字段的salary工资和

select sum(salary), dept_id from person GROUP BY dept_id; -- 分组查询person表的每个dept_id部门字段的salary和

 (3)查询部门工资和大于20000的部门有哪些。GROUP BY 想要和条件一起用则必须用having,不能where,但是having和where的意思一样。as是起别名。

select sum(salary) as w, dept_id from person GROUP BY dept_id HAVING w > 20000; -- 查询部门工资和大于20000的部门。GROUP BY 想要和条件一起用则必须用having,不能where,但是having和where的意思一样。as是起别名

(4)查询每个部门的工资和,并且看看部门都有谁.用到GROUP_CONCAT函数将name字段列出来

select avg(salary) as w, dept_id, GROUP_CONCAT(name)from person GROUP BY dept_id; -- 查询每个部门的工资和,并且看看部门都有谁.用到GROUP_CONCAT函数将name字段列出来

3.分页查询

(1)limit就是分页的关键字.LIMIT后面跟的参数1表示起始位置(从哪条开始查),第二个参数表示每页查多少条

select * from person limit 0,4; -- limit就是分页的关键字.LIMIT后面跟的参数1表示起始位置(从哪条开始查),第二个参数表示每页查多少条

4.SQL语句关键字的执行顺序

select name, max(salary) -- 5 执行select操作,将分组后的name,工资和大于5000的记录查出来

from person -- 1 先执行from,查person表

where name is not NULL -- 2 在执行where进行条件筛选出name字段不为空的

GROUP BY `name`    -- 3 在执行group by对name字段进行分组,相同名字的分为一组

HAVING max(salary) > 5000 -- 4 聚合函数计算出来salary字段的最大值后,having条件执行筛选出工资和大于5000的

ORDER BY MAX(salary) -- 6 将select查询出来的记录,执行order by进行排序,默认是asc正序排序。

limit 0, 5    -- 7 order by排序好后,只要前5条数据

5.正则表达式

 

posted @ 2018-11-04 14:02  _小溢  阅读(262)  评论(0)    收藏  举报