MySQL学习记录 - 16 -流程控制结构

根据尚硅谷的视频教程学习MySQL,学习记录-16 -流程控制结构。

顺序结构:程序从上往下依次执行
分支结构:程序从两条或多条路径中选择一条去执行
循环结构:程序在满足一定条件的基础上,重复执行一段代码

一、分支结构

  1. if 函数: 实现简单的双分支,应用在任何地方
IF(表达式1,表达式2,表达式3)
#执行顺序:如果表达式1成立,则IF函数返回表达式2的值,否则返回表达式3的值
  1. case结构
    一般用于实现等值判断,或者区间判断
#等值判断
CASE 变量 |表达式 | 字段
WHEN 要判断的值 THEN 返回的值1
WHEN 要判断的值 THEN 返回的值2
...
ELSE 返回的值n
END CASE
#区间判断
CASE
WHEN 要判断的条件1 THEN 返回的值1
WHEN 要判断的条件2 THEN 返回的值2
....
ELSE 要返回的值n
END CASE

1 可以做为表达式,嵌套在其他语句中使用,可以放在任何地方,BEGIN END 中或者BEGIN END 外面
2 可以作为独立的语句使用,只能放在BEGIN END中
3 如果WHEN中的值或者条件满足,则执行对应的THEN后面的语句,并且结束CASE;如果都不满足,则执行ELSE中的语句或者
4 else可以省略,如果ELSE省略了并且所有when个条件都不满足,则返回NULL

案例:创建存储过程,根据传入的成绩,显示等级。比如:传入成绩在90-100,显示A,在80-90 显示B,60-80 显示C,否则显示D

CREATE PROCEDURE test_case(IN score INT)
BEGIN 
	CASE 
	WHEN score >=90 AND score <=100 THEN SELECT 'A';
	WHEN score >=80 AND score< 90 THEN SELECT 'B';
	WHEN score >=60 AND score< 80 THEN SELECT 'C';
	ELSE SELECT 'D';
	END CASE;
END
#调用存储过程
CALL test_case(95);
  1. if 结构实现多重分支
IF 条件1 THEN 语句1;
ELSEIF 条件2 THEN 语句2;
...ELSE 语句n;END IF;
只能应用在BEGIN END

案例:创建函数,根据传入的成绩,显示等级。比如:传入成绩在90-100,返回A,在80-90 返回B,60-80 返回C,否则返回D

CREATE FUNCTION test_if(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 >=60 AND score< 80 THEN RETURN  'C';
	ELSE RETURN 'D';
	END IF;
END
#调用函数
SELECT test_if(65);

二、循环结构

分类:while、loop、repeat,只能放在begin end 中
循环控制:
iterate 类似于continue,继续,结束本次循环继续下一次
leave 类似于break,跳出,结束当前所在的循环

  1. while - 先判断后执行
【标签:】WHILE 循环条件 DO
		循环体;
	END WHILE 【标签】;
  1. loop - 可以用来模拟简单的死循环,没有条件的死循环
【标签:】LOOP
	循环体;
	END LOOP 【标签】;
  1. repeat - 先执行后判断
【标签:】repeat
	循环体;
	UNTIL 结束循环的条件
	END REPEAT 【标签】;

对比
1 三种循环都可以省略名称,但如果循环中添加了循环控制语句(leave或iterate)则必须添加名称
2 loop 一般用于实现简单的死循环 ; while 先判断后执行 ; repeat 先执行后判断,至少执行一次

案例:使用repeat循环结构计算从1加到n

CREATE PROCEDURE pro_test(n INT)
BEGIN
	DECLARE total INT DEFAULT 0;
	REPEAT
		  SET total = total +n;
		  SET n = n-1;
		  UNTIL n=0
	END REPEAT;
	SELECT total;
END
#调用存储过程
CALL pro_test(9);

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值