生成一个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;
还没有评论,来说两句吧...