MySQL流程控制语句解读!

MySQL流程控制语句解读!

MySQL存储过程支持多种流程控制语句,如IF、CASE、WHILE、LOOP、REPEAT等,每种语句有特定的执行逻辑,用于实现条件判断和循环操作。

在MySQL中,常见的过程式SQL语句可以用在一个存储过程体中。

其中包括:IF语句、CASE语句、LOOP语句、WHILE语句、REPEAT语句、LEAVE语句和ITERATE语句,它们可以进行流程控制。

1、IF语句

IF语句用来进行条件判断,根据不同的条件执行不同的操作。

该语句在执行时首先判断IF后的条件是否为真,则执行THEN后的语句,如果为假则继续判断IF语句直到为真为止,当以上都不满足时则执行ELSE语句后的内容。

IF语句表示形式如下:

1
2
3
4
5
6
7
IF condition THEN
...
ELSE condition THEN
...
ELSE
...
END IF

示例:使用IF语句用来进行条件判断。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
-- 创建存储过程
CREATE PROCEDURE example_if (IN x INT)
BEGIN
IF x = 1 THEN
SELECT 1;
ELSEIF x = 2 THEN
SELECT 2;
ELSE
SELECT 3;
END IF;
END;
-- 调用存储过程
CALL example_if(2);

2、CASE语句

CASE语句为多分支语句结构,该语句首先从WHEN后的VALUE中查找与CASE后的VALUE相等的值,如果查找到则执行该分支的内容,否则执行ELSE后的内容。

CASE语句表示形式如下:

1
2
3
4
5
CASE value
WHEN value THEN ...
WHEN value THEN ...
ELSE ...
END CASE

CASE语句另一种语法表示形式如下:

1
2
3
4
5
CASE
WHEN value THEN ...
WHEN value THEN ...
ELSE ...
END CASE

示例:使用CASE语句用来进行条件判断。

1
2
3
4
5
6
7
8
9
10
11
12
-- 创建存储过程
CREATE PROCEDURE example_case(IN x INT)
BEGIN
CASE x
WHEN 1 THEN SELECT 1;
WHEN 2 THEN SELECT 2;
ELSE SELECT 3;
END CASE;
END;
-- 调用存储过程
CALL example_case(5);

3、WHILE循环语句

WHILE循环语句执行时首先判断condition条件是否为真,如果是则执行循环体,否则退出循环。

该语法表示形式如下:

1
2
3
WHILE condition DO
...
END WHILE;

示例:使用WHILE循环语句执行求前100的和。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
-- 创建存储过程
CREATE PROCEDURE example_while(OUT sum INT)
BEGIN
DECLARE i INT DEFAULT 1;
DECLARE s INT DEFAULT 0;
WHILE i <= 100 DO
SET s = s+i;
SET i = i+1;
END WHILE;
SET sum = s;
END;
-- 调用存储过程
CALL example_while(@sum);
SELECT @sum;

4、LOOP循环语句

LOOP循环没有内置的循环条件,但可以通过LEAVE语句退出循环。

LOOP语句表示形式如下:

1
2
3
LOOP
...
END LOOP

LOOP语句允许某特定语句或语句群的重复执行,实现一个简单的循环构造,在循环内的语句一直重复直至循环被退出,退出循环应用LEAVE语句。

LEAVE语句经常和BEGIN...END或者循环一起使用,其表示形式如下:

1
LEAVE label

label是语句中标注的名字,这个名字是自定义的。

示例:使用LOOP循环语句求前100的和。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
-- 创建存储过程
CREATE PROCEDURE example_loop(OUT sum INT)
BEGIN
DECLARE i INT DEFAULT 1;
DECLARE s INT DEFAULT 0;
loop_label:LOOP
SET s = s+i;
SET i = i+1;
IF i>100 THEN
-- 退出LOOP循环
LEAVE loop_label; 
END IF;
END LOOP;
SET sum = s;
END;
-- 调用存储过程
CALL example_loop(@sum);
SELECT @sum;

5、REPEAT循环语句

REPEAT循环语句先执行一次循环体,之后判断condition条件是否为真,则退出循环,否则继续执行循环。

REPEAT语句表示形式如下:

1
2
3
4
REPEAT
...
UNTIL condition
END REPEAT

示例:使用REPEAT循环语句求前100的和。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
-- 创建存储过程
CREATE PROCEDURE example_repeat(OUT sum INT)
BEGIN
DECLARE i INT DEFAULT 1;
DECLARE s INT DEFAULT 0;
REPEAT
SET s = s+i;
SET i = i+1;
UNTIL i > 100
END REPEAT;
SET sum = s;
END;
-- 调用存储过程
CALL example_repeat(@sum);
SELECT @sum;

6、ITERATE语句

ITERATE语句可以出现在LOOP、REPEAT和WHILE语句内,其意为“再次循环”。

语句格式如下:

1
ITERATE label

该语句的格式与LEAVE大同小异,区别在于:LEAVE语句是离开一个循环,而ITERATE语句是重新开始一个循环。

示例:求10以内奇数值的和。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
-- 创建存储过程
CREATE PROCEDURE example_iterate(OUT sum INT)
BEGIN
DECLARE i INT DEFAULT 0;
DECLARE s INT DEFAULT 0;
loop_label:LOOP
SET i = i+1;       
IF i > 10 THEN
-- 退出整个循环
LEAVE loop_label; 
END IF;
IF (i mod 2) THEN
SET s = s+i;
ELSE
-- 退出本次循环,继续下一个循环
ITERATE  loop_label;
END IF;
END LOOP;
SET sum = s;
END;
-- 调用存储过程
CALL example_iterate(@sum);
SELECT @sum;

总结

以上为个人经验,希望能给大家一个参考。

 

 

 

学习资料见知识星球。

以上就是今天要分享的技巧,你学会了吗?若有什么问题,欢迎在下方留言。

快来试试吧,小琥 my21ke007。获取 1000个免费 Excel模板福利​​​​!

更多技巧, www.excelbook.cn

欢迎 加入 零售创新 知识星球,知识星球主要以数据分析、报告分享、数据工具讨论为主;

Excelbook.cn Excel技巧 SQL技巧 Python 学习!

你将获得:

1、价值上万元的专业的PPT报告模板。

2、专业案例分析和解读笔记。

3、实用的Excel、Word、PPT技巧。

4、VIP讨论群,共享资源。

5、优惠的会员商品。

6、一次付费只需99元,即可下载本站文章涉及的文件和软件。

文章版权声明 1、本网站名称:Excelbook
2、本站永久网址:http://www.excelbook.cn
3、本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长王小琥进行删除处理。
4、本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
5、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报。
6、本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。

THE END
分享
二维码
< <上一篇
下一篇>>