日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MYSQL用存储过程创建百万级测试数据表

發布時間:2024/9/27 数据库 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MYSQL用存储过程创建百万级测试数据表 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.創建隨機字符串函數,便于創建名稱

-- delimiter $$ -- 執行出現“This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled -- (you *might* want to use the less safe log_bin_trust_function_creators variable)” 錯誤時需要先設置log_bin_trust_function_creators -- set global log_bin_trust_function_creators=1;DROP function if EXISTS rand_string; #創建一個指定字符個數的函數 create function rand_string(n INT) #返回字符串,注意:此處關鍵字是returns 而不是return returns varchar(255) BEGIN#定義一個臨時變量,給變量賦值'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'DECLARE chars_str varchar(100) DEFAULT 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';# 定義返回結果字符串DECLARE return_str varchar(255) DEFAULT '';DECLARE i int DEFAULT 0;WHILE i < n DOset return_str = CONCAT(return_str,SUBSTRING(chars_str,FLOOR(1+RAND()*52),1));set i=i+1;END while;RETURN return_str; END

2.創建隨機編號生成函數

drop function if exists rand_num; CREATE function rand_num() returns int(5) BEGINDECLARE i int default 0;set i = FLOOR(10+RAND()*500);return i; END

3.創建數據表 – 部門表 dept

drop table if EXISTS dept; create table dept (deptno MEDIUMINT UNSIGNED not null DEFAULT 0,dname varchar(20) default '',ioc varchar(13) default'' ) ENGINE = myisam default CHARSET ='utf8'; ALTER table dept add PRIMARY key(deptno);

4.創建數據表 – 員工表 emp

drop table if EXISTS emp; CREATE TABLE `emp` (`empno` mediumint(8) unsigned NOT NULL DEFAULT '0',`ename` varchar(20) NOT NULL DEFAULT '',`job` varchar(9) NOT NULL DEFAULT '',`mgr` mediumint(8) unsigned NOT NULL DEFAULT '0' COMMENT '上級編號',`hiredate` date NOT NULL COMMENT '入職日期',`salary` decimal(7,2) NOT NULL COMMENT '薪水',`comm` decimal(7,2) NOT NULL COMMENT '紅利',`deptno` mediumint(8) unsigned NOT NULL DEFAULT '0' COMMENT '部門編號' ) ENGINE=MYISAM DEFAULT CHARSET=utf8;

5.插入測試數據

drop PROCEDURE IF EXISTS insert_emp ;CREATE PROCEDURE insert_emp (in start_no int(10),in max_num int(10))BEGINDECLARE i int default 0;# 設置自動提交為falseset autocommit =0;# 開啟循環REPEATset i = i+1;insert into emp values((start_no+i),rand_string(6),'SALESMAN',0001,CURDATE(),rand_num(),400,0002);UNTIL i=max_numEND REPEAT; END

6.調用存儲過程,生成百萬數據

call insert_emp(10000,10000000);

總結

以上是生活随笔為你收集整理的MYSQL用存储过程创建百万级测试数据表的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。