欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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;