数据库MySQL-分支结构
顺序结构:程序从上往下依次执行
分支结构:程序从两条或多条路径中选择一条去执行
循环结构:程序在满足一定条件的基础上,重复执行一段代码。
* /
功能:实现简单的双分支
语法:IF ( 表达式1 , 表达式2 , 表达式3 )
执行顺序:
如果表达式1 成立,则IF 函数返回表达式2 的值,否则返回表达式3 的值
应用:任何地方
情况1 :类似于java中的switch语句,一般用于实现等值判断
语法:
CASE 变量| 表达式| 字段
WHEN 要判断的值1 THEN 返回的值1 或语句1 ;
WHEN 要判断的值1 THEN 返回的值2 或语句2 ;
. . .
ELSE 要返回的值n或语句n;
END CASE ;
情况2 :类似于java中的多重IF 语句,一般用于实现区间判断
语法:
CASE
WHEN 要判断的条件1 THEN 返回的值1 或语句1 ;
WHEN 要判断的条件2 THEN 返回的值2 或语句2 ;
. . .
ELSE 要返回的值n或语句n;
END CASE ;
特点:
可以作为表达式,嵌套在其他语句中使用,可以放在任何地方,BEGIN END 中或BEGIN END 的外面
可以作为独立的语句去使用,只能放在BEGIN END 中。
CREATE PROCEDURE myp10( IN grade INT )
BEGIN
CASE
WHEN grade BETWEEN 90 AND 100 THEN SELECT 'A' ;
WHEN grade >= 80 THEN SELECT 'B' ;
WHEN grade >= 60 THEN SELECT 'C' ;
ELSE SELECT 'D' ;
END CASE ;
END $
CALL myp9( 95 ) ;
功能:实现多重分支
语法:
if 条件1 then 语句1 ;
elseif 条件2 then 语句2 ;
. . .
【else 语句n; 】
end if ;
应用:只能放在begin end 中
* /
CREATE FUNCTION myf6( g INT ) RETURNS CHAR
BEGIN
IF g>= 90 AND g<= 100 THEN RETURN 'A' ;
ELSEIF g>= 80 THEN RETURN 'B' ;
ELSEIF g>= 60 THEN RETURN 'C' ;
ELSE RETURN 'D' ;
END IF ;
END $