全站资源开放下载,感谢广大网友的支持
链接失效请移步职业司平台
非盈利平台

非盈利平台

只为分享一些优质内容

Java帮帮-微信公众号

Java帮帮-微信公众号

将分享做到极致

微信小程序

微信小程序

更方便的阅读

职业司微信公众号

职业司微信公众号

实时动态通知

安卓APP

安卓APP

我们从此不分开

程序员生活志-公众号

程序员生活志-公众号

程序员生活学习圈,互联网八卦黑料

支付宝赞助-Java帮帮社区
微信赞助-Java帮帮社区

SQL循环语句【云图智联】

1
发表时间:2020-07-14 09:32

前言

有时我们需要添加很多测试的数据 在不使用Java的情况下 如何用SQL语句进行添加 ? 本文将讲述单层循环,双层循环,以及日期循环

image

单层循环

测试表代码

create table test(location_id int ,location_name varchar(10));

再编写存储过程,其中涉及到循环的使用。我们欲通过这个存储过程,来达到往表中插入数据的效果

drop procedure if exists insert_while;delimiter //create procedure insert_while()begin    declare i int default 1;    while i<10    do        insert into test values(i,concat('bookworm',i));        set i=i+1;    end while;    commit;end //delimiter ;

下面是输出结果:

mysql> select * from test;Empty set (0.00 sec)mysql> call insert_while();Query OK, 0 rows affected (0.35 sec)mysql> select * from test;+-------------+---------------+| location_id | location_name |+-------------+---------------+|           1 | bookworm1     ||           2 | bookworm2     ||           3 | bookworm3     ||           4 | bookworm4     ||           5 | bookworm5     ||           6 | bookworm6     ||           7 | bookworm7     ||           8 | bookworm8     ||           9 | bookworm9     |+-------------+---------------+9 rows in set (0.00 sec)

drop procedure if exists insert_while:如果存在函数insertwhile先删除它

delimiter //:将结束符定义为//在begin和end中会使用;如果不换程序会错误

create procedure:创建存储过程

delimiter ;结束符换回;号

双重循环

创建表

CREATE TABLE `dim_time` (   `TimeKey` int(11) NOT NULL,   `Hour` tinyint(4) DEFAULT NULL,   `Minute` tinyint(4) DEFAULT NULL,   PRIMARY KEY (`TimeKey`))

编写存储过程

drop procedure if exists insertValueIntoDimTime;delimiter //create procedure insertValueIntoDimTime()begin    declare hour int default 0;    declare min int default 0;            while hour < 24        do            while min < 60            do                insert into dim_time values(hour*100+min,hour,min);                set min=min+1;            end while;            set min = 0;            set hour = hour+1;        end while;end //delimiter ;

运行

mysql> call insertValueIntoDimTime;Query OK, 1 row affected (22.12 sec)

结果

mysql> select count(*) from dim_time;+----------+| count(*) |+----------+|     1440 |+----------+1 row in set (0.02 sec)mysql> select * from dim_time order by timekey limit 10;+---------+------+--------+| TimeKey | Hour | Minute |+---------+------+--------+|       0 |    0 |      0 ||       1 |    0 |      1 ||       2 |    0 |      2 ||       3 |    0 |      3 ||       4 |    0 |      4 ||       5 |    0 |      5 ||       6 |    0 |      6 ||       7 |    0 |      7 ||       8 |    0 |      8 ||       9 |    0 |      9 |+---------+------+--------+10 rows in set (0.00 sec)mysql> select * from dim_time order by timekey desc limit 10;+---------+------+--------+| TimeKey | Hour | Minute |+---------+------+--------+|    2359 |   23 |     59 ||    2358 |   23 |     58 ||    2357 |   23 |     57 ||    2356 |   23 |     56 ||    2355 |   23 |     55 ||    2354 |   23 |     54 ||    2353 |   23 |     53 ||    2352 |   23 |     52 ||    2351 |   23 |     51 ||    2350 |   23 |     50 |+---------+------+--------+10 rows in set (0.00 sec)

日期循环

3.1 需求
今天需要从订单库中找出过去六个月的订单,所以需要写一个简单的日期循环,用于读取数据。

3.2实现

drop procedure if exists date_loop;delimiter //create procedure date_loop()begin    declare i int default 1;    declare start_date date ;   -- 当前日子减去6个月    declare end_date date ; -- 当前天        select date_sub(current_date(),interval 6 month) into start_date;    select current_date() into end_date;        while start_date < end_date    do        select start_date;        set start_date = date_add(start_date,interval 1 day);    end while;    commit;end //delimiter ;

date_sub(object,interval):从指定日期减去指定年,月,日,时,分,秒

object:

  • 必须

  • 规定一个由data_current()返回的DataTime的对象

interval:

  • 必须

  • 规定是一个interval对象

返回值:如果成功返回DataTime对象,如果失败返回false

免费学习视频欢迎关注云图智联:https://e.yuntuzhilian.com/


Java帮帮学习群生态

Java帮帮学习群生态

总有一款能帮到你

Java学习群

Java学习群

与大牛一起交流

大数据学习群

大数据学习群

在数据中成长

九点编程学习群

九点编程学习群

深夜九点学编程

python学习群

python学习群

人工智能,爬虫

测试学习群

测试学习群

感受测试的魅力

Java帮帮生态承诺

Java帮帮生态承诺

一直坚守,不负重望

初心
勤俭
诚信
正义
分享
友链交换:加帮主QQ2524138991 留言即可 24小时内答复  
业司
满吉教育资讯
会员登录
获取验证码
登录
登录
我的资料
留言
回到顶部