zoukankan      html  css  js  c++  java
  • 第七节:循环结构

    一、循环结构

      1、循环结构

          程序在满足一定条件的基础上,重复执行一段代码。

          循环结构只能放在 begin end 中!

      2、分类

          while、loop、repeat

      3、循环控制

        iterate:类似于 continue,继续,结束本次循环,继续下一次。

        leave:类似于 break;跳出,结束当前所在的循环。

      4、三种循环的对比

        (1)这三种循环都可以省略名称,但如果循环中添加了循环控制语句(leave或iterate)则必须添加名称;

        (2)loop 一般用于实现简单的死循环;

            while 先判断后执行;

           repeat 先执行后判断,无条件至少执行一次;

    二、while 循环

      1、语法格式

    【标签:】while 循环条件 do
    	循环体;
    end while【标签】;
    

      

    三、loop 循环

      1、语法结构

    【标签:】loop
    	循环体;
    end loop 【标签】;
    

        可以用来模拟简单的死循环。

    四、repeat 循环

      1、语法结构

    【标签:】repeat
    	循环体;
    until 结束循环的条件
    end repeat 【标签】;
    

      

    五、案例

      1、批量插入,根据次数插入到 admin 表中多条记录

        没有添加循环控制语句:

     1 DROP PROCEDURE pro_while1$
     2 CREATE PROCEDURE pro_while1(IN insertCount INT)
     3 BEGIN
     4     DECLARE i INT DEFAULT 1;
     5     WHILE i<=insertCount DO
     6         INSERT INTO admin(username,`password`) VALUES(CONCAT('Rose',i),'666');
     7         SET i=i+1;
     8     END WHILE;
     9     
    10 END $
    11 
    12 CALL pro_while1(100)$

      2、批量插入,根据次数插入到admin表中多条记录,如果次数>20则停止

        使用标签和leave语句:

     1 TRUNCATE TABLE admin$
     2 DROP PROCEDURE test_while1$
     3 CREATE PROCEDURE test_while1(IN insertCount INT)
     4 BEGIN
     5     DECLARE i INT DEFAULT 1;
     6     a:WHILE i<=insertCount DO
     7         INSERT INTO admin(username,`password`) VALUES(CONCAT('xiaohua',i),'0000');
     8         IF i>=20 THEN LEAVE a;
     9         END IF;
    10         SET i=i+1;
    11     END WHILE a;
    12 END $
    13 
    14 
    15 CALL test_while1(100)$

      3、批量插入,根据次数插入到admin表中多条记录,只插入偶数次

        使用 iterate 语句和标签

     1 TRUNCATE TABLE admin$
     2 DROP PROCEDURE test_while1$
     3 CREATE PROCEDURE test_while1(IN insertCount INT)
     4 BEGIN
     5     DECLARE i INT DEFAULT 0;
     6     a:WHILE i<=insertCount DO
     7         SET i=i+1;
     8         IF MOD(i,2)!=0 THEN ITERATE a;
     9         END IF;
    10         
    11         INSERT INTO admin(username,`password`) VALUES(CONCAT('xiaohua',i),'0000');
    12         
    13     END WHILE a;
    14 END $
    15 
    16 
    17 CALL test_while1(100)$

      4、流程控制综合案例

        已知表stringcontent,其中字段:id 自增长,content varchar(20)。向该表插入指定个数的,随机的字符串:

        (1)创建表:

    1 DROP TABLE IF EXISTS stringcontent;
    2 
    3 CREATE TABLE stringcontent(
    4     id INT PRIMARY KEY AUTO_INCREMENT,
    5     content VARCHAR(20)
    6     
    7 );

        (2)创建存储结构

     1 DELIMITER $
     2 CREATE PROCEDURE test_randstr_insert(IN insertCount INT)
     3 BEGIN
     4     DECLARE i INT DEFAULT 1;
     5     DECLARE str VARCHAR(26) DEFAULT 'abcdefghijklmnopqrstuvwxyz';
     6     DECLARE startIndex INT;#代表初始索引
     7     DECLARE len INT;#代表截取的字符长度
     8     WHILE i<=insertcount DO
     9         SET startIndex=FLOOR(RAND()*26+1);#代表初始索引,随机范围1-26
    10         SET len=FLOOR(RAND()*(20-startIndex+1)+1);#代表截取长度,随机范围1-20-startIndex+111         INSERT INTO stringcontent(content) VALUES(SUBSTR(str,startIndex,len));
    12         SET i=i+1;
    13     END WHILE;
    14 
    15 END $
    16 
    17 CALL test_randstr_insert(10)$
  • 相关阅读:
    ubuntu 用shell脚本实现将当前文件夹下全部文件夹中的某一类文件复制到同一文件夹下
    读书笔记-2java虚拟机的可达性算法与finalize方法
    find the longest of the shortest (hdu 1595 SPFA+枚举)
    杭电 2176 取(m堆)石子游戏(博弈)
    MVC框架的优缺点
    Wireshark-TCP协议分析(包结构以及连接的建立和释放)
    Ubuntu安装教程--Win7系统中含100M保留分区
    eclipse新建android项目出现非常多错误
    关于简单的加密和解密算法
    在一台server上部署多个Tomcat
  • 原文地址:https://www.cnblogs.com/niujifei/p/15009563.html
Copyright © 2011-2022 走看看