SQL-流程控制结构(19)

流程控制结构:

顺序结构:程序从上往下依次执行
分支结构:程序从两条或者多条路径中选择一条去执行
循环结构:程序在满足一定条件的基础上,重复执行一段代码

一. 分支结构

1.if函数

 功能:实现简单的双分支
 语法:
 if( 表达式1,表达式2,表达式3)
 执行顺序:(类似三元表达式)
 如果表达式1成立,则if函数返回表达式2的值,否则返回表达式3的值
 应用:任何地方

2.case结构

情况1:类似于java中的switch语句,一般用于实现等值判断

 语法:case 变量|表达式|字段
      when 要判断的值 then 返回的值1或语句1; 
       when 要判断的值 then 返回的值2或语句2; 
       ...
       else 要返回的值n或语句n;
       end case;

情况2:类似于java中的多量if语句,一般用于实现区间的判断

  语法:
      case
      when 要判断的条件1 then 返回的值1或语句1;
      when 要判断的条件1 then 返回的值2或语句2;
      ...
      else 要返回的值n或语句n;
      end case;

特点:

(1)可以作为表达式,嵌套在其他语句中使用,可以放在任何地方,befin end 中或begin end的外面
  可以作为独立的语句使用,只能放在begin end中        
       
(2)如果when中的值满足或条件成立,则执行对应的then 后面的语句,并且结束case
 如果都不满足,则执行else 中的语句或值

(3) else可以省略,如果else省略了,并且所有when条件都不满足,则返回null

4.if结构

 功能:实现多重分支
 语法:
 if 条件1 then 语句1;
 elseif 条件2 then 语句2;
 ...
 [else 语句 n;]
 end if;
  
  应用在begin end 中 

案例:

案例1:创建存储过程,根据传入的成绩,来显示等级,比如传入的成绩:90——100.显示A...

mysql>  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>=70  then select'C';
    ->      else select 'D';
    ->      end case;
    ->      end $
Query OK, 0 rows affected (0.11 sec)

mysql> call test_case(98)$
+---+
| A |
+---+
| A |
+---+
1 row in set (0.01 sec)

Query OK, 0 rows affected (0.01 sec)

案例2:创建存储过程,根据传入的成绩,来显示等级,比如传入的成绩:90——100.返回A...

mysql> create function test_if(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 $
Query OK, 0 rows affected (0.16 sec)

mysql> select test_if(85)$
+-------------+
| test_if(85) |
+-------------+
| B           |
+-------------+
1 row in set, 1 warning (0.00 sec)

二.循环结构

1.while
 语法:
 【标志:】while 循环条件 do
         循环体;
  end while【标志】;
  
2.loop
  语法:
  【标志:】loop
         循环体;
  end loop【标志】;
  可以模拟简单的死循环
  
  3.repeat
   语法:
   【标志:】repeat
       循环体;
    until 结束循环的条件
    end repeat【标志】;

嗯😄,这次的mysql学习就在这先告一段落,么么。

注:这是本人的学习笔记及练习,如果有错误的地方望指出一起讨论,谢谢!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容