mysql模拟插入多条测试数据

1、建表

CREATE TABLE user
(
    user_id varchar(36),
    name varchar(64),
    email varchar(64), 
    password varchar(64),
    address varchar(255),
    mobile varchar(255),
    PRIMARY KEY(user_id)
)ENGINE=InnoDB;

2、分别构建一个rand_string函数和rand_mobile_or_email函数

set global log_bin_trust_function_creators = 1;

DROP FUNCTION IF EXISTS rand_string;
DELIMITER $$
CREATE FUNCTION rand_string(n INT)
RETURNS VARCHAR(255)
BEGIN
    DECLARE chars_str varchar(100) DEFAULT 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
    DECLARE return_str varchar(255) DEFAULT '';
    DECLARE i INT DEFAULT 0;
    WHILE i < n DO
        SET return_str = concat(return_str,substring(chars_str , FLOOR(1 + RAND()*62 ),1));
        SET i = i +1;
    END WHILE;
    RETURN return_str;
END $$
DELIMITER ;
set global log_bin_trust_function_creators = 1;

DROP FUNCTION IF EXISTS rand_mobile_or_email;
DELIMITER $$
CREATE FUNCTION rand_mobile_or_email(n INT)
RETURNS VARCHAR(255)
BEGIN
    DECLARE return_str varchar(255) DEFAULT '';
	CASE n
		WHEN 1 THEN
			SET return_str = CONCAT(1881135,FLOOR(RAND()*10),FLOOR(RAND()*10),FLOOR(RAND()*10),FLOOR(RAND()*10));
	    ELSE
			SET return_str = CONCAT(CONCAT(1881135,FLOOR(RAND()*10),FLOOR(RAND()*10),FLOOR(RAND()*10),FLOOR(RAND()*10)),'@163.com');
	END CASE;
    RETURN return_str;
END $$
DELIMITER ;

3、创建存储过程

DELIMITER $$

     DROP PROCEDURE IF EXISTS `insert_user`$$

     CREATE DEFINER=`root`@`localhost` PROCEDURE `insert_user`(IN item INTEGER)
     BEGIN
     DECLARE counter INT;
     SET counter = item;
     WHILE counter >= 1 DO
     insert into user (user_id,name,email,password,address,mobile)
         values(uuid(),rand_string(8),rand_mobile_or_email(2), rand_string(8),rand_string(8),rand_mobile_or_email(1));
     SET counter = counter - 1;
     END WHILE;
     END$$
DELIMITER ;

4、调用

call insert_user(100);
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值