存储过程创建测试数据
1、怎么创建测试数据
如果你会编程语言,那么你可以使用java、python、php等等语言通过对应的工具包操作数据库来完成测试数据的构建。
如果你不会这些语言,恰好你又会一些sql语句,使用存储过程完成测试数据构造是再好不过了。
并且存储过程就是sql脚本,存储、执行、查看结果都在一个工具类就可完成非常方便。(本例采用mysql数据库)
2、什么是存储过程
存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,它存储在数据库中,
一次编译后永久有效,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。
简单理解:完成特定功能的方法
2、表结构
首先我们先来查看下需要插入测试数据的表member,表中存放的是用户信息。
3、mysql内置函数
通过上图我们已经知道了member表结构,其中RegName用户名一般会不允许重复,我们需要使用一些随机的或者有规律的字符串。
还有手机号码和注册时间这些都不是固定值,所以需要借助mysql中的内置函数:
CONCAT(str1,str2,...png)
拼接多个字符串
select CONCAT("test",1);
结果:
test1
MD5(str)
md5加密
select md5(123456);
结果:
e10adc3949ba59abbe56e057f20f883e
RAND()
生成一个0-1之间的随机数
select RAND();
结果:
0.70196044510413
NOW()
获取当前时间
select NOW();
结果:
2019-09-23 16:15:06
4、编写存储过程
首先我们先把对member的插入语句写好,之后写存储过程就在这个基础上进行修改
insert into member values(null,'test_1',MD5(123456),18900000000,1,0,NOW());
结果:
OK,现在已经成功插入一条数据,接下来我们通过存储过程完成10000条数据的插入。
#创建一个名为 CrateTestData()的存储过程
CREATE DEFINER=`root`@`localhost` PROCEDURE `CrateTestData`()
#存储过程从BEGIN开始END结束
BEGIN
#用declare定义一个int类型的变量i初始值为1
declare i int default 1;
/* 因为我们需要造10000条数据,肯定需要循环执行插入语句,所以先给大家介绍while循环
while循环语法:
while 条件 DO
循环体;
end while;
*/
#如果 i 小于10000 那么就继续循环,否则跳出循环
while i < 10000 do
#插入语句,对用户名做了拼接,对密码进行md5加密,对手机号码、余额进行随机处理,注册日期是当前时间
insert into member values
(null,CONCAT('test_',i),MD5(123456),18900000000+i,1,RAND()*100000,NOW());
#每insert一次i就加一,不然无法跳出循环
set i = i +1;
end while;
END
最后执行存储过程
call CrateTestData();
结果如下
欢迎来到testingpai.com!
注册 关于