MySQL:流程控制结构

流程控制结构

分类:顺序结构、分支结构、循环结构

分支结构

  • 程序从两条或多条路径中选择一条去执行

if函数

  • 功能:实现简单的双分支:

  • 语法:

    if(表达式1,表达式2,表达式3)

    执行顺序:如果表达式1成立,则if函数返回表达式2的值,否则返回表达式3的值

  • 可以应用在任何地方

case结构

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

    • 语法:

      case 变量|表达式|字段

      when 要判断的值 then 返回的值1

      when 要判断的值 then 返回的值2

      else 要返回的值n

      end

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

    • 语法:

      case

      when 要判断的条件1 then 返回的值1

      when 要判断的条件2 then 返回的值2

      else 要返回的值n

      end

    • create FUNCTION num(id int) RETURNS  varchar(10)
      BEGIN
      		DECLARE c varchar(10) DEFAULT '1';
      		case 
      		when id >0 and id<60 then set c='C';
      		when id >=60 and id<=80 then set c='B';
      		else set c='A';
      		end case;
      		return c;
      END;
      
      
      create FUNCTION num(id int) RETURNS  varchar(10)
      BEGIN
      		DECLARE c varchar(10) DEFAULT '1';
      		case id 
      		when 1 then set c='C';
      		when 2 and id<=80 then set c='B';
      		else set c='A';
      		end case;
      		return c;
      END;
      
      select num1(2)
      

if结构

  • 语法:

    if 条件1 then 语句1

    elseif 条件2 then 语句2

    else 语句n

    end if;

  • 只能应用在begin end中

  • create function test_if(score int ) returns varchar(3)
    begin 
    		if score > 90 then return 'A';
    		elseif score >80 then return 'B';
    		else return 'D';
    		end if;
    end 
    
    select test_if(80)
    

循环结构

  • 分类:while、loop、repeat

  • 循环控制:iterate类似于continue

    ​ leave 类似于 break

  • 语法:

    • while:

    ​ 【名称:】while 循环条件 do

    ​ 循环体

    ​ end while 【名称】;

    • loop:

      【名称:】 loop

      ​ 循环体

      end loop 【名称】

    • repeat

      【名称:】repeat

      ​ 循环体

      until 结束循环的条件

      end repeat 【名称】;

  • create PROCEDURE test( in id int)
    begin
    
    		DECLARE num int DEFAULT 0;
    		DECLARE str varchar(26) DEFAULt'abcdefghijklmnopqrstuvwxyz';
    		DECLARE starti int DEFAULT 1;
    		DECLARE len int DEFAULT 1;
    		while num<id do
    				set starti = floor(rand()*26+1);
    				set len =floor(rand()*(21-starti)+1);
    				insert into string (contnet) values (SUBSTR(str ,starti,len));
    				set num=num+1;
    		end while;
    		
    		
    end 
    
    call test(6)
    

    实现生成一段随机的字符串,插入表中。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值