小白终是踏上了这条不归路----小文的mysql学习笔记(23)---------流程控制结构

**
小白终是踏上了这条不归路----小文的mysql学习笔记(1)

小白终是踏上了这条不归路----小文的mysql学习笔记(2)----条件查询

小白终是踏上了这条不归路----小文的mysql学习笔记(3)----排序询查

小白终是踏上了这条不归路----小文的mysql学习笔记(4)----常见的基本函数

小白终是踏上了这条不归路----小文的mysql学习笔记(5)----分组查询


小白终是踏上了这条不归路----小文的mysql学习笔记(目录)
**
流程控制结构主要一共有三种:

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

一、分支结构

1、if函数

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

ps:一般和其他的语句如 select、等一起使用

解释: 如果表达式1成立,则IF函数返回表达式2的值,否则返回表达式3的值

作用: 可以实现简单的双分支。

当然下面我们举一个简单的例子,只是演示一下if函数,

举例: 当然这里2>3 显然是不正确的,所以输出表达式3‘错误’。
在这里插入图片描述

2、case结构

特点:
         1、它可以作为表达式,嵌套在其他语句中使用,可以放在任何地方,BEGIN END中或BEGIN END的外面;
         2、它也可以作为独立的语句去使用,但只能放在BEGIN END中。
         3、如果WHEN中的值满足或条件成立,则执行对应的THEN后面的语句,并且结束CASE,如果都不满足,则执行ELSE中的语句或值.
         4、ELSE可以省略,如果ELSE省略了,并且所有WHEN条件都不满足,则返回NULL

case结构一共有两种情况 ,下面我们来分别说一说

(1)case 函数的使用一: switch case 的效果类似于java中的switch语句,一般用于实现等值判断。

        语法case 要判断的字段或表达式
                    When 常量1 then 要显示的值1或语句;
                    When 常量2 then 要显示的值2或语句;
                    ………
                    else 要显示的值n或语句;
                    end case;

(2)、case函数的使用二: 类似于多重if。一般用于实现区间判断

         语法case
                    When 条件1 then 要显示的值1或语句1;
                    When 条件2 then 要显示的值2或语句2;
                    ……
                   else 要显示的值n或语句n;
                   end case;

那么下面我们简单的举一个例子

例: 创建存储过程,根据传入的工资,来返回等级,
要求如果工资>=20000,显示为A级别;如果工资>15000,显示为B级别;
如果工资>10000,显示为c级别;否则显示为D级别
在这里插入图片描述
那么我们来调用一下:我们输入工资12500。
在这里插入图片描述
明显返回了等级为C级。

3、if结构

语法:       if 条件1   then   语句1;
                  elseif   条件2   then   语句2;
                  … …
                【else 语句n】
                  end   if

那么下面我们来举一个简单的 例子:
          根据传入的成绩,来显示等级,比如传入的成绩: 90-100, 返回A,80-90, 返回B,60-80, 返回C,否则,返回D。
在这里插入图片描述
调用:我们举例输入66分,返回等级为c等级
在这里插入图片描述

二、循环结构

一共有三种: while 、loop 、repeat

流程控制:

iterate 类似于continue, 继续,结束本次循环,继续下一次。
leave 类似于 break,跳出,结束当前所在的循环。

注意: 别名;当我们要添加流程控制语句时必须,先给我们的循环取别名;如果不加循环控制语句,那么可以不用取别名

1、while

ps:先判断后执行。

语法:
          【别名:】 while 循环条件 do
                                            循环体;
            end while 【别名】;

那么下面我们来分别举一下例子:

(1)没有添加循环控制语句
批量插入,根据输入的次数,来决定插入多少条记录到我们的admin表
在这里插入图片描述
我们调用 call in_while(66)$ 插入66个德玛,都是以及插入了的
在这里插入图片描述

(2)添加流程控制leave语句

案例: 批量插入,根据输入的次数插入数据到admin表,但是一旦条数>15,则立刻终止
在这里插入图片描述
调用:我们试着输入20次,但是大于了十五直接终止,所以只会插入15条数据
在这里插入图片描述
(3)添加流程控制iterate语句
案例:批量插入,根据插入次数插入到admin表中多条记录,只有5的倍数才会被插入。
在这里插入图片描述
调用:我们输入次数100,那么符合条件的应该就有20次,so会插入20条数据
在这里插入图片描述

2、loop

ps:它没有内置的循环条件,但是可以通过添加leave语句来跳出循环

语法:
            【别名:】loop
                          循环体;
              end loop 【别名】;

ps:一般用来模拟死循环

3、repeat

ps:先执行,后判断。

语法:
            【别名:】 repeat
                              循环体;
              until 结束循环的条件
              end repeat 【别名】;

那么我们简单的做个例子:同样是根据输入次数,批量插入表中多条数据

DELIMITER $
CREATE PROCEDURE a1(IN insertcount INT)
BEGIN
      DECLARE i INT DEFAULT 0;
      
        REPEAT  
       INSERT INTO admin(username,`password`) VALUES(CONCAT('小文+',i),'6666');      
	    SET i=i+1;

       UNTIL i>=insertcount       
       END REPEAT;
END $

我们来调用:插入五条,然后我们来查询数据,你会发现有一个区别:如果你上面设置变量和之前的while循环一样设置为1的话就会少插入一次,所以我们起初设置变量i初始值要设为0.才能达到和while一样的效果。
因为该repeat循环是先执行一次再看是否满足条件
在这里插入图片描述

补充:

rand() 函数
含义: 返回一个随机的浮点值;即随即返回一个0到1之间的数,不包括临界值

简单的做一个例子来理解它
首先我们来看看我们刚刚admin表中的所有信息,一共二十个嘛,
在这里插入图片描述
然后我们举个栗子:查询admin表中 随机五条信息
在这里插入图片描述

那么下面我们简单的做一个有关循环控制的案例:

创建一个存储过程,实现向该表插入指定个数的随机长度的有序字符串
首先我们先创建一个ac表
在这里插入图片描述
然后下面在该表中创建存储过程

DELIMITER $
CREATE PROCEDURE tx(IN insertcount INT)
BEGIN
	DECLARE i INT DEFAULT 1;
	DECLARE str VARCHAR(30) DEFAULT 'abcdefghijklmnopqrstuvwxyz';
	DECLARE start_a INT DEFAULT 1;
	DECLARE end_a INT DEFAULT 1;
	
	 WHILE i<=insertcount DO
		
	    SET start_a=FLOOR(RAND()*26+1);
	    SET end_a=FLOOR(RAND()*(27-start_a)+1);
	   
	   INSERT INTO ac(shzu) VALUES(SUBSTRING(str,start_a,end_a));	
	   SET i=i+1; 
	END WHILE;
END $

那我们简单的调用,输入数字5 并且查询ac表,你会发现这,的确是随机插入的五条有序的随机字符串
在这里插入图片描述

**
        Don`t panic. The moon is lost somewhere in the sea.
                                                    --------别慌,月亮也在大海某处迷茫。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章