MySql复习六.4 流程控制结构

  1. 流程控制结构有哪些

    1. 顺序结构:从上到下顺序执行;

    2. 分支结构:程序从一条或多条路径中选择一条去执行;

    3. 循环结构:在满足一定条件下,重复去执行一段代码;

  2. 分支结构

    1. if函数

      1. 功能:实现简单的双分支;

      2. 语法: if(表达式1,表达式2,表达式3);

      3. 执行顺序:如果表达式1成立,返回表达式2的结果,否则返回表达式3的结果;

      4. 应用:任何地方;

    2. case结构

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

        1. 语法:

          1. case   条件表达式 | 变量 | 字段

          2. when 要判断的变量1  then 返回的值或者语句1;

          3. when 要判断的变量1  then 返回的值或者语句2;

          4. ....

          5. else  返回的值或者语句n;

          6. end case;

        2. demo:

SELECT

    CASE parent_id

    WHEN 0 THEN '00';

    WHEN 1 THEN  '11';

    ELSE 'OTHERS';

    END AS parent_id_new , parent_id , type_id , type_name

    FROM  tdb_goods_types;

 

 

  1. 情况二:类似于java中的多重IF语句,一般用于实现区间判断。

    1. demo:

      1. SELECT

      2.     CASE

      3. WHEN parent_id < 3 THEN  '<3';

      4. WHEN parent_id >= 3 AND parent_id < 5 THEN   '>=3 && <5';

      5. ELSE    '>=5';

      6. END AS parent_id_new ;

      7. parent_id , type_id , type_name

      8. FROM tdb_goods_types;

    2. 语法:

      1. case

      2. when 要判断的条件1  then  返回的值或者语句1;

      3. when 要判断的条件2  then   返回的值或者语句2;

      4. .....

      5. else  返回的值或者语句n;

      6. end case;

    1. 特点:

      1. 可以作为表达式,嵌套在sql语句的任何地方(可以放在begin  end中,也放在begin end 外),也可以作为独立语句去使用 (只能放在begin  end中)。

        1. demo:作为独立语句放在begin end中

          1. CREATE PROCEDURE mycase1(in score float)

          2. BEGIN

          3.     CASE

          4.     WHEN score >= 90 THEN SELECT 'A';

          5.     WHEN score >= 80 AND score <= 90 THEN SELECT 'B';

          6.     WHEN scoer >=70 AND score <= 80 THEN SELECT 'C';

          7.     ELSE SELECT 'D';

          8.     END case;

          9. END $

      2. 顺序执行,,满足when的条件就执行then中的语句,跳出执行,如果都不满足就执行else中语句,else可以省略,如果条件都不满足就返回null。

  2. if结构

    1. 功能:实现多重分支;

    2. 语法:

      1. if 条件1 then  执行的语句1;

      2. elseif 条件2 执行的语句2;

      3. .....

      4. else 执行的语句n;# else可以省略

      5. end if;

    3. 应用场景:只能应用在begin end中

    4. demo:根据输入的数据,返回数据的级别CREATE FUNCTION test1(score int) RETURNS CHAR

      1. begin

      2.     if score >= 90 and score <= 100 then return 'A';

      3.     elseif score >= 80 then return 'B';

      4.     elseif score >= 70 then return 'C';

      5.     else return 'D';

      6.     end if;

      7. end $

  3. 循环结构

    1. 分类:

      1. while  , loop, repeat

    2. 循环控制:

      1. iterate :类似于 continue  结束本次循环 继续下一次;

      2. leave :类似于breake  跳出,结束循环;

    3. 语法:

      1. while语法

        1. [标记循环名:]while 循环条件 do

        2.       循环体;

        3. end while 标记循环名;

      2. loop语法  常用来模拟死循环

        1. [标记循环名:]loop 

        2.           循环体;

        3.  end loop [标签名];

      3. repeat  类似于do while

        1. 语法:

          1. [循环名:]repeat

          2.      循环体;

          3. until   结束循环的条件;

          4. end  repeat [标签];

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值