1.首先我们先创建一张表
创建一张表以存放测试数据,该表包含四个字段:唯一自增量的主键id、姓名name、手机号mobile、身份证号idcode。
-- ----------------------------
-- Table structure for `user_test`
-- ----------------------------
DROP TABLE IF EXISTS `user_test`;
CREATE TABLE `user_test` (
`id`int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(10) DEFAULT NULL,
`mobile` varchar(11) DEFAULT NULL,
`idcode`varchar(18) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2.第一步先写简单的增加一条数据的存储过程
DROP PROCEDURE IF EXISTS proInsert;
Create procedure proInsert()
Begin
Insert into user_test(name,mobile,idcode)values('姓名1','13900001111','123456789012345678');
End
Call proInsert ();
执行结果如下图:
3.然后在原有存储过程基础上增加循环语句
DROP PROCEDUREIF EXISTS proInsert;
Create procedureproInsert()
Begin
#定义一个初始变量
Declare i int;
Declare _name varchar(10)default 1;
Declare _mobilevarchar(11) default 1;
Declare _idcodevarchar(18) default 1;
#设置变量值为1
Set i=1;
#此处的i值可以根据需要调整为1000、10000、100000等数量级。
While i<=10 do
#mysql的连接函数
Set_name=concat('姓名_',i);
#name加后缀
Set _mobile=1380000000+i;
#mysql 随机函数,生成0-1的小数
Set_idcode=123456789010000000+i;
Insert intouser_test(name,mobile,idcode) values(_name,_mobile,_idcode);
Set i=i+1;
End while;
End
4.使用call语句调用存储过程,或者使用客户端软件运行函数。
CallproInsert();
5.增加1000条后的数据。
编辑while i<=1000 do,则增加1000条测试数据。修改为10000则增加10000条数据。
6.再认识一些存储过程常用的语法:
a) 删除存储过程命令:
DROP {PROCEDURE | FUNCTION} [IF EXISTS] 名称;
b) 创建存储过程:
create procedure 名称(参数,.....)
begin
过程体;
过程体;
end
c) 参数:
in|out|inout 参数名称 类型(长度)
d) 在sql语句中给变量赋值:
into
e) 在过程体外声明变量:
@变量名
f) 重新制定sql语句的结束符:
delimiter //
g) 例子:获取5条文章记录
create procedure getNews()
begin
select * from news limit 5;
end
h) 例子:获取n条文章记录
create procedure getNewsN(in n int(5))
begin
select * from newslimit n;
end
i) 例子:获取某栏目下文章的条数。
create procedure getNewsByType(in fidint,out num int)
begin
select count(*) into num from news where fcid=fid;
end
j) 声明变量:
declare变量名 类型(长度) default默认值;
k) 给变量赋值:
set 变量名=值;
以上就是简单的一个造测试数据的存储过程方法,其实造测试数据的方法挺多的,比如使用excel的增量+ultraedit的列编辑造数据,使用Jmeter的random函数造数据等等,抛砖引玉,以期大家学会更多的方法。