MySQL初学笔记10.10
五、流程控制函数
1.if函数:if else效果
select last_name,commission_pct,if(commission_pct is null,'没奖金,呵呵','有奖金,嘻嘻') 备注
from employees
2.case函数的使用一:switch case效果
switch(变量或表达式){
case 常量1:语句1;break;
...
default:语句;break;
}
在mysql中,用case
case 要判断的字段或表达式
when 常量1 then 要显示的值1/语句1
when 常量2 then 要显示的值2/语句2
when 常量3 then 要显示的值3/语句3
...
else 要显示的值/语句
end
案例:查询员工的工资,要求:
部门号=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
3.case函数的使用二:类似于 多重if
case
when 条件1 then 要显示的值1或语句1;
when 条件2 then 要显示的值2或语句2;
...
else 要显示的值n或语句n
end
案例:查询员工的工资情况
如果工资>20000,显示A级别
如果工资>15000,显示B级别
如果工资>10000,显示C级别
否则,显示D级别
select salary,
case
when salary>20000 then 'A'
when salary>15000 then 'B'
when salary>10000 then 'C'
else 'D'
end
from employees
复习
1.显示系统时间
select now();
2.查询员工号、姓名、工资,以及工资提高了百分之20%后的结果
select employee_id,last_name,salary,salary*1.2 'new salary'
from employees
3.将员工的姓名按首字母排序,并写出姓名的长度(LENGTH)
select length(last_name) 长度,substr(last_name,1,1) 首字符,last_name
from employees
order by last_name
案例1:做一个查询产生如下效果
<> earns monthly but wants <salary*3>
Dream Salary
King earns 24000 monthly but wants 72000
select concat(last_name,' earns ',salary,' monthly but wants ',salary*3) as 'Dream Salary'
from employees
where salary = 24000
案例2:使用Case when,按照下面的条件
job grade
AD_PRES A
ST_MAN B
IT_PROG C
SA_REP D
ST_CLERK E
产生下面效果
last_name job_id grade
king AD_PRES A
select last_name,job_id as job,case job_id
when 'AD_PRES' then 'A'
when 'ST_MAN' then 'B'
when 'IT_PROG' then 'C'
when 'SA_REP' then 'D'
when 'ST_CLERK' then 'E'
end as grade
from employees