MySQL的循环结构

MySQL的循环结构流程控制结构有三种,顺序结构、分支结构、循环结构。顺序结构:程序从下往下依次执行。标签相当于给循环起一个名字,这样可以搭配循环控制使用,是可选的

大家好,欢迎来到IT知识分享网。

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

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

本文整理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),''); 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表数据

MySQL的循环结构

已经插入了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),''); #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) 

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

MySQL的循环结构

一共只有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),''); 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) 

查看一下数据

MySQL的循环结构

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

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

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/48936.html

(0)
上一篇 2024-09-03 06:50
下一篇 2024-09-04 19:45

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信