欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

mysql循环插入数据、生成随机数及CONCAT函数

程序员文章站 2022-04-23 19:39:49
实现目标:一年12个月,每个月插入一条数据,score为1 5的随机数 循环语句: WHILE …… DO …… END WHILE 循环语句: LOOP……END LOOP DELIMITER ; CREATE PROCEDURE test_insert() BEGIN DECLARE y TIN ......

实现目标:一年12个月,每个月插入一条数据,score为1-5的随机数

循环语句: WHILE …… DO …… END WHILE

DELIMITER ;
CREATE PROCEDURE test_insert() 
BEGIN 
DECLARE y TINYINT DEFAULT 1;
WHILE y<13
DO

INSERT INTO app_sign(`user_id`, `score`, `createdate`) 
VALUES ('1', FLOOR( 1 + RAND() * 5), CONCAT('2018-',CAST(y AS CHAR),'-07') );

SET y=y+1; 
END WHILE ; 
COMMIT; 
END;
CALL test_insert();
DROP PROCEDURE IF EXISTS test_insert;

循环语句: REPEAT …… UNTIL …… END REPEAT

DELIMITER ;
CREATE PROCEDURE test_insert() 
BEGIN 
DECLARE y TINYINT DEFAULT 1;
REPEAT

INSERT INTO app_sign(`user_id`, `score`, `createdate`) 
VALUES ('1', FLOOR( 1 + RAND() * 5), CONCAT('2018-',CAST(y AS CHAR),'-07') );

SET y=y+1; 

UNTIL y >= 12
END REPEAT; 
COMMIT; 
END;
CALL test_insert();
DROP PROCEDURE IF EXISTS test_insert;

循环语句: LOOP……END LOOP

DELIMITER ;
CREATE PROCEDURE test_insert() 
BEGIN 
DECLARE y TINYINT DEFAULT 1;
lp:LOOP
    INSERT INTO app_sign(`user_id`, `score`, `createdate`) 
    VALUES ('1', FLOOR( 1 + RAND() * 5), CONCAT('2018-',CAST(y AS CHAR),'-07') );

    SET y=y+1; 

    IF y > 12 THEN
        LEAVE lp;
    END IF;
    
END LOOP; 
COMMIT; 
END;
CALL test_insert();
DROP PROCEDURE IF EXISTS test_insert;

生成随机数

生成0-5的随机数

SELECT RAND() * 5
最大不会超过5,SELECT FLOOR(RAND() * 5)生成整数的值是0,1,2,3,4。
生成的随机整数是1,2,3,4,5的话,语句如下
SELECT FLOOR(1 + RAND()*5)

CONCAT拼接字符串

CONCAT(str1,str2,…)

返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。