生成一个student表
DDL
CREATE TABLE student (
id INT PRIMARY KEY AUTO_INCREMENT, -- 假设id是主键且自动增长
createDate DATE NOT NULL, -- 创建日期,不能为空
userName VARCHAR(100) NOT NULL, -- 用户名,不能为空,长度限制为100个字符
phone VARCHAR(20), -- 电话号码,长度限制为20个字符
age INT, -- 年龄,整数类型
sex ENUM('Male', 'Female'), -- 性别,枚举类型,只能为'Male'或'Female'
introduce TEXT -- 介绍,文本类型,可以存储大量文本
);
存储过程代码
DELIMITER //
CREATE PROCEDURE InsertRandomStudents(num_students INT)
BEGIN
-- 声明变量,用于存储随机生成的数据
DECLARE v_userName VARCHAR(100);
DECLARE v_phone VARCHAR(20);
DECLARE v_age INT;
DECLARE v_sex ENUM('Male', 'Female');
DECLARE v_introduce TEXT;
DECLARE v_createDate DATE;
DECLARE counter INT DEFAULT 0; -- 计数器,用于控制循环次数
-- 循环插入随机数据,直到达到指定的学生数量
WHILE counter < num_students DO
-- 生成随机用户名(示例:User123)
SET v_userName = CONCAT('User', FLOOR(RAND() * 1000000));
-- 生成随机电话号码(示例:13800138000)
SET v_phone = CONCAT('1', FLOOR(RAND() * 9000000000 + 1000000000));
-- 生成随机年龄(18到30岁之间)
SET v_age = FLOOR(RAND() * (30 - 18 + 1)) + 18;
-- 随机选择性别
SET v_sex = IF(RAND() > 0.5, 'Male', 'Female');
-- 生成随机介绍文本(示例:这是一个随机介绍)
SET v_introduce = CONCAT('这是一个随机介绍:', FLOOR(RAND() * 10000));
-- 生成随机创建日期(过去5年内的随机日期)
SET v_createDate = DATE_SUB(CURDATE(), INTERVAL FLOOR(RAND() * 5 * 365) DAY);
-- 插入随机生成的数据到student表中
INSERT INTO student (createDate, userName, phone, age, sex, introduce)
VALUES (v_createDate, v_userName, v_phone, v_age, v_sex, v_introduce);
-- 更新计数器
SET counter = counter + 1;
END WHILE;
END //
DELIMITER ;
调用代码
-- 调用存储过程,插入20万条随机学生数据
CALL InsertRandomStudents(200000);
查询
select count(*) from student;