場景:測試工程師在開展壓力測試或性能測試的時候,可能需要用到大量的數據用於測試。
數據庫: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 即可。
最終的數據如下,還算是比較真實的數據。
至此,構造百萬級數據就大功告成啦。