首页 > 数据库 >sql提高 循环结构

sql提高 循环结构

时间:2023-04-11 15:34:05浏览次数:20  
标签:default end int admin while 循环 sql declare 结构

循环结构

 

分类:

while、loop、repeat

——对应java中:for、while、do while

 

 

循环控制:

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

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

 

1.while
语法:

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

end while;

联想:

while(循环条件) { 循环体 };

2.loop
语法:

【标签:】 loop

循环体;

end loop 【标签】;

可以用来描述简单的死循环

3.repeat
语法:

【标签:】repeat

循环体;

until 结束循环的条件

end repeat 【标签】;

#案例:批量插入,根据次数插入到admin表中多条记录

create procedure pro_while1(in insertCount int)

begin

declare i int default 1;

while i <= insertCount do

insert into admin(username, password) values (concat('Rose', i), '666');

set i = i + 1;

end while;

end $



call pro_while1(10)$

select count(*) from admin$

 

#添加leave语句

#案例:批量插入,根据次数插入到admin表中多条记录,如果次数大于20则停止

truncate table admin$

drop procedure pro_while1$



create procedure pro_while1(in insertCount int)

begin

declare i int default 0;

a:while i <= insertCount do

set i = i + 1;

if i > 20 then leave a;

end if;

if i <= 10 then iterate a;

end if;

insert into admin(username, password) values (concat('Rose', i), '666');



end while a;

end $



call pro_while1(30)$

select count(*) from admin$

 

 

#案例1:已知表stringcontent

其中字段:

id 自增长

content varchar(20)

 

向改表插入指定个数的随机字符串:

drop table if exist stringcontent$

create table stringcontent (

id int primary key auto_increment,

content varchar(20)

)$



create procedure test_randstr_insert(in insertcount int)

begin

declare i int default 1;

declare str varchar(26) default 'abcdefghijklmnopqrstuvwxyz'; #被截取的字符串

declare startindex int default 1; #截取字符串的起始索引

declare len int default 1; #截取字符串的长度

while i < insertcount do

set startindex = ceil(rand() * 26);

set len = ceil(rand() * 7);

insert into stringcontent(content) values(substr(str, startindex, len));

set i = i + 1;

end while;

end $



call test_randstr_insert(30)$

select * from stringcontent$

标签:default,end,int,admin,while,循环,sql,declare,结构
From: https://www.cnblogs.com/gaobangguo/p/17306408.html

相关文章

  • mysql查询报表数据补全12个月
    mysql中生成多行序列1SELECT2SUBSTRING_INDEX(3SUBSTRING_INDEX('1,2,3,4,5,6,7,8,9,10,11,12',',',help_topic_id+1),',',-1)ROWNUM4FROM5mysql.help_topic6WHERE7help_topic_id<(LENGTH('1,2,3,4......
  • 力扣1107(MySQL)-每日新用户统计(中等)
    题目:Traffic表:该表没有主键,它可能有重复的行。activity列是ENUM类型,可能取(‘login’,‘logout’,‘jobs’,‘groups’,‘homepage’)几个值之一。问题编写一个SQL查询,以查询从今天起最多90天内,每个日期该日期首次登录的用户数。假设今天是2019-06-30.示例Tr......
  • 【SDR学习】RTL-SDR基本结构
    最近对无线电很有兴趣,故而本篇博客介绍一下自己购买的RTL-SDR的基本结构首先SDR就是SoftwareDefinedRadio,即软件定义的无线电,而RTL-SDR是一款非常便宜的SDR设备,可用于接收射频无线电信号,我购买的如下图所示:把外壳拆开后可以看一下里面的结构:......
  • R语言-连接MySQL数据库方法
    #2R语言-连接MySQL数据库方法#####2.1方法1:使用R数据库接口连接数据库#####使用RMySQL包install.packages('RMySQL')library(RMySQL)#有两种方式操作#2.1.1使用dbConnect####conn<-dbConnect(MySQL(),dbname="smartbi_data",        ......
  • 力扣1098(MySQL)-小众书籍(中等)
    题目:书籍表Books: book_id是这个表的主键订单表Orders:order_id是这个表的主键。book_id是Books表的外键。问题你需要写一段SQL命令,筛选出过去一年中订单总量少于10本的书籍。注意:不考虑上架(availablefrom)距今不满一个月的书籍。并且假设今天是2019-06-......
  • 深度剖析Redis九种数据结构实现原理,建议收藏
    1.Redis介绍Redis是一个高性能的键值存储系统,支持多种数据结构。包含五种基本类型String(字符串)、Hash(哈希)、List(列表)、Set(集合)、Zset(有序集合),和三种特殊类型Geo(地理位置)、HyperLogLog(基数统计)、Bitmaps(位图)。每种数据结构都是为了解决特定问题而设计的,适用不同的场景。想要......
  • 加载中,三点循环机制
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>加载动画</title></head><style>.dotting{margin:20%auto;width:150px;}.dotting{margi......
  • 见sql问题总结四
    --查询各个课程及相应的选修人数;SELECTaa.cid,aa.cname,bb.numFROM(SELECTcid,cnameFROMcourse)aaINNERJOIN(SELECTCOUNT(student_id)asnum,corse_idFROMscoreGROUPBYcorse_id)bbonaa.cid=bb.corse_id--查询不同课程但成绩相同的学生的学号、课程......
  • 麻省理工提出非结构化环境中基于语义的车辆全局定位新方法
    以下内容来自小六的机器人SLAM学习圈知识星球每日更新内容点击领取学习资料→机器人SLAM学习资料大礼包论文#GlobalLocalizationinUnstructuredEnvironmentsusingSemanticObjectMapsBuiltfromVariousViewpoints论文地址:https://arxiv.org/abs/2303.04658作者单......
  • MySQL 5.6.39 修改 root 密码不生效
    记一次MySQL 修改 root 密码不生效的问题,修改密码后新密码不生效,依旧只能使用旧密码登录,改了个寂寞。一、版本MySQL5.6.39二、问题使用 update 命令修改密码:updateusersetpassword=password('新密码')whereuser='root'andhost='%';刷新权限:flushprivilege......