1、分支结构
1、if函数
实现简单双分支
if 条件1 then 语句1
else if 条件2 then 语句2
end if
CREATE FUNCTION test_if(sorce INT) RETURNS CHAR
BEGIN
IF sorce>=90 AND sorce<=100 THEN RETURN 'A';
ELSE IF sorce>=40 THEN RETURN 'B';
ELSE RETURN 'D';
END IF;
END
select test_if(50)
2、case结构
情况1:类似switch语句,一般用于实现等值判断
情况2:类似多重if语句,一般用于实现区间判断
语法:
情况1:
case 变量|表达式|字段
when 要判断的值1 then 返回的值1或语句1;
when 要判断的值2 then 返回的值2或语句2;
...
else 要返回的值n或语句n;
end case
情况1:
case 变量|表达式|字段
when 要判断的条件1 then 返回的值1或语句1;
when 要判断的条件2 then 返回的值2或语句2;
...
else 要返回的值n或语句n;
end case
DELIMITER $
CREATE PROCEDURE test_case(IN score INT)
BEGIN
CASE
WHEN score>=90 AND score<=100 THEN SELECT "A";
WHEN score>=80 THEN SELECT "B";
WHEN score>=60 THEN SELECT "C";
ELSE SELECT "D";
END CASE;
END $
CALL test_case(90);
2、循环结构
分类:
while、loop、 repeat
循环控制:
iterate 类似于continue,结束本次循环,继续下一次
leave类似于 break,跳出,结束当前所在的循环
1、while语法
【标签:】whiel 循环条件 do
循环体
end while 【标签:】
2、loop语法
【标签:】loop
循环体
end loop 【标签:】
可以用来模拟简单的死循环
3、repeat
【标签:】repeat
循环体;
until 结束循环的条件
end repeat【标签:】
案例1:批量插入,根据次数插到admin表中多条记录
DELIMITER $
CREATE PROCEDURE pro_while(IN insertCount INT)
BEGIN
DECLARE i INT DEFAULT 1;
a:WHILE i<insertCount DO
INSERT INTO admin (username,pass) VALUES(concat('Rose',i),'666');
SET i=i+1;
END WHILE a;
END $
CALL pro_while(100);
案例2:批量插入,根据次数插到admin表中多条记录,添加leave语句
DELIMITER $
CREATE PROCEDURE pro_while(IN insertCount INT)
BEGIN
DECLARE i INT DEFAULT 1;
a:WHILE i<insertCount DO
INSERT INTO admin (username,pass) VALUES(concat('Rose',i),'666');
if i>=20 then leave a;
SET i=i+1;
END WHILE a;
END $
CALL pro_while(100) $
案例3:批量插入,根据次数插到admin表中多条记录,添加iterate语句
DELIMITER $
CREATE PROCEDURE pro_while(IN insertCount INT)
BEGIN
DECLARE i INT DEFAULT 0;
a:WHILE i<insertCount DO
if mod(i,2)!=0 then iterate a;
end if
INSERT INTO admin (username,pass) VALUES(concat('Rose',i),'666');
END WHILE a;
END $
CALL pro_while(100) $
3、循环结构总结
名称 | 语法 | 特点 | 位置 |
---|---|---|---|
while | Label:while 循环条件 | 先判断后执行 | begin end 中 |
repeat | Label:repeat 循环条件 | 先执行后判断 | begin end 中 |
loop | Label:loop | 没有条件的死循环 | begin end 中 |