Mysql 分支结构 case when then以及if elseif 的使用
结构控制语句
1、顺序结构:程序从上而下执行
2、分支结构:程序从两条或多条路径中选择一条去执行
3、循环结构:程序在满足一定条件的基础上,重复执行一段代码
此处只讲解分支结构和循环结构(顺序结构比较简单)
一、分支结构
1、if函数
语法:if(表达式1,表达式2,表达式3)
执行顺序
如果表达式1成立,则if函数返回表达式2的值,否则返回表达式3
eg:输入如成绩,判断是否合格
select IF(80>=60,"成绩合格","成绩不合格") AS "score";
2、case 结构
情况1:类似于java中点switch语句,一般用于实现等值判断
语法:
case 变量|表达式|字段
WHEN 要判断的值 THEN 返回的值1或语句1
WHEN 要判断的值 THEN 返回的值2或语句2
。。。
ELSE 要返回的值n
END
情况2:类似于java中的多重if语句,一般用于实现区间判断
语法:
case
WHEN 要判断的条件1 THEN 返回的值1
WHEN 要判断的条件2 THEN 返回的值2
。。。
ELSE 要返回的值n
END
特点:
可以作为表达式,嵌套在其他的语句中使用
可以作为独立的语句去使用
案例:创建存储过程,根据传入的成绩,来显示登记,比如传入90-100 显示A,.....
delimiter $
create PROCEDURE test_case(in score int)
BEGIN
CASE
when score>=90 and score<=100 then select 'A';
when score >=80 then select 'B';
when score >=60 then select 'C';
else select 'D';
end case;
END $
delimiter ;
调用:call test_case(8);
3、if结构
功能,实现多重分支
语法:
if 条件1 THEN 语句1;
elseif 条件2 then 语句2;
elseif 条件3 then 语句3;
else
end if;
只能应用在 begin end 中
案例:创建存储过程,根据传入的成绩,来显示登记,比如传入90-100 返回A,.....
DELIMITER $
CREATE FUNCTION testCase(score int) returns char
BEGIN
IF score>=90 and score<=100 then return 'A';
ELSEIF score>=80 and score<90 then return 'B';
ELSEIF score>=70 and score<80 then return 'C';
ELSEIF score>=60 and score<70 then return 'D';
else return 'E';
end if;
END $
DELIMITER ;
调用:select testCase(23);