生成一个student表,要求有id,createDate,userName,phone,age,sex,introduce。只需要返回DDL
CREATE TABLE student (
id INT PRIMARY KEY AUTO_INCREMENT, -- 假设ID为主键且自动增长
createDate DATE NOT NULL, -- 创建日期,不能为空
userName VARCHAR(255) NOT NULL, -- 用户名,不能为空,长度可根据需要调整
phone VARCHAR(20), -- 电话号码,长度可根据实际情况调整
age INT, -- 年龄
sex ENUM('M', 'F', 'O'), -- 性别,M代表男,F代表女,O代表其它
introduce TEXT -- 介绍,使用TEXT类型可以存储较多文字
);
根据DDL生成一个添加20万条随机数据的存储过程,要求尽可能的使用中文来添加信息
DELIMITER //
CREATE PROCEDURE InsertRandomStudents(num_students INT)
BEGIN
DECLARE i INT DEFAULT 0;
DECLARE random_date DATE;
DECLARE random_username VARCHAR(255);
DECLARE random_phone VARCHAR(20);
DECLARE random_age INT;
DECLARE random_sex ENUM('M', 'F', 'O');
DECLARE random_introduce TEXT;
WHILE i < num_students DO
-- 生成随机日期(过去10年内)
SET random_date = DATE_SUB(CURDATE(), INTERVAL FLOOR(RAND() * 3650) DAY);
-- 生成随机用户名(简化版,可根据需要扩展)
SET random_username = CONCAT('User', FLOOR(RAND() * 1000000));
-- 生成随机电话号码(简化版,可根据实际格式调整)
SET random_phone = CONCAT(FLOOR(RAND() * 10000000000), '-', FLOOR(RAND() * 10000));
-- 生成随机年龄(18到30岁之间)
SET random_age = FLOOR(18 + RAND() * 13);
-- 生成随机性别
SET random_sex = ELT(1 + FLOOR(RAND() * 3), 'M', 'F', 'O');
-- 生成随机介绍(简化版,可替换为更复杂的文本生成逻辑)
SET random_introduce = CONCAT('This is a random introduction for ', random_username);
-- 插入随机生成的数据
INSERT INTO student (createDate, userName, phone, age, sex, introduce)
VALUES (random_date, random_username, random_phone, random_age, random_sex, random_introduce);
-- 更新计数器
SET i = i + 1;
END WHILE;
END //
DELIMITER ;
CALL InsertRandomStudents(200000);
SELECT count(*) from student; #查询数据有多少条
根据表结构查看前2000条数据的性别,如果是M则显示男性,F则显示女性,O则显示人妖,使用case,when语句完成SQL
SELECT
id,
userName,
sex,
CASE
WHEN sex = 'M' THEN '男性'
WHEN sex = 'F' THEN '女性'
WHEN sex = 'O' THEN '人妖'
ELSE '未知' -- 可选,用于处理除'M', 'F', 'O'之外的其他意外情况
END AS sex_description
FROM
student
LIMIT
2000;