mysql向多张关键表写入内容_MySQL向一张表中插入多条测试数据的方法_MySQL

在MySQL数据库中,有时为了建立测试表格,需要向一张表中插入很多条数据,可以使用下面的存储过程实现:

首先建立一个测试表:

mysql> create table t_1 (id serial,name char(5)) ;

Query OK, 0 rows affected (0.26 sec)

然后建立一个存储过程:

delimiter $$

SET AUTOCOMMIT = 0$$

create procedure test01()

begin

declare v_cnt decimal (10) default 0 ;

dd:loop

insert into t_1 values (null,'aaaaa'),(null,'aaaaa'),(null,'aaaaa'),(null,'aaaaa'),(null,'aaaaa'),(null,'aaaaa'),(null,'aaaaa'),(null,'aaaaa'),(null,'aaaaa'),(null,'aaaaa');

commit;

set v_cnt = v_cnt+10 ;

if v_cnt = 10000 then leave dd;

end if;

end loop dd ;

end;$$

delimiter ;

调用存储过程向表格中插入数据:

mysql> select count(*) from t_1;

+----------+

| count(*) |

+----------+

| 0 |

+----------+

1 row in set (0.00 sec)

mysql>

mysql>

mysql> call test01;

Query OK, 0 rows affected (21.25 sec)

mysql> select count(*) from t_1;

+----------+

| count(*) |

+----------+

| 10000 |

+----------+

1 row in set (0.01 sec)

再次执行存储过程,会插入更多数据:

mysql> call test01;

Query OK, 0 rows affected (21.70 sec)

mysql> select count(*) from t_1;

+----------+

| count(*) |

+----------+

| 20000 |

+----------+

1 row in set (0.01 sec)

注:上面的测试表结构,插入数据,表格行数,都可以根据需要进行修改,以便生成需要的数据测试环境。

对于MySQL的存储过程,有以下几个命令进行操作:

select name from mysql.proc where db='test';

select routine_name from information_schema.routines where routine_schema='test';

show procedure status where db='test';

show create procedure test.test01;

删除存储过程的命令:

drop procedure test01;

查询数据库中的存储过程:

方法一:(直接查询)

select `specific_name` from mysql.proc where db = 'your_db_name' and `type` = 'procedure'

方法二:(查看数据库里所有存储过程+内容)

show procedure status;

方法三:(查看当前数据库里存储过程列表)

select specific_name from mysql.proc ;

方法四:(查看某一个存储过程的具体内容)

select body from mysql.proc where specific_name = 'your_proc_name';

查看存储过程或函数的创建代码 :

show create procedure your_proc_name;

show create function your_func_name;

删除存储过程:

drop procedure your_proc_name;

但如果测试表格中存在主键,使用上面的存储过程可能出现问题,可以使用下面的存储过程:

建立测试表:

CREATE TABLE t1(id1 INT,a1 INT,b1 INT,PRIMARY KEY(id1));

CREATE TABLE t2(id2 INT,a2 INT,b2 INT);

CREATE TABLE t3(id3 INT NUIQUE,a3 INT,b3 INT);

CREATE TABLE t4(id4 INT,a4 INT,b4 INT);

CREATE TABLE t5(id5 INT UNIQUE,a5 INT,b5 INT);

建立插入数据的存储过程:

建立 while ···· end while存储过程(执行前检查执行条件):

DELIMITER //

CREATE PROCEDURE proc4()

begin

declare var int;

set var=0;

while var<6 do

insert into t1 values(var,var,var);

set var=var+1;

end while;

end;

//

DELIMITER ;

建立 repeat......end repeat 存储过程(执行后检查执行条件):

DELIMITER //

CREATE PROCEDURE proc01 ()

begin

declare v int;

set v=0;

repeat

insert into t1 values(v,v,v);

set v=v+1;

until v>=100

end repeat;

end;

//

DELIMITER ;

f68f2add0b68e4f9810432fce46917b7.png

相关标签:

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值