概念
循环结构是编程中常见的控制结构,它允许我们重复执行一段代码,直到满足特定条件为止。
在 Mysql 中,常用来实现各种复杂的逻辑操作和对满足条件的数据进行批量操作,提高数据处理的效率和灵活性,例如批量处理数据、生成序列号和数据动态透视等。
循环语句
while 循环语句
while 循环语句是 MySQL 中最基本的循环语句,它创建一个带条件判断的循环过程。while 在执行语句执行时,先对指定的表达式进行判断,如果为真,就执行循环内的语句,否则退出循环。
[while_label:] while 循环条件 do
循环体
end while [while_label];
while_label 为语句的标注名称,可以省略;循环体里面一般会写终止条件,否则无限死循环。
示例
drop procedure if exists update_salary_while;
create procedure update_salary_while(out num int)
begin
# 声明变量和赋值
declare avg_sal double ; -- 记录平均工资
declare while_count int default 0; -- 记录循环次数
select avg(salary) into avg_sal from employees; -- 赋值
while avg_sal > 5000 do
update employees set salary = salary * 0.9 ;
set while_count = while_count + 1;
select avg(salary) into avg_sal from employees;
end while;
set num = while_count;-- 给num赋值
end;
call update_salary_while(@num); -- 调用
select @num;
select avg(salary) from employees;
repeat 循环语句
repeat 循环首先会执行一次循环,然后在 until 中进行表达式的判断,如果满足条件就退出,即 end repeat ;如果条件不满足,则会就继续执行循环,直到满足退出条件为止。
[repeat_label:] repeat
循环体的语句
until 结束循环的条件表达式
end repeat [repeat_label];