用AI创建sol存储过程

#4步骤操作

#1、创建DDL问题:请帮我创建一个student要求有id,createDate,userNameage.sex.introduce.要返回给我DDL语句。

CREATE TABLE student (
    id INT PRIMARY KEY AUTO_INCREMENT, -- 假设id是主键且自增
    createDate DATE NOT NULL, -- 创建日期
    userName VARCHAR(255) NOT NULL, -- 用户名
    age INT, -- 年龄
    sex ENUM('M', 'F', 'O') NOT NULL, -- 性别,假设M代表男,F代表女,O代表其他
    phone VARCHAR(15), -- 电话号码
    introduce TEXT -- 介绍
);

#2、插入20万条DML问题:根据DDL帮我生成一个可以添加20万条数据的存储过程。

插入函数

DELIMITER //

CREATE PROCEDURE InsertRandomStudents()
BEGIN
    DECLARE v_counter INT DEFAULT 0;
    
    WHILE v_counter < 200000 DO
        INSERT INTO student (createDate, userName, age, sex, phone, introduce)
        VALUES (
            NOW(), -- 使用当前日期和时间作为创建日期
            CONCAT('User', LPAD(FLOOR(RAND() * 1000000), 6, '0')), -- 随机用户名
            FLOOR(RAND() * 100), -- 随机年龄(0到99岁)
            ELT(1 + FLOOR(RAND() * 3), 'M', 'F', 'O'), -- 随机性别
            CONCAT('+', LPAD(FLOOR(RAND() * 9000000000), 10, '0')), -- 随机电话号码
            CONCAT('Introduction for ', CONCAT('User', LPAD(FLOOR(RAND() * 1000000), 6, '0'))) -- 随机介绍
        );
        
        SET v_counter = v_counter + 1;
    END WHILE;
    
    -- 可选:插入完成后输出一条消息
    SELECT 'Insertion of 200000 students completed.';
END //

DELIMITER ;

执行函数 

CALL InsertRandomStudents(200000);

#3、if判断如何使用问题:根据DOL生成一个添加数据的存储过程,要求输入2个参数userlame与introduce,判断不允许传入空值,其他数据随机写入,以及nserllame不允周吴郑王开头的名称。

插入函数

DELIMITER //

CREATE PROCEDURE InsertStudentData(
    IN p_userName VARCHAR(255),
    IN p_introduce TEXT
)
BEGIN
    -- 检查userName和introduce是否为空
    IF p_userName IS NULL OR p_introduce IS NULL THEN
        SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'userName and introduce cannot be NULL';
    END IF;
    
    -- 检查userName是否以周、吴、郑、王开头
    IF LEFT(p_userName, 1) = '周' OR LEFT(p_userName, 1) = '吴' OR LEFT(p_userName, 1) = '郑' OR LEFT(p_userName, 1) = '王' THEN
        SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'userName cannot start with 周, 吴, 郑, or 王';
    END IF;

    -- 插入数据,其他字段随机生成
    INSERT INTO student (createDate, userName, age, sex, phone, introduce)
    VALUES (
        NOW(),                                -- 当前日期时间
        p_userName,                           -- 传入的用户名
        FLOOR(RAND() * 100),                  -- 随机年龄
        ELT(1 + FLOOR(RAND() * 3), 'M', 'F', 'O'),  -- 随机性别
        CONCAT('+', LPAD(FLOOR(RAND() * 9000000000), 10, '0')),  -- 随机电话号码
        p_introduce                           -- 传入的介绍
    );
    
    -- 可选:插入后返回消息
    SELECT 'Student data inserted successfully.';
END //

DELIMITER ;

执行函数

CALL InsertStudentData('ExampleName', 'This is an introduction.');

名字自己取,介绍自己弄。

#4、case语句如何使用问题:帮我生成一条通过case语句查询的sql,要求如姑娘,如果性别是N给出大老爷们,如果性别是0输出鸡哥,

SELECT 
    id,
    createDate,
    userName,
    age,
    CASE 
        WHEN sex = 'M' THEN '大老爷们' -- 假设'M'代表您提到的'N'
        WHEN sex = 'F' THEN '姑娘'
        WHEN sex = 'O' THEN '鸡哥' -- 假设'O'代表您提到的'0'
        ELSE '未知性别' -- 这是一个额外的条件,以防性别字段包含其他未定义的值
    END AS custom_sex, -- 自定义的性别描述列名
    phone,
    introduce
FROM 
    student;

 

  • 27
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值