MySQL快速构造百万数据
场景:测试工程师在开展压力测试或性能测试的时候,可能需要用到大量的数据用于测试。
数据库:MySQL
工具:Navicat
启动本地MySQL数据库(管理员进入cmd命令行,输入命令: net start mysql),Navicat连接本地MySQL数据库。
一、创建数据表
在某个数据库里创建用于测试的数据表student,并设置主键id自增:
create table student( id int(4) primary key not null auto_increment, sname varchar(32) not null, phone varchar(32) not null, score int(3) not null );
执行以上sql语句,创建数据表,刷新可以查看新建的数据表:
二、插入数据
MySQL插入数据的基本语法为:
INSERT INTO <表名> (字段1, 字段2, ...) VALUES (值1, 值2, ...);
往student表中插入两条数据:
INSERT INTO student (name, phone, score) VALUES ('test_1', '13000000000', 87),('test_2', '13000000001', 81);
刷新后,发现表中会添加对应的记录:
这里要说的使用 查询插入语句,语法如下:
INSERT INTO <表名> (字段1, 字段2, ...) VALUES (值1, 值2, ...) SELECT 字段1, 字段2, ... FROM <表名>
查询插入语句的作用是先查询,再把查询的结果插入。先试一下效果,执行如下命令:
INSERT INTO student (sname, phone, score) SELECT sname,phone,score FROM student
执行完刷新student表,会发现记录由原来的两条变成四条:
实际上,执行查询插入语句后,数据记录条数会呈指数增长。那么多执行几次查询插入语句,就会得到想要的百万数据了。这里我只插入到10w级的记录:
可以看到,已经有26w+记录了,暂时满足大数据量的需求了。
三、更新数据
数据量是满足了,但是数据真实性还有待提高。实际不会所有人的姓名、手机号、成绩都是一样的,因此需要对姓名、手机号、成绩字段记录进行修改。
修改数据基本语法如下:
UPDATE <表名> SET 字段1=值1, 字段2=值2;
1、修改姓名:
这里我们可以把姓名设置为 test_id 的格式,保证数据唯一性。test_id 的格式可以利用MySQL里的函 CONCAT 进行字符串拼接:
UPDATE student SET sname = CONCAT('test_',id)
执行完上述修改语句后,查询结果中,sname字段已经变成 test_id 格式了。
2、修改手机号:
手机号可以从13000000000开始,依次递增,比如设为13000000000+id:
UPDATE student SET phone = 13000000000+id
执行完上述语句,手机号就变成递增了,且保持唯一性。
3、修改成绩:
成绩的话,可以设为 0-100 之间的随机数,利用 MySQL 里的 RAND 函数生成随机数:
UPDATE student SET score = RAND()*100
注意:RAND()函数生成的是0-1的随机数,作为成绩,*100 即可。
最终的数据如下,还算是比较真实的数据。
至此,构造百万级数据就大功告成啦。