mysql(while,repeat,loop) 循环语句的使用

学习目标:

掌握 mysql循环语句的使用


学习内容:

  1. while循环
  2. repeat循环
  3. loop

代码实例:

1.while 循环条件  do   #执行循环的条件
      循环体语句;        #必须含有修改循环条件的语句
    end while;
1:如果成绩表SC中存在不及格学生的成绩,将所有学生的成绩在原来的基础上提高5%,直到表中不再存在不及格学生为止。
    -- 分析
    select * from sc where degree<60;
    update sc set degree=degree*1.05;
    -- 1
    if  exists(select * from sc where degree<60)  then 
        update sc set degree=degree*1.05;
    end if;
    -- 2
    desc sc;
    declare cj decimal(28,0);
    select cj=(select min(degree) from sc);
    if cj<60 then 
        update sc set degree=degree*1.05;
    end if;
    -- 编程
    delimiter //
    create procedure rw1()
    begin
        set @cj=(select min(degree) from sc);
        while @cj<60 do
            update sc set degree=degree*1.05;
            set @cj=(select min(degree) from sc);
        end while;
    end //
    delimiter ;
    call rw1();

   任务一: 用WHILE…END WHILE语句求1…100的所有奇数之和。

方法一:
    delimiter //
    create procedure rw2()
    begin
        set @s=0,@i=1;
        while @i<=100 do
            if @i%2<>0 then
                set @s=@s+@i;
            end if;
            set @i=@i+1;
        end while;
        select @s as '1…100的所有奇数之和';
    end //
    delimiter ;
    call rw2();        
    
  方法二:  
   delimiter //
    create procedure rw3()
    begin
        set @s=0,@i=1;
        while @i<=100 do
            set @s=@s+@i;
            set @i=@i+2;
        end while;
        select @s as '1…100的所有奇数之和';
    end //
    delimiter ;
    call rw3();

    2.repeat 循环
    repeat 
         循环体语句;
   until 条件   #退出循环的条件
    end repeat;     
    
例  1:如果成绩表SC中存在不及格学生的成绩,将所有学生的成绩在原来的基础上提高5%,直到表中不再存在不及格学生为止。
select * from sc;
    delimiter //
    create procedure rw4()
    begin
    select min(degree) into @cj  from sc;
    repeat
        update sc set degree=degree*1.05;
      select min(degree) into @cj  from sc;
        until @cj>=68
    end repeat;
    end //
    delimiter ;
    call rw4();

    3.loop循环
标签名:loop
        循环体语句;
      if 条件  then  #退出循环的条件
             leave 标签名;
      end if;    
    end loop;
    1:如果成绩表SC中存在不及格学生的成绩,将所有学生的成绩在原来的基础上提高5%,直到表中不再存在不及格学生为止。

    delimiter //
    create procedure rw5()
    begin
    www:loop
            update sc set degree=degree*1.05;
        select min(degree) into @cj  from sc;
            if @cj>88 then
                leave www;
            end if;
         end loop;
    end //
    
    delimiter ;
    call rw5();

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值