MySql中流程控制函数/统计函数/分组查询用法解析

路漫漫其修远兮,吾将上下而求索,又到了周末,我继续带各位看官学习回顾Mysql知识。

上次说到了流程控制函数,那就从流程控制函数来继续学习吧!

#五.流程控制函数
#1.if函数:if else的效果
IF(条件表达式,成立返回1,不成立返回2)
#与Java三元运算相同

SELECT IF(10>5,'大','小');

MySql中流程控制函数/统计函数/分组查询用法解析

SELECT last_name,commission_pct,IF(commission_pct IS NULL,'没奖金呵呵','有奖金嘻嘻') AS 备注
FROM employees;

MySql中流程控制函数/统计函数/分组查询用法解析

#2.CASE函数的使用一: swirch case的效果【等值判断】
回顾:switch(变量或表达式){
case 常量1:语句1;break;
...
default:语句n;break;
}
mysql中
case 要判断的字段或表达式或变量
when 常量1 then 要显示的值1或者语句1;[语句要加分号,值不用加]
when 常量2 then 要显示的值2或者语句2;
...
slse要显示的值n或者语句n;[默认值]
end[结尾]
case在SELECT后面相当于表达式用,后面不能放语句,只能是值.
在后续的学习中,存储过程与函数内就可以单独,用不搭配SLECT,就用语句.
先是表达式的操作
案例:查询员工的工资,要求
部门号=30,显示的工资为1.1倍
部门号=40,显示的工资为1.2倍
部门号=50,显示的工资为1.3倍
其他部门,显示的工资为原工资
SELECT salary 原始工资,department_id,
CASE department_id
WHEN 30 THEN salary*1.1
WHEN 40 THEN salary*1.2
WHEN 50 THEN salary*1.3
ELSE salary
END AS 新工资
FROM employees;

MySql中流程控制函数/统计函数/分组查询用法解析

#2.CASE函数的使用二:类是于多重IF【区间判断】
回顾Java中:if(条件1){
语句1;
}else if(条件2){
语句2;
}...
else{
语句n;
}
mysql中:
case
when 条件1 then 要显示的值1或者语句[语句后面要加分号;]
when 条件2 then 要显示的值2或者语句[语句后面要加分号;]
...
else 要显示的值n或语句n
end
案例:查询员工的工资的情况
如果工资>20000,显示A级别
如果工资>15000,显示B级别
如果工资>10000,显示C级别
否则,显示D级别

MySql中流程控制函数/统计函数/分组查询用法解析

==============流程函数到此结束,要想熟练运用还需要勤加练习。===============

提供几道习题供读者试试手!

#计算有几种工资。
SELECT COUNT(DISTINCT salary),
COUNT(salary)
FROM employees;

MySql中流程控制函数/统计函数/分组查询用法解析

#5.count 函数的详细介绍
SELECT COUNT(salary) FROM employees;

MySql中流程控制函数/统计函数/分组查询用法解析

#COUNT(统计所有列)
SELECT COUNT(*) FROM employees;

MySql中流程控制函数/统计函数/分组查询用法解析

#把表的行生成一个列每一列都是1。统计1的总数。count里面可以用任意常量值。
SELECT COUNT(1) FROM employees;

MySql中流程控制函数/统计函数/分组查询用法解析

#考虑到效率问题:
#5.5之前都是MYISAM 下COUNT(*)最高,计数器直接返回
#5.5之后默认都是INNODB下COUNT()与COUNT(1)都差不多,
 比COUNT(字段)效率高,如果是字段要判断字段是否为NULL。
#6.和分组函数一同查询的字段有限制
SELECT AVG(salary),employee_id FROM employees;

MySql中流程控制函数/统计函数/分组查询用法解析

扫一扫手机访问