美文网首页程序员
SQL-流程控制结构(19)

SQL-流程控制结构(19)

作者: 小白201808 | 来源:发表于2018-09-02 11:15 被阅读79次

    流程控制结构:

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

    一. 分支结构

    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学习就在这先告一段落,么么。

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

    相关文章

      网友评论

        本文标题:SQL-流程控制结构(19)

        本文链接:https://www.haomeiwen.com/subject/nfhrwftx.html