MySQL从入门到精通之流程控制结构

请先导入myemployees数据库 执行SQL脚本文件导入数据库

什么叫流程控制结构呢?说白了就是语句执行过程,比如while、for循环、if条件判断、switch-case选择判断等,可以说大部分的编程语言都有这些语句。在MySQL中同样也有,只是有一些语法差别。

一、分支结构

1、if函数
语法:if(条件,1,值2)
功能:实现双分支
2、if结构
语法:
if 条件1 then 语句1;
elseif 条件2 then 语句2;
....
else 语句n;
end if;
功能:类似于多重if

注意:只能应用在begin end
3、case结构
语法:
方式1:类似于switch
case 变量或表达式
when1 then 语句1;
when2 then 语句2;
...
else 语句n;
end CASE;

方式2case 
when 条件1 then 语句1;
when 条件2 then 语句2;
...
else 语句n;
end CASE;

案例1:创建函数,实现传入成绩,如果成绩>=90,返回你很棒棒哦,如果成绩>=75小伙砸,加油哦!,如果成绩>=60快要挂科了哟!,如果成绩<60补考场上见!

实现1:使用if结构

#选中函数放置的数据库
USE girls;
#设置结束标记为$
DELIMITER $

CREATE FUNCTION score_result(score FLOAT) RETURNS VARCHAR(50)
BEGIN
	DECLARE res_str VARCHAR(50) DEFAULT 'A';
	IF score>=90 THEN SET res_str='你很棒棒哦';
	ELSEIF score>=75 THEN SET res_str='小伙砸,加油哦!';
	ELSEIF score>=60 THEN SET res_str='快要挂科了哟!';
	ELSE SET res_str='补考场上见!';
	END IF;
	RETURN res_str;
END $
#调用函数
SELECT score_result(94) AS '结果'$

实现2:使用case结构

#选中函数放置的数据库
USE girls;
#设置结束标记为$
DELIMITER $

CREATE FUNCTION score_result_case(score FLOAT) RETURNS VARCHAR(50)
BEGIN
	DECLARE res_str VARCHAR(50) DEFAULT 'A';
	CASE
	WHEN score>=90 THEN SET res_str='你很棒棒哦';
	WHEN score>=75 THEN SET res_str='小伙砸,加油哦!';
	WHEN score>=60 THEN SET res_str='快要挂科了哟!';
	ELSE SET res_str='补考场上见!';
	END CASE;
	RETURN res_str;
	
END $
#调用函数
SELECT score_result_case(94) AS '结果'$

在这里插入图片描述

二、循环结构

1、while循环
语法:

【标签:】while 循环条件 do
	循环体;
end while【 标签】;
2、loop循环
语法:

【标签:】loop
	循环体;
end loop 【标签】;
3、repeat循环
语法:

【标签:】repeat
	循环体;
until 结束循环的条件
end repeat 【标签】;
4、循环控制关键字
iterate类似于 continue,继续,结束本次循环,继续下一次
leave 类似于  break,跳出,结束当前所在的循环

案例2:批量插入,根据次数插入到boys表中多条记录

#选中存储结构放置的数据库
USE girls;
#清空表boys
TRUNCATE TABLE boys;
#设置结束标记为$
DELIMITER $
#首先删除存储结构proc_while
DROP PROCEDURE proc_while$
#创建存储结构
CREATE PROCEDURE proc_while(IN insert_cnt INT)
BEGIN
	DECLARE i INT DEFAULT 1;
	#循环插入
	WHILE i <= insert_cnt DO
		#boys表中的id为自动增长标识列,所以不用管值
		INSERT INTO boys(boyName,userCP) VALUES(CONCAT('hestyle_',i), i);
		SET i=i+1;
	END WHILE;
	
END $
#调用存储过程
CALL proc_while(5)$
#查询boys表
SELECT * FROM boys$

MySQL从入门到精通之流程控制结构_第1张图片
以上就是MySQL数据库管理系统中的流程控制主要内容,与编程语言中的流程控制是一样的,只是语法骚微不同。

2019-09-13 22:19:40 祝大家中秋节牛逼!!!

你可能感兴趣的:(MySQL从入门到精通)