循环结构
分类 while loop repeat
循环控制:
iterate类似continue ,继续, 结束本次循环,继续下一次
leave 类似于break 跳出 结束当前所在的循环
1、while
语法:
【标签】while 循环条件 do
循环体;
end while【标签】;
2、loop
语法
【标签】loop
循环体
end loop【标签】;可以用来模拟简单的死循环
3、repeat
语法:
【标签】repeat
循环体
until 结束循环的条件
end repeat 【标签】;
while案列:
批量插入多条数据 无循环控制语句
CREATE PROCEDURE PRO_whiel1( IN count INT)
BEGIN
DECLARE i INT DEFAULT 1;
WHILE i<=count DO
INSERT INTO admin(username, password) VALUES(CONCAT('Rose',i), '333');
SET i=i+1;
END WHILE;
END $
CALL PRO_whiel1(100) $;
案例:
一、已知表stringcontent 其中字段 id 自增长 content varchar(20)
向该表插入指定个数的 随机字符串
DROP TABLE IF EXISTS stringcontent;
CREATE TABLE stringcontent(
id INT PRIMARY KEY AUTO_INCREMENT,
content VARCHAR(20)
);
DELIMITER $
CREATE PROCEDURE test_randstr_insert(IN insertCount INT )
BEGIN
DECLARE i INT DEFAULT 1; #定义一个循环变量i,表示插入次数
DECLARE str VARCHAR(26) DEFAULT 'abcdefghijklmnopqrstuvwxyz';
DECLARE startIndex INT DEFAULT 1; #代表起始索引
DECLARE len INT DEFAULT 1;#代表截取字符串的长度
WHILE i<=insertCount DO
SET len = FLOOR(RAND()*20-startIndex +1)+1; #产生一个随机的整数,代表 截取长度 , 范围1-(26-startIndex+1) FLOOR 向下取整 RAND 产生[0,1)的数
SET startIndex = FLOOR(RND()*26+1); # 产生一个随机整数 代表起始索引1-26
INSERT INTO stringcontent(content) VALUES(SUBSTR(str, startIndex, len);
SET i =i+1;
END WHILE;
END $