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 |
    
  • 相关阅读:
    PHP 使用 GET 传递数组变量
    Java实现 蓝桥杯 算法训练 数据交换
    Java实现 蓝桥杯 算法训练 数据交换
    Java实现 蓝桥杯 算法训练 数据交换
    Java实现 蓝桥杯 算法训练 景点游览
    Java实现 蓝桥杯 算法训练 景点游览
    Java实现 蓝桥杯 算法训练 景点游览
    Java实现 蓝桥杯 算法训练 二进制数数
    Java实现 蓝桥杯 算法训练 二进制数数
    Java实现 蓝桥杯 算法训练 二进制数数
  • 原文地址:https://www.cnblogs.com/liych/p/13967236.html
Copyright © 2011-2022 走看看