生成一个student表,要有id,createDate,userName,phone,age,sex,introduce,数据要求插入7条中文的数据,给出DDL与DML
DDL数据定义语言
CREATE TABLE student (
id INT PRIMARY KEY AUTO_INCREMENT, -- 假设id是自增的主键
createDate DATE,
userName VARCHAR(100),
phone VARCHAR(20),
age INT,
sex CHAR(1), -- 假设使用'M'代表男性,'F'代表女性
introduce TEXT
);
DML数据操纵语言
INSERT INTO student (createDate, userName, phone, age, sex, introduce) VALUES
('2023-05-01', '张三', '13800138000', 20, 'M', '我是张三,喜欢读书。'),
('2023-05-02', '李四', '13800138001', 21, 'M', '我是李四,喜欢运动。'),
('2023-05-03', '王五', '13800138002', 22, 'F', '我是王五,喜欢音乐。'),
('2023-05-04', '赵六', '13800138003', 23, 'M', '我是赵六,喜欢旅行。'),
('2023-05-05', '孙七', '13800138004', 24, 'F', '我是孙七,喜欢画画。'),
('2023-05-06', '周八', '13800138005', 25, 'M', '我是周八,喜欢摄影。'),
('2023-05-07', '吴九', '13800138006', 26, 'F', '我是吴九,喜欢跳舞。');
任务1:插入20万条数据
DELIMITER //
CREATE PROCEDURE InsertStudents(IN num_students INT)
BEGIN
DECLARE counter INT DEFAULT 0;
DECLARE random_user_name VARCHAR(100);
DECLARE random_phone VARCHAR(20);
DECLARE random_age INT;
DECLARE random_sex CHAR(1);
DECLARE random_introduce TEXT;
-- 设置随机种子,以便每次产生的随机数不同
SET @@session.random_seed = UNIX_TIMESTAMP(NOW());
WHILE counter < num_students DO
-- 生成随机用户名(示例:使用现有的名字库或者随机字符串)
SET random_user_name = CONCAT('User', FLOOR(RAND() * 1000000));
-- 生成随机手机号
SET random_phone = CONCAT(
'1', -- 中国手机号以1开头
FLOOR(RAND() * (9999999999 - 1000000000 + 1)) + 1000000000 -- 生成10位数字
);
-- 生成随机年龄(例如:18到30岁)
SET random_age = FLOOR(RAND() * (30 - 18 + 1)) + 18;
-- 随机性别(M或F)
SET random_sex = IF(RAND() > 0.5, 'M', 'F');
-- 生成随机介绍(或者可以使用预定义的文本数组)
SET random_introduce = CONCAT('This is ', random_user_name, '\'s introduction.');
-- 插入数据
INSERT INTO student (createDate, userName, phone, age, sex, introduce)
VALUES (
CURDATE(), -- 使用当前日期
random_user_name,
random_phone,
random_age,
random_sex,
random_introduce
);
-- 更新计数器
SET counter = counter + 1;
END WHILE;
END //
DELIMITER ;
CALL InsertStudents(200000);