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
我去
后悔了,一千万有点太多了