分类
顺序结构:程序从上往下依次执行
分支结构:程序从两条或多条路径中选择一条去执行
循环结构:程序在满足一定条件的基础上,重复执行一段代码
分支结构
1 if 函数
功能:实现简单的双分支
语法:
if(表达式1,表达式2,表达式3)
执行顺序:如果1成立,则返回2的值,否则返回3的值
2 if 结构:只能放在begin end结构中
功能:实现多重分支
语法:
if 条件1 then 语句1;
else if 条件2 then 语句2;
...
[else 语句n;]
end if;
案例:根据传入的成绩划分等级
CREATE FUNCTION test_if(score INT) RETURNS CHAR
BEGIN
IF score>=90 AND score<=100 THEN RETURN 'A';
ELSEIF score>=80 THEN RETURN 'B';
ELSEIF score>=70 THEN RETURN 'C';
ELSE RETURN 'D';
END IF
END $
3 case结构
特点:
1 可以作为表达式,嵌套在其他语句中使用,可以放在任何地方,begin end中或begin end 外;
作为独立的语句去使用时,只能放在begin end中;
2 如果when中的值满足条件,则执行对应的then后面的语句,并结束case;
如果都不满足,则执行else中的语句或值;
else可以省略,如果else省略,且所有when条件都不满足,则返回null
语法:
情况一:类似C#或java中switch
case 变量|表达式|字段
When 要判断的值 Then 返回的值1
when 要判断的值 Then 返回的值2
...
else 返回的值n
End
情况二:类似C#或java中多重if语句
语法:
Case
When 要判断的条件1 Then 返回的值1或语句1;
When 要判断的条件2 Then 返回的值2或语句2;
...
else 要返回的值n或语句n;
End Case;
案例:
创建存储过程,根据传入的成绩,来显示等级,比如传入的成绩:90-100,显示A...
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>=70 THEN SELECT 'C';
ELSE SELECT 'D';
END CASE;
END $
CALL test_case(98)$