数据库存储过程

存储过程:就SQL语句集,它存储在数据库中。压力测试中,常用到数据构造。

 

 

 

需求:造10000个注册用户

不正经的解决方案:

1、手动页面注册(效率低)

2、让研发帮忙写个脚本造数据(现在忙,等会再说)

3、跟领导说我不会(容易被领导嫌弃,给领导留下不好印象)

 

正经解决方案

1、抓包找到注册接口,用自动化工具循环调注册接口(jmeter、postman等)

2、自己写代码完成(java、Python)

3、写一个存储过程(快速、方便)

 

存储过程分类

1、有返回值

2、无返回值

 

Mysql常用函数

CONCAT(str1,str2...):拼接多个字符串,如:select CONCAT(‘mtx_‘,1,‘it is good days‘);

数据库存储过程

 

 

RAND():获取一个0-1之间的小数   可以返回一个随机的小数,如:SELECT RAND();

数据库存储过程

 

 如果想要返回一个1-100之间的整数,可以用RAND()*100,如:

SELECT RAND()*100;

数据库存储过程

 

 

FLOOR(X):取整,如:SELECT FLOOR(3.14),就会取整3,直接去了小数点后的数

SELECT FLOOR(3.14);

数据库存储过程

 

 

NOW():当前时间,格式yyyy-MM-dd HH:mm:SS

如:SELECT now();

数据库存储过程

 

 

存储过程的逻辑判断

 

while循环

while 条件 do

语句;

end while;

if判断

if 条件 then

语句;

else;

语句;

end if;

 

比如现在要在user表里插入一条用户数据,非常的容易,要是手动生成100、1000的用户数据,总不能每条数据都一样,没有实际意义,下面可以用到存储过程

创建表:

CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_name` varchar(50) DEFAULT NULL,
`password` varchar(200) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
`gender` int(2) DEFAULT NULL,
`phone_num` varchar(11) DEFAULT NULL,
`email` varchar(100) DEFAULT NULL,
`create_time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1001 DEFAULT CHARSET=utf8

数据库存储过程

 

 插入一条用户数据:

insert into user (user_name,password,age,gender,phone_num,email,create_time)
values(‘test1109‘,1234,18,1,13710065433,‘test@qq.com‘,NOW());

数据库存储过程

 

 

数据库存储过程

 

 存储过程语句是在函数里写的

数据库存储过程

 

 编写存储过程语句如下:

BEGIN
DECLARE i int DEFAULT 1;#定义i
DECLARE gender int;#定义gender的类型
while i<1000
DO
if i%2 THEN
set gender=0;
ELSE
set gender=1;
END if;
insert into user (user_name,password,age,gender,phone_num,email,create_time)values(CONCAT(‘test‘,i),‘123456‘,FLOOR(RAND()*100),gender,13710065433+i,CONCAT(‘test‘,i,‘@qq.com‘),NOW());
SET i=i+1;
END while ;

END;

执行完成花了2秒

数据库存储过程

 

 

数据库存储过程

 

数据库存储过程

上一篇:Git提交时出现Merge branch 之解决方法


下一篇:leetcode-dfs-47. 全排列 II