MySQL For循环完全指南
1. 什么是For循环?
For循环是一种在编程语言中广泛使用的循环结构,用于重复执行特定的代码块,直到达到指定的条件为止。在MySQL中,For循环可以用于执行重复性的任务,如迭代计算或处理大量数据。
2. MySQL中的For循环语法
在MySQL中,For循环可以使用以下语法结构:
DECLARE variable_name datatype;
DECLARE CONTINUE HANDLER FOR condition statement;
FOR {simple_statement | compound_statement}
BEGIN
statement_list
END
其中,variable_name
是循环变量的名称,datatype
是变量的数据类型。condition
是一个条件,当条件为真时,将执行statement
。simple_statement
或compound_statement
可以是简单的语句或复合的语句块。statement_list
是要重复执行的语句列表。
3. For循环示例代码及运行结果
下面给出了5个实例代码,分别展示了使用For循环在MySQL中执行不同的任务。
3.1 计算数字的和
DECLARE total INT DEFAULT 0;
DECLARE i INT DEFAULT 1;
FOR i IN 1..10 DO
SET total = total + i;
END FOR;
SELECT total;
运行结果:
55
3.2 遍历表中的数据并输出
DECLARE done INT DEFAULT FALSE;
DECLARE id INT;
DECLARE name VARCHAR(255);
DECLARE cur CURSOR FOR SELECT id, name FROM employees;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN cur;
read_loop: LOOP
FETCH cur INTO id, name;
IF done THEN
LEAVE read_loop;
END IF;
SELECT id, name;
END LOOP;
CLOSE cur;
运行结果:
id name
1 John
2 Mary
3 David
4 Lisa
5 Jane
3.3 更新表中的数据
DECLARE done INT DEFAULT FALSE;
DECLARE emp_id INT;
DECLARE salary INT;
DECLARE emp_cur CURSOR FOR SELECT id, salary FROM employees;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN emp_cur;
update_loop: LOOP
FETCH emp_cur INTO emp_id, salary;
IF done THEN
LEAVE update_loop;
END IF;
UPDATE employees SET salary = salary * 1.1 WHERE id = emp_id;
END LOOP;
CLOSE emp_cur;
运行结果:表中employees
的salary
被增加了10%。
3.4 多重条件判断
DECLARE done INT DEFAULT FALSE;
DECLARE i INT;
DECLARE val VARCHAR(255);
DECLARE cur CURSOR FOR SELECT id, value FROM table;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN cur;
read_loop: LOOP
FETCH cur INTO i, val;
IF done THEN
LEAVE read_loop;
END IF;
CASE
WHEN i = 1 THEN
SELECT CONCAT('Value: ', val) AS result;
WHEN i = 2 THEN
SELECT CONCAT('Value: ', val) AS result;
ELSE
SELECT 'Unknown value';
END CASE;
END LOOP;
CLOSE cur;
运行结果:
result
Value: abc
Value: def
Unknown value
3.5 定义动态查询
DECLARE i INT DEFAULT 0;
DECLARE limit_val INT DEFAULT 10;
DECLARE query VARCHAR(255);
FOR i IN 1..limit_val DO
SET query = CONCAT('SELECT * FROM table WHERE id = ', i);
PREPARE stmt FROM query;
EXECUTE stmt;
END FOR;
运行结果:根据表中的数据,执行了10次SELECT查询。
4. 总结
本文介绍了MySQL中的For循环,包括其语法结构和使用示例。通过使用For循环,您可以在MySQL中执行重复性的任务,提高编程效率。以上示例代码展示了For循环的多种用法,包括计算数字的和、遍历表中的数据、更新表中的数据、多重条件判断以及定义动态查询。