zoukankan      html  css  js  c++  java
  • MySQL_Sql_打怪升级_进阶篇_测试: SQL随机生成测试数据

    1.随机生成测试数据

    目标:创建一张表,插入随机的行数,生成测试所需的数据。

    2.测试所需环境准备

    库名:userdatabase

    表名:test_user_table

    字段 需求
    uname 6字符随机长度
    ugender 性别 M/F (M代表男,F代表女)
    utel 随机手机号
    ubirth 随机出生日期(1980-2020)例如:1996-01-02
    uage 根据出生日期算出来
    upassword 12位随机密码(第一位是大写,剩下的是随机数字字母组合)

    3.使用方式

    例如:插入数据100行 可以执行 call myp1_where(100);
    说明:正常登录到mysql中,执行下面这段SQL语句,会生成相应的库和表还有字段名字,SQL语句可以重复执行,每次执行会清空原表内的数据,生成新的数据(默认插入100行)执行插入行数请修改括号内的数字即可。

    CREATE DATABASE IF NOT EXISTS userdatabase;
    USE userdatabase;
    CREATE TABLE test_user_table (
    id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    uname VARCHAR(64) NOT NULL ,
    ugender CHAR(1),
    utel CHAR(11) NOT NULL,
    ubirth DATETIME NOT NULL,
    uage TINYINT NOT NULL,
    upassword VARCHAR(32) NOT NULL
    )ENGINE = INNODB CHARSET utf8mb4;
    
    USE `userdatabase`;
    DROP PROCEDURE IF EXISTS `test_user_table`.`myp1_where`;
    
    TRUNCATE TABLE test_user_table;
    
    DELIMITER $$
    USE `test_user_table`$$
    CREATE  PROCEDURE `myp1_where`(IN num INT)
    BEGIN
    DECLARE str1 VARCHAR(64) DEFAULT 'abcdefghijklmnpqrstuvwxyz';
    DECLARE str2 VARCHAR(10) DEFAULT 'MF';
    DECLARE str3 VARCHAR(64) DEFAULT 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
    DECLARE v_name,v_password,v_birth VARCHAR(64);
    DECLARE v_tel CHAR(11);
    DECLARE v_age TINYINT;
    DECLARE v_gender CHAR(1);
    DECLARE i INT DEFAULT 0;
    DECLARE str,str12 VARCHAR(64);
    
    WHILE i<num DO
    SELECT SUBSTR(str1,1+FLOOR(RAND()*20),6) INTO v_name;
    
    SELECT SUBSTR(str2,1+FLOOR(RAND()*2),1) INTO v_gender;
    
    SELECT CONCAT('1',30+FLOOR(RAND()*70),LPAD(FLOOR(RAND()*100000000),8,'0')) INTO v_tel;
    
    SELECT DATE(FROM_UNIXTIME(UNIX_TIMESTAMP('1970-01-01') +FLOOR(RAND() * (UNIX_TIMESTAMP('2020-11-14') - UNIX_TIMESTAMP('1970-01-01')+ 1))))  INTO v_birth;
    
    SELECT YEAR(NOW())-YEAR(v_birth) INTO v_age;
    #select 18+floor(rand()*12) into v_age;
    
    SELECT REPLACE(UUID(),'-','') INTO str;
    SELECT SUBSTR(str,FLOOR(RAND()*21+1),12) INTO str12;
    SELECT CONCAT(SUBSTR(str3,FLOOR(RAND()*26+1),1),str12) INTO v_password;
    
    INSERT INTO test_user_table(uname,ugender,utel,ubirth,uage,upassword) VALUES(v_name,v_gender,v_tel,v_birth,v_age,v_password);
    SET i=i+1;
    
    END WHILE ;
    END$$
    
    DELIMITER ;
    
    CALL myp1_where(100);
    
    SELECT * FROM test_user_table;
    

    数据如下:

    mysql> SELECT * FROM test_user_table;
    +-----+--------+---------+-------------+---------------------+------+---------------+
    | id  | uname  | ugender | utel        | ubirth              | uage | upassword     |
    +-----+--------+---------+-------------+---------------------+------+---------------+
    |   1 | fghijk | M       | 16082530768 | 2011-04-23 00:00:00 |    9 | M11eb96e2000c |
    |   2 | npqrst | F       | 16898658064 | 1985-02-06 00:00:00 |   35 | T211eb96e2000 |
    |   3 | bcdefg | M       | 19063733992 | 2000-10-04 00:00:00 |   20 | Tb81ccc25d211 |
    |   4 | hijklm | F       | 14291565933 | 1971-10-23 00:00:00 |   49 | B5d211eb96e20 |
    |   5 | tuvwxy | F       | 19821642349 | 1977-05-17 00:00:00 |   43 | Y0b8e19725d21 |
    |   6 | jklmnp | F       | 16789746817 | 2014-04-22 00:00:00 |    6 | S1eb96e2000c2 |
    |   7 | klmnpq | M       | 17705101254 | 1981-12-02 00:00:00 |   39 | K60b99c8a25d2 |
    
  • 相关阅读:
    jQuery基础一
    JavaScript基础三
    JavaScript基础二
    JavaScript基础一
    POJ
    UVA
    HDU
    Gym
    POJ
    HDU
  • 原文地址:https://www.cnblogs.com/liych/p/13967236.html
Copyright © 2011-2022 走看看