十一:循环,判断

一、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)$

 

posted @ 2020-05-11 15:44  INSTANCE_SELF  阅读(194)  评论(0编辑  收藏  举报