MySQL初学笔记10.10(流程控制函数、复习)

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

猜你喜欢

转载自blog.csdn.net/qq_41986239/article/details/108994192
今日推荐