在某个数据库里创建用于测试的数据表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
);
往student表中插入两条数据:
INSERT INTO student (sname, 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表,会发现记录由原来的两条变成四条,也就是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 即可。
至此,构造百万级数据就大功告成啦。