51单片机如何跳出wile循环_MySQL的循环结构

流程控制结构有三种,顺序结构、分支结构、循环结构。

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

本文整理MySQL循环结构相关内容。

什么是MySQL的循环结构

分类

三种:while、loop、repeat

循环控制

iterate: 类似于java中的continue,继续,即结束当前循环,继续下一次。

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

语法

wile

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

标签相当于给循环起一个名字,这样可以搭配循环控制使用,是可选的,没有就是一个普通的循环。

loop

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

loop没有循环条件,可以模拟简单的死循环,想要中途跳出可以使用leave。

repeat

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

repeat有点类似do while,肯定会执行一次循环体。

以while循环做些实例,只要掌握了while循环的使用,那么其他的也相差无几。

一、无循环控制

先建一张user表用于测试,字段id是主键,并且自增,还有有name和password字段。

CREATE TABLE user ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `password` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`))

一个简单的问题,根据传入的次数向user表插入多条记录。

我们可以选择额头存储过程或者函数,因为问题没有涉及到返回值,所以选择写一个存储过程。

在java,while循环我们可以这么做:

int i = 0;while(i < n){ …… i++;}

到MySQL中也是同样思路

delimiter &create PROCEDURE p1(in n int)BEGIN DECLARE i int default 1;#定义i变量,默认值1 while i <= n DO insert into user(name,password)  VALUES (CONCAT('john',i),'123456'); set i = i+1;#i++ end while;end &

例中while循环也可以加上名字,不过没有使用到循环控制,所以名字有没有也无所谓。插入name和password,name用单词john拼接了i,方便查看。测试简单点,插入10条数据

mysql> call p1(10)&Query OK, 1 row affected (0.43 sec)

看一下user表数据

8d1ff8b40720349c6452eceea89c5d07.png

已经插入了10条语句。

二、使用leave

用上面的例子改变一下,当次数大于20的时候停止循环。

 delete from user&create PROCEDURE p2(in n int)BEGIN DECLARE i int default 1;#定义i变量,默认值1 a:while i <= n DO #判断 if i > 20 then leave a; end if; #插入 insert into user(name,password)  VALUES (CONCAT('john',i),'123456'); #i++ set i = i+1; end while a;end &

先把表数据都删除。创建存储过程p2,在插入之前判断次数是否大于20次,用到了if结构,而且使用leave跳出循环,此时要加循环加上标签也就是名字。

传入100测试

mysql> call p2(100)&Query OK, 1 row affected (0.84 sec)

看一下表中现在有多少条数据。

18dcf73fe8e93086c10f33607218c219.png

一共只有20条数据,那么说明判断是有效果的。

三、使用iterate

问题再改一下,这次只插入偶数次的记录。

java判断偶数可以这样:i%2==0,而MySQL中可以使用MOD函数。看一下存储过程写法

create PROCEDURE p3(in n int)BEGIN DECLARE i int default 0;#定义i变量,默认值1 a:while i <= n DO set i = i+1;#i++ if mod(i,2) !=0 then ITERATE a; end if; insert into user(name,password)  VALUES (CONCAT('john',i),'123456'); end while a;end &

这次变量 i 的默认值改为0,i 要先自增,再判断它是否是偶数,mod函数值不等于0则说明不是偶数,结束当前循环,即不能执行插入语句。

传入100测试一下,测试前先把数据都删除。

delete from user&mysql> call p3(100)&Query OK, 1 row affected (1.86 sec)

查看一下数据

d22ed739a073760dd3fd3f364270f208.png

一共50条数据,从name的值可以看到,插入的都是偶数。

好了,关于循环就到此,了解了一下怎么使用。使用while从无循环控制,到使用leave和iterate循环控制都简单地举了例子,这些问题使用其他两个循环结构也可以完成,可以自己测试一下。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值