Mysql循环插入数据的实现

吾爱主题 阅读:126 2024-04-01 23:21:27 评论:0

Mysql 循环插入数据

说明:首先需要设置delimiter。

delimiter的作用:告诉解释器,这段命令是否已经结束了,mysql是否可以执行了

默认情况下,delimiter是‘;’但是当我们编写procedure时,如果是默认设置,那么一遇到‘;’,mysql就要执行。

WHILE…DO方式

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 /*循环插入*/ DELIMITER // CREATE PROCEDURE callback() BEGIN    DECLARE num INT ;    SET num = 100;    WHILE     num < 300 DO     INSERT INTO t_user(user_loginName,user_password,user_name,user_gender,user_email,user_gradeValueInt)     VALUES (CONCAT( "YuWang" , num),CONCAT( "pwd" , num),CONCAT( "YuWang" , num), "男" , "1024@qq.com" ,num);     SET num = num + 1;    END WHILE; END //

设置好了存储过程要执行调用才生效

?
1 CALL callback();

其他基本命令

查看表

?
1 2 DESC USER ; SHOW FULL FIELDS FROM user ;

查看表索引

?
1 2 SHOW KEYS FROM USER ; SHOW index FROM USER ;

清空表

?
1 DELETE FROM USER ;

查看指定库中的PROCEDURE

?
1 SELECT NAME FROM mysql.proc WHERE db = ‘test ' AND TYPE = ‘PROCEDURE' ;

删除指定PROCEDURE

?
1 DROP PROCEDURE IF EXISTS callback;

查看创建代码

?
1 SHOW CREATE PROCEDURE callback;

调用存储过程(callback是自己命名的)

?
1 CALL callback();

删除存储过程(callback是自己命名的)

?
1 DROP PROCEDURE callback;

Mysql 循环插入10000条数据

因为项目用user和data两张表,把user中的部分字段拆分到data中,这样两表都要通过user_id关联起来(作为两表主键),当注册新用户时只往use表写入了user_id,data表无法同时写入user_id,这样会导致用户无法修改资料。

1.所以按自己想法,写个循环1W次随便插入数据测试

?
1 2 3 4 5 6 7 8 9 10 11 DROP PROCEDURE IF EXISTS proc_initData; --如果存在此存储过程则删掉 DELIMITER $ CREATE PROCEDURE proc_initData() BEGIN      DECLARE i INT DEFAULT 1;      WHILE i<=10000 DO          INSERT INTO data(user_id) VALUES (i);          SET i = i+1;      END WHILE; END $ CALL proc_initData();

2.执行过程

a、第三行开始正式插入10000条数据,结果显示耗时 32.453秒

b、第四行验证插入是否成功,Mysql WorkBench限制只返回了1000条数据

c、第五行验证1000条以外的数据是否插入成功,返回了1行 user_id = 5231,成功插入!

以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。

原文链接:https://blog.csdn.net/bakelFF/article/details/123515258

可以去百度分享获取分享代码输入这里。
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

【腾讯云】云服务器产品特惠热卖中
搜索
标签列表
    关注我们

    了解等多精彩内容