sql DELIMITER // CREATE PROCEDURE generate_random_data(IN num_records INT) BEGIN DECLARE i INT DEFAULT 1; -- 插入年级 WHILE i <= num_records DO INSERT INTO 年级表 (年级名称) VALUES (CONCAT('年级', i)); SET i = i + 1; END WHILE; -- 插入班级 SET i = 1; WHILE i <= num_records DO INSERT INTO 班级表 (班级名称, 年级ID) VALUES (CONCAT('班级', i), i); SET i = i + 1; END WHILE; -- 插入老师 SET i = 1; WHILE i <= num_records DO INSERT INTO 老师表 (姓名, 等级) VALUES (CONCAT('教师', i), FLOOR(RAND() * 3) + 1); SET i = i + 1; END WHILE; -- 插入学生 SET i = 1; WHILE i <= num_records DO INSERT INTO 学生表 (姓名, 班级ID) VALUES (CONCAT('学生', i), i); SET i = i + 1; END WHILE; -- 插入成绩 SET i = 1; WHILE i <= num_records DO INSERT INTO 成绩表 (学生ID, 科目, 成绩) VALUES (i, CONCAT('科目', i), FLOOR(RAND() * 100) + 1); SET i = i + 1; END WHILE; END //每一句代码的意思
时间: 2024-04-13 10:28:06 浏览: 70
MySql.rar_MYSQL_mysql example sql_mysql 存储过程_存储过程
这段SQL代码创建了一个存储过程(PROCEDURE),用于生成随机的年级、班级、老师、学生和成绩数据。下面逐行解释每一句代码的意思:
1. `DELIMITER //`:设置分隔符为`//`,以便在存储过程中使用多个语句。
2. `CREATE PROCEDURE generate_random_data(IN num_records INT)`:创建一个名为`generate_random_data`的存储过程,它接受一个输入参数`num_records`,表示要生成的记录数。
3. `BEGIN`:开始存储过程的主体部分。
4. `DECLARE i INT DEFAULT 1;`:声明一个整数变量`i`,并将其初始化为1。
5. `WHILE i <= num_records DO`:开始一个循环,当`i`小于等于`num_records`时执行循环内的语句。
6. `INSERT INTO 年级表 (年级名称) VALUES (CONCAT('年级', i));`:向年级表中插入一条记录,年级名称为以数字`i`为后缀的字符串。
7. `SET i = i + 1;`:将变量`i`的值增加1,以便进行下一次循环。
8. `END WHILE;`:结束循环。
9. 重复步骤5至8的内容,分别插入班级、老师、学生和成绩表中的数据,并根据循环次数生成对应的名称和随机值。
10. `END //`:结束存储过程的主体部分,并将分隔符改回默认的分号。
这段代码的作用是生成指定数量的年级、班级、老师、学生和成绩数据,并将其插入到对应的表中。你可以根据需要修改表名和字段名来适应你的实际情况。
阅读全文