mysql 自定義函數,生成 n 個字符長度的隨機字符串
-- sql function
delimiter $$
create function rand_str(n int) returns VARCHAR(255)
BEGIN
declare str VARCHAR(100) DEFAULT 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSQUVWXYZ';
declare i int DEFAULT 0;
declare res_str VARCHAR(255) default '';
while i < n do
set res_str = concat(res_str,substr(str,FLOOR(rand()*52+1),1));
set i = i + 1;
end while;
return res_str;
end$$
delimiter ;
寫好之后,運行一下,運行成功后,可以在函數下看到剛剛自定義的函數
然后,調用一下
SELECT rand_str(3); -- 生成3個字符的隨機字母
寫一個存儲過程,
實現功能:insert_emp2(2,10) 從2開始,插入10條數據
delimiter $$
create procedure insert_emp2(in startNum int ,in max_num int)
BEGIN
-- 聲明一個變量記錄當前是第幾條
declare i int DEFAULT 0;
-- 默認情況下是自動提交sql
set autocommit = 0; -- 禁止自動提交sql
-- 循環
repeat
set i = i + 1;
-- 插入數據 id 增加, name 隨機,年齡隨機
insert into emp2 values (startNum + i,rand_str(5),floor(10+rand()*30));
until i = max_num
end repeat ;
commit; -- 待循環完畢后再進行提交,即整體提交整體的 sql,這樣可以提高效率,否則循環里會一次一次的去提交sql,數據多了會很慢。
end$$
delimiter$$
然后,調用 存儲過程:
call insert_emp2(100,10000000); --插入一千萬條數據進去
等幾分鍾
。。。。
好久啊
這么久來 還沒創建好
我的天吶
。。。。。
hello
我去
后悔了,一千萬有點太多了