流程控制
流程控制结构:
顺序结构:程序从上往下依次执行
分支结构:程序从两条或多条路径中选择一条去执行
循环结构:程序在满足一定条件的基础上,重复执行一段代码
一.分支结构
1.1 if函数
功能:实现简单的双分支 语法: select if(表达式1,表达式2,表达式3) 执行顺序: 如果表达式1成立,则if函数返回表达式2的值,否则返回表达式3的值 use myemployees; select if(10<5,"大","小"); select last_name,commission_pct,if(commission_pct is null,"没奖金嘻嘻","有奖金呵呵") 备注 from employees; 应用:任何地方
1.2 case
情况1:类似于java中的switch语句,一般用于实现等值判断 语法: case 变量|表达式|字段 when 要判断的值1 then 返回的值1 when 要判断的值2 then 返回的值2 when 要判断的值3 then 返回的值3 ... else 要返回的值n end 例: use myemployees; 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; 情况2:类似于java中的多重if语句,一般用于实现区间判断 case when 要判断的条件1 then 返回的值1 when 要判断的条件2 then 返回的值2 when 要判断的条件3 then 返回的值3 ... else 要返回的值n或语句n; end 特点: 1. 可以作为表达式,嵌套在其他语句中使用,可以放在任何地方, 可以作为独立的语句去使用,只能放在begin end中 2. 如果when中值满足或条件成立,则执行对应的then后面的语句,并且结束case 如果都不满足,则执行else中的语句或值 3. else可以省略,如果else省略了,并且所有when条件都不满足,则返回null #案例 #创建存储过程,根据传入的成绩,来显示等级,比如传入的成绩:90-100,显示A;80-90,显示B;60-80,显示C,否则,显示D use myemployees; delimiter $ create procedure test_case(in score int) begin case when score>=90 then select 'A'; when score>=80 then select 'B'; when score>=60 then select 'C'; else select "D"; end case; end $