#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万条数据的存储过程。
![](https://img-blog.csdnimg.cn/direct/3e16f382185741d98078a25de1b83f09.png)
插入函数
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不允周吴郑王开头的名称。
![](https://img-blog.csdnimg.cn/direct/faafc1803ddd46f7b5550ab0e0a21948.png)
插入函数
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;