面試題:使用存儲過程造10w條測試數據,數據庫插入10w條不同數據


前言

面試題:如何造10w條測試數據,如何在數據庫插入10w條數據,數據不重復?
想面試高級測試、高級自動化測試、測試開發崗位,面試時候考察 SQL 就不是簡單的增刪改查的,必然會問到存儲過程。
一問到存儲過程基本上是送命題了,本篇講解下如何使用存儲過程在 mysql 數據庫快速造大量測試數據。

存儲過程基本語法

MySQL 5.0 版本開始支持存儲過程。存儲過程(Stored Procedure)是一種在數據庫中存儲復雜程序,以便外部程序調用的一種數據庫對象。

存儲過程是為了完成特定功能的SQL語句集,經編譯創建並保存在數據庫中,用戶可通過指定存儲過程的名字並給定參數(需要時)來調用執行。
存儲過程思想上很簡單,就是數據庫 SQL 語言層面的代碼封裝與重用。

創建存儲過程語法

create procedure 存儲過程名(參數)

存儲過程開始和結束符號:

begin 
.... 


end   

定義變量,如定義一個int類型變量,variable是變量的名稱,自己定義

declare variable int 

其它數據類型,如

DECLARE a_int int unsigned default 10086;  
DECLARE a_numeric number(8,2) DEFAULT 1.23;  
DECLARE a_date date DEFAULT '2020-06-15';  
DECLARE a_datetime datetime DEFAULT '2020-06-15 23:59:59';  
DECLARE a_varchar varchar(255) DEFAULT 'This will not be padded';

變量賦值,變量定義后給變量一個初始值,如設置 variable = 1

SET 變量名 = 表達式值 [,variable_name = expression ...]

**循環, 批量插入數據需用到循環:while ···· end while **

while 條件 do
    --循環體
endwhile

執行存儲過程

call 存儲過程名(參數);

使用存儲過程造數據

我們需要插入的sql,如果id的是是變化的,那么把id設置一個變量

INSERT INTO `apps`.`apiapp_card` (`id`, `card_id`, `card_user`, `add_time`) VALUES ('1', '', 'test123', '2019-12-17');

存儲過程代碼如下

-- 上海-悠悠
DROP PROCEDURE IF EXISTS create_user_tel;
create procedure create_user_tel() 
begin 
    declare id int; 
    set id=100000;
    while id <=199999
      do 
        INSERT INTO `apps`.`apiapp_card` VALUES(id, '', 'test123', '2019-12-17');
        set id=id+1;
    end while;
end;

-- 執行存儲過程
call create_user_tel();

使用call 執行存儲過程名稱

如果執行存儲過程提示:PROCEDURE create_user_tel already exists
解決辦法先刪除名稱,在第一行加一句: DROP PROCEDURE IF EXISTS create_user_tel;

全部數據執行完成,大概需要十分鍾,查詢結果

SELECT COUNT(*) from apiapp_card


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM