Mysql循环插入数据的实现
Mysql 循环插入数据
说明:首先需要设置delimiter。
delimiter的作用:告诉解释器,这段命令是否已经结束了,mysql是否可以执行了
默认情况下,delimiter是‘;’但是当我们编写procedure时,如果是默认设置,那么一遇到‘;’,mysql就要执行。
WHILE…DO方式
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;
//
设置好了存储过程要执行调用才生效
CALL callback();
其他基本命令
查看表
DESC USER;
SHOW FULL FIELDS FROM user;
查看表索引
SHOW KEYS FROM USER;
SHOW index FROM USER;
清空表
DELETE FROM USER;
查看指定库中的PROCEDURE
SELECT NAME FROM mysql.proc WHERE db = ‘test' AND TYPE = ‘PROCEDURE';
删除指定PROCEDURE
DROP PROCEDURE IF EXISTS callback;
查看创建代码
SHOW CREATE PROCEDURE callback;
调用存储过程(callback是自己命名的)
CALL callback();
删除存储过程(callback是自己命名的)
DROP PROCEDURE callback;
Mysql 循环插入10000条数据
因为项目用user和data两张表,把user中的部分字段拆分到data中,这样两表都要通过user_id关联起来(作为两表主键),当注册新用户时只往use表写入了user_id,data表无法同时写入user_id,这样会导致用户无法修改资料。
1.所以按自己想法,写个循环1W次随便插入数据测试
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,成功插入!
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341