解决复杂问题不可能通过一个 SQL 语句完成,我们需要执行多个 SQL 操作。流程控制语句的作用就是控
制存储过程中 SQL 语句的执行顺序,是我们完成复杂操作必不可少的一部分。只要是执行的程序,流程
就分为三大类:
顺序结构 :程序从上往下依次执行
分支结构 :程序按条件进行选择执行,从两条或多条路径中选择一条执行
循环结构 :程序满足一定条件下,重复执行一组语句
针对于MySQL 的流程控制语句主要有 3 类。注意:只能用于存储程序。
条件判断语句 :IF 语句和 CASE 语句
循环语句 :LOOP、WHILE 和 REPEAT 语句
跳转语句 :ITERATE 和 LEAVE 语句
-- 创建表(如果还没有的话)
drop table my_table;
CREATE TABLE IF NOT EXISTS my_table (
id INT AUTO_INCREMENT PRIMARY KEY,
data VARCHAR(255)
);
-- 创建存储过程
DELIMITER //
CREATE PROCEDURE Insertata(IN numRows INT)
BEGIN
DECLARE i INT DEFAULT 1;
WHILE i <= numRows DO
-- 这里我们使用CONCAT()函数来模拟动态生成的数据
INSERT INTO my_table (code) VALUES (CONCAT('Data row ', i));
SET i = i + 1;
END WHILE;
END //
DELIMITER ;
-- 调用存储过程插入10行数据
CALL InsertData(10);
select *from my_table mt