首頁 > 軟體

Mysql迴圈插入資料的實現

2022-08-17 14:00:16

Mysql 迴圈插入資料

說明:首先需要設定delimiter。

delimiter的作用:告訴直譯器,這段命令是否已經結束了,mysql是否可以執行了

預設情況下,delimiter是‘;’但是當我們編寫procedure時,如果是預設設定,那麼一遇到‘;’,mysql就要執行。

WHILE…DO方式

/*迴圈插入*/
DELIMITER //
CREATE PROCEDURE callback()
BEGIN
  DECLARE num INT;
  SET num = 100;
  WHILE
    num < 300 DO
    INSERT INTO t_user(user_loginName,user_password,user_name,user_gender,user_email,user_gradeValueInt)
    VALUES(CONCAT("YuWang", num),CONCAT("pwd", num),CONCAT("YuWang", num),"男","1024@qq.com",num);
    SET num = num + 1;
  END WHILE;
END; 
//

設定好了儲存過程要執行呼叫才生效

CALL callback();

其他基本命令

檢視表

DESC USER;
SHOW FULL FIELDS FROM user;

檢視表索引

SHOW KEYS FROM USER;
SHOW index FROM USER;

清空表

DELETE FROM USER;

檢視指定庫中的PROCEDURE

SELECT NAME FROM mysql.proc WHERE db = ‘test' AND TYPE = ‘PROCEDURE';

刪除指定PROCEDURE

DROP PROCEDURE IF EXISTS callback;

檢視建立程式碼

SHOW CREATE PROCEDURE callback;

呼叫儲存過程(callback是自己命名的)

CALL callback();

刪除儲存過程(callback是自己命名的)

DROP PROCEDURE callback;

Mysql 迴圈插入10000條資料

因為專案用user和data兩張表,把user中的部分欄位拆分到data中,這樣兩表都要通過user_id關聯起來(作為兩表主鍵),當註冊新使用者時只往use表寫入了user_id,data表無法同時寫入user_id,這樣會導致使用者無法修改資料。

1.所以按自己想法,寫個迴圈1W次隨便插入資料測試

DROP PROCEDURE IF EXISTS proc_initData;--如果存在此儲存過程則刪掉
DELIMITER $
CREATE PROCEDURE proc_initData()
BEGIN
    DECLARE i INT DEFAULT 1;
    WHILE i<=10000 DO
        INSERT INTO data(user_id) VALUES(i);
        SET i = i+1;
    END WHILE;
END $
CALL proc_initData();

2.執行過程

a、第三行開始正式插入10000條資料,結果顯示耗時 32.453秒

b、第四行驗證插入是否成功,Mysql WorkBench限制只返回了1000條資料

c、第五行驗證1000條以外的資料是否插入成功,返回了1行 user_id = 5231,成功插入!

以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com