MySQL 基本查询课堂笔记
程序员文章站
2024-03-02 19:40:16
...
case... when... then... end... 当...是...然后..最后..
当职业是格格的时候 就让工资提高30% 最后其他人不变
userSal*1.3
select name, userSal, case job when '格格' then userSal*1.3 else userSal*1
end as '新工资' from hzuser
练习:当职业是格格的时候 工资提高30%
职业是太监 工资降低20%
职业是备胎的时候 工资上涨500
select name, userSal,
case job when '格格' then userSal*1.3
case job when '太监' then userSal*0.8
case job when '备胎' then userSal+500 else userSal*1 END
as '新工资' from hzuser;
ifnull(列名,xxx)如果为null...
查询:绩效为空的人 如果绩效为空 就绩效加上500
select name,ifnull(comm,500),'新绩效'
from hzuser where comm is null;
查询员工有多少人
select count(*) from hzuser;
练习:查询职业是格格 且工资大于2500的有多少人
select count(*) from hzuser where job='格格' and userSal>2500;
sum求和
查询所有员工的工资数
select sum(userSal) from hzuser;
练习:查询职业是备胎和太监的绩效加起来有多少钱
select sum(comm) from hzuser where job='格格' and job='太监';
avg平均
查询所有人的平均工资是多少
select avg(userSal) from hzuser;
练习:查询所有人(包含绩效为null的,一共19个人)的平均绩效是多少
select avg(IFNULL(comm,0)) from hzuser;
MIN(expr) MIN(expr)
查询工资最高的人多少?
SELECT NAME,MAX(userSal) from hzuser; 错误代码
问题来了 name是多行结果集【列的字段】 MAX( 是一个单行结果集)
列名和聚合函数不匹配
SELECT MAX(userSal) from hzuser;把单行当做一个条件
select * from hzuser where userSal=(SELECT MAX(userSal) from hzuser);
COUNT( expr,[expr...])总条数 多和limit搭配使用 形成分页
limit n
查询前两条信息
select * from hzuser limit 2;
limit m【索引】,n【条数】
select * from hzuser limit 索引,每页条数;当前页数
select * from hzuser limit 0,2;
select * from hzuser limit 2,2;
select * from hzuser limit 4,2;
当前页数 和 索引 以及条数有什么关系
索引 怎么计算出来的 ??
索引=(页数-1)*条数
group by 分组函数 把相同的表中的数据看成一个组
查询每个岗位的工资总和是多少?
select job, sum(userSal) from hzuser group by job;
一般聚合函数 前后列名互相照应
练习:查询每个岗位的最好工资是多少
select job, MAX(userSal) from hzuser group by job;
查询每个岗位的工资总和 低于6000是什么?
select job, SUM(userSal)from hzuser group by job WHERE SUM(userSal)<6000; 错误代码
对 group by 后的表 进行where 查询是不可以的 需要用having来代替where
select job, SUM(userSal)from hzuser group by job having SUM(userSal)<6000;
HAVING 必须放在 GROUP BY 后面 且不能独立出现
练习:查询每个岗位的人数 小于4人的岗位是什么?
SELECT job, COUNT(job)from hzuser GROUP BY job HAVING COUNT(job)<4;