利用if-else,while-do,case-end的存储过程

利用if-else,while-do,case-end的存储过程

码农世界 2024-05-16 后端 69 次浏览 0个评论

生成一个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;   #查询数据有多少条

利用if-else,while-do,case-end的存储过程

根据表结构查看前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;

利用if-else,while-do,case-end的存储过程

转载请注明来自码农世界,本文标题:《利用if-else,while-do,case-end的存储过程》

百度分享代码,如果开启HTTPS请参考李洋个人博客
每一天,每一秒,你所做的决定都会改变你的人生!

发表评论

快捷回复:

评论列表 (暂无评论,69人围观)参与讨论

还没有评论,来说两句吧...

Top