流程控制结构——循环

基础的坑终于补完了
在这里插入图片描述

#流程控制结构
/*
顺序结构:程序从上往下次依执行
分支结构:程序从两条或多条路径中选择一条去执行
循环结构:程序在满足一定条件的基础上,重复执行一段代码
*/
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#一、分支结构
-- ------------------------------------------------------------------*******
#1、if函数
/*
功能:实现简单的双分支结构
语法:
	if(表达式1,表达式2,表达式3)
	执行顺序:如果表达式1成立,返回表达式2,否则返回表达式3
应用场景:SQL语句任何地方	
*/
-- ------------------------------------------------------------------*******
#2、case结构
/*
情况1:用于做等值判断
语法:	
	case 变量|表达式|字段
	when 要判断是值 then 返回的值【或语句;】
	。。。
	else 返回的值【或语句;】
	end【case;】
	
情况2:用于做区间判断
语法:	
	case 
	when 要判断是条件 then 返回的值【或语句;】
	。。。
	else 返回的值【或语句;】
	end【case;】
特点:
	1、可以作为表达式,嵌套在其他语句中使用,放在任何地方(begin end中或外面)
	   也可以作为独立的语句,只能放在begin end中
	2、执行顺序:执行when ,返回then,跳出结束Case,不满足再执行下一条when ......
		     都不满足,执行else,跳出、结束
	3、如果else省略了,所有when 都不满足时,返回null
*/
-- --------------------------------------------------------
#案例、创建存储过程,根据传入的成绩,显示等级(A:90~100,B:80~90,C:60~80,D:60以下
DELIMITER $
CREATE PROCEDURE myp1(IN score INT)
BEGIN 
	CASE 
	WHEN score >= 90 AND score <= 100 THEN SELECT'A';
	WHEN score > 79 THEN SELECT 'B';
	WHEN score > 59 THEN SELECT 'C';
	ELSE SELECT 'D';
	END CASE;
	
END$
CALL myp1(98)$
-- ------------------------------------------------------------------*******
#3、if结构
/*
功能:实现多重分支
语法:
	if 条件1 then 语句1;
	elseif 条件2 then 语句2;
	...
	【else 条件n;】
	end if;
应用:用在begin end中

*/
-- --------------------------------------------------------
#案例、根据传入的成绩,返回等级(A:90~100,B:80~90,C:60~80,D:60以下
CREATE FUNCTION myf1(score INT) RETURNS CHAR
BEGIN 
	IF score >=90 AND score<=100 THEN RETURN 'A';
	ELSEIF score>79 THEN RETURN  'B';
	ELSEIF score>59 THEN RETURN 'C';
	ELSE RETURN'D';
	END IF;
END$
SELECT myf1(67) AS 等级$

-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#二、循环结构
/*
分类:while、loop、repeat
循环控制:
	iterate :结束当前循环,执行下一次,相当于Python的continue
	leave :跳出循环,相当与Python中的break
*/
-- ------------------------------------------------------------------*******
#1、while
/*
语法:
	【标签:】while 循环条件 do
		循环体;
	end while【标签】;
	注意:标签是搭配循环控制语句来用的
*/

#流程控制结构
/*
顺序结构:程序从上往下次依执行
分支结构:程序从两条或多条路径中选择一条去执行
循环结构:程序在满足一定条件的基础上,重复执行一段代码
*/
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#一、分支结构
-- ------------------------------------------------------------------*******
#1、if函数
/*
功能:实现简单的双分支结构
语法:
	if(表达式1,表达式2,表达式3)
	执行顺序:如果表达式1成立,返回表达式2,否则返回表达式3
应用场景:SQL语句任何地方	
*/
-- ------------------------------------------------------------------*******
#2、case结构
/*
情况1:用于做等值判断
语法:	
	case 变量|表达式|字段
	when 要判断是值 then 返回的值【或语句;】
	。。。
	else 返回的值【或语句;】
	end【case;】
	
情况2:用于做区间判断
语法:	
	case 
	when 要判断是条件 then 返回的值【或语句;】
	。。。
	else 返回的值【或语句;】
	end【case;】
特点:
	1、可以作为表达式,嵌套在其他语句中使用,放在任何地方(begin end中或外面)
	   也可以作为独立的语句,只能放在begin end中
	2、执行顺序:执行when ,返回then,跳出结束Case,不满足再执行下一条when ......
		     都不满足,执行else,跳出、结束
	3、如果else省略了,所有when 都不满足时,返回null
*/
-- --------------------------------------------------------
#案例、创建存储过程,根据传入的成绩,显示等级(A:90~100,B:80~90,C:60~80,D:60以下
DELIMITER $
CREATE PROCEDURE myp1(IN score INT)
BEGIN 
	CASE 
	WHEN score >= 90 AND score <= 100 THEN SELECT'A';
	WHEN score > 79 THEN SELECT 'B';
	WHEN score > 59 THEN SELECT 'C';
	ELSE SELECT 'D';
	END CASE;
	
END$
CALL myp1(98)$

-- ------------------------------------------------------------------*******
#3、if结构
/*
功能:实现多重分支
语法:
	if 条件1 then 语句1;
	elseif 条件2 then 语句2;
	...
	【else 条件n;】
	end if;
应用:用在begin end中

*/
-- --------------------------------------------------------
#案例、根据传入的成绩,返回等级(A:90~100,B:80~90,C:60~80,D:60以下
CREATE FUNCTION myf1(score INT) RETURNS CHAR
BEGIN 
	IF score >=90 AND score<=100 THEN RETURN 'A';
	ELSEIF score>79 THEN RETURN  'B';
	ELSEIF score>59 THEN RETURN 'C';
	ELSE RETURN'D';
	END IF;
END$
SELECT myf1(67) AS 等级$

-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#二、循环结构
/*
分类:while、loop、repeat
循环控制:
	iterate :结束当前循环,执行下一次,相当于Python的continue
	leave :跳出循环,相当与Python中的break
*/
-- ------------------------------------------------------------------*******
#1、while
/*
语法:
	【标签:】while 循环条件 do
		循环体;
	end while【标签】;
	注意:标签是搭配循环控制语句来用的
*/
-- -------------------不加循环控制-------------------------------------
#案例1、在admin表中插入N条记录

CREATE PROCEDURE myp0(IN n INT)
BEGIN 
	DECLARE i INT DEFAULT 1;
	A:WHILE i<=n DO
		INSERT INTO admin(`username`,`password`)
		VALUES(CONCAT('潘花花',i),'000');
		SET i=i+1;
	END WHILE A;
END$

CALL myp0(50)$
-- ----------------------添加循环控制---leave-------------------------------
#案例2、在admin表中插入N条记录,如果>20,停止循环
CREATE PROCEDURE mypw2(IN n INT) 
BEGIN 
	DECLARE i INT DEFAULT 0;
	A:WHILE i<n DO
		INSERT INTO admin(`username`,`password`)
		VALUES(CONCAT('潘花花',i),'111');
			IF i>=20 THEN LEAVE A;
			END IF;
		SET i=i+1;
	END WHILE A;
END$
CALL mypw2(100)$
-- ----------------------添加循环控制---iterate------------------------------
#案例3、在admin表中插入N条记录,只插入偶数次
CREATE PROCEDURE mypw3(IN n INT)
BEGIN 
	DECLARE i INT DEFAULT 0;
	A:WHILE i<n DO
		SET i=i+1;
		IF i%2 =1 THEN ITERATE A;
		END IF;
		
		INSERT INTO admin(username,`password`)
		VALUES (CONCAT('花花',i),'222');
		
	END WHILE A;
END$

CALL mypw3(10)$



DELETE FROM admin WHERE id>10$
SELECT * FROM admin$
DROP PROCEDURE mypw3$
-- ------------------------------------------------------------------*******
#2、loop
/*
语法:
	【标签:】loop
		循环体;
	end loop【标签】
注意:可以模仿简单的死循环

*/

-- ------------------------------------------------------------------*******
#3、repeat
/*
语法:
	【标签:】repeat
		循环体;
	until 循环结束的条件
	end repeat【标签】;
*/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值