十一:循环,判断
一、if函数
语法:if(条件,值1,值2)
特点:可以用在任何位置
二、case语句
语法:
情况一:类似于switch
case 表达式
when 值1 then 结果1或语句1(如果是语句,需要加分号)
when 值2 then 结果2或语句2(如果是语句,需要加分号)
...
else 结果n或语句n(如果是语句,需要加分号)
end 【case】(如果是放在begin end中需要加上case,如果放在select后面不需要)
情况二:类似于多重if
case
when 条件1 then 结果1或语句1(如果是语句,需要加分号)
when 条件2 then 结果2或语句2(如果是语句,需要加分号)
...
else 结果n或语句n(如果是语句,需要加分号)
end 【case】(如果是放在begin end中需要加上case,如果放在select后面不需要)
特点:
可以用在任何位置
三、if elseif语句
语法:
if 情况1 then 语句1;
elseif 情况2 then 语句2;
...
else 语句n;
end if;
特点:
只能用在begin end中!!!!!!!!!!!!!!!
三者比较:
应用场合
if函数 简单双分支
case结构 等值判断 的多分支
if结构 区间判断 的多分支
###循环
语法:
【标签:】WHILE 循环条件 DO
循环体
END WHILE 【标签】;
特点:
只能放在BEGIN END里面
如果要搭配leave跳转语句,需要使用标签,否则可以不用标签
Iterate 相当于 continue
leave类似于java中的break语句,跳出所在循环!!!
示例代码: ##案例 创建一个存储过程判断分数 DELIMITER $ CREATE PROCEDURE MYTEST10( IN score INT ) BEGIN CASE WHEN score>90 AND score<=100 THEN SELECT 'A'; WHEN score>=80 THEN SELECT 'B'; WHEN score>=70 THEN SELECT 'C'; ELSE SELECT 'D'; END CASE; END $ CALL MYTEST10(99)$ ##创建一个函数使用IF ELSE DROP FUNCTION IFSCORE; CREATE FUNCTION IFSCORE( score INT ) RETURNS CHAR BEGIN IF score>=90 AND score<=100 THEN RETURN 'A'; ELSEIF score>80 THEN RETURN 'B'; ELSEIF score>70 THEN RETURN 'c'; ELSE RETURN 'D'; END IF; END $ SELECT IFSCORE(88)$ --while示例代码 DELIMITER $ CREATE PROCEDURE insertval( IN counts INT ) BEGIN DECLARE i INT DEFAULT 1; WHILE i<=counts DO INSERT INTO admin(username,`password`) VALUES(CONCAT('Jon',10),'1001'); SET i=i+1; END WHILE; END $ CALL insertval(20)$ ## 使用 leave,ITERATE DROP PROCEDURE insertval2 CREATE PROCEDURE insertval2( IN counts INT ) BEGIN DECLARE i INT DEFAULT 1; a:WHILE i<=counts DO SET i=i+1; IF MOD(i,2)=0 THEN ITERATE a; END IF; INSERT INTO admin(username,`password`) VALUES(CONCAT('Jon',i),'1001'); END WHILE a; END $ CALL insertval2(10)$