【MySQL笔记】流程控制(分支与循环)
解决复杂问题不可能通过一个 SQL 语句完成,我们需要执行多个 SQL 操作。流程控制语句的作用就是控制存储过程中 SQL 语句的执行顺序,是我们完成复杂操作必不可少的一部分目录流程的分类通用分类MySQL中的流程分类分支结构 IF分支结构 CASE循环结构 WHILE循环结构 LOOP循环结构 REPEAT对比三种循环结构流程的分类通用分类顺序结构:程序从上往下依次执行分支结构:程序按条件进行选
解决复杂问题不可能通过一个 SQL 语句完成,我们需要执行多个 SQL 操作。流程控制语句的作用就是控制存储过程中 SQL 语句的执行顺序,是我们完成复杂操作必不可少的一部分
目录
流程的分类
通用分类
顺序结构:程序从上往下依次执行
分支结构:程序按条件进行选择执行,从两条或多条路径选择一条执行
循环结构:程序满足一定条件下,重复执行一组语句
MySQL中的流程分类
条件判断语句:IF 语句和 CASE 语句
循环语句:LOOP、WHERE 和 REPEAT 语句
跳转语句:ITERATE 和 LEAVE 语句
分支结构 IF
1. 不同的表达式对应不同的操作
2. 使用在 begin end 中
IF 表达式1 THEN 操作1
[ELSEIF 表达式2 THEN 操作2]...
[ELSE 操作N]
END IF
分支结构 CASE
情况一:类似于 switch
CASE 表达式
WHEN 值1 THEN 结果1或语句1(如果是语句,需要加分号)
WHEN 值2 THEN 结果2或语句2(如果是语句,需要加分号)
...
ELSE 结果n或语句n(如果是语句,需要加分号)
END [case] (如果是放在 begin end 中需要加上 case,如果放在 select 后面不需要)
循环结构 WHILE
WHILE 语句创建一个带条件判断的循环过程。WHILE 在执行语句执行时,先对指定的表达式进行判断,如果为真,就执行循环内的语句,否则退出循环
while_label 为 WHILE 语句的标注名称;如果循环条件为真,WHILE 语句内的语句或语句群被执行,直至循环条件为假,退出循环
[while_label:] WHILE 循环条件 DO
循环体
END WHILE [while_label];
DELIMITER //
CREATE PROCEDURE test_while()
BEGIN
DECLARE i INT DEFAULT 0;
WHILE i < 10 DO
SET i = i + 1;
END WHILE;
SELECT i;
END //
循环结构 LOOP
LOOP 循环语句用来重复执行某些语句。LOOP 内的语句一直重复执行直到循环被退出(使用 LEAVE 子句),跳出循环过程
其中,loop_label 表示 LOOP 语句的标注名称,该参数可以省略
[loop_label:] LOOP
循环执行语句
END LOOP [loop_label]
DECLARE id INT DEFAULT 0;
add_loop:LOOP
SET id = id + 1;
IF id >= 10 THEN LEAVE add_loop;
END IF;
END LOOP add_loop;
循环结构 REPEAT
[repeat_label:] REPEAT
循环体的语句
UNTIL 结束循环的条件表达式
END REPEAT [repeat_label]
DELIMITER //
CREATE PROCEDURE test_repeat()
BEGIN
#声明变量
DECLARE num INT DEFAULT 1;
REPEAT
SET num = num + 1;
UNTIL num >= 10;
END REPEAT;
#查看
SELECT num;
END //
DELIMITER;
对比三种循环结构
1. 这三种循环都可以省略名称,但如果循环中添加了循环控制语句(LEAVE 或 ITERATE)则必须添加名称
2. LOOP:一般用于实现简单的 “死” 循环
WHILE:先判断后执行
REPEAT:先执行后判断,无条件至少执行一次
更多推荐
所有评论(0)