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 即可。

 最终的数据如下,还算是比较真实的数据。

 

至此,构造百万级数据就大功告成啦。

posted @ 2019-06-11 15:47  Dahlia  阅读(6547)  评论(3编辑  收藏  举报