采用前面实验所创建的数据库S_C及其上所建立的STUDENT、COURSE和SC表和数据(必要时可补充数据),根据如下要求,编写程序并运行和查看结果。 1、创建并运行一个存储过程,要求实现如下功能:输入学生学号,根据该学生所选课程的平均成绩显示提示信息,即如果平均成绩在 60 分以上,显示“成绩合格,成绩为 xx 分”,否则显示“成绩不合格,成绩为 xx 分” 。
时间: 2023-06-14 12:06:51 浏览: 72
以下是实现上述要求的存储过程的代码:
```sql
CREATE PROCEDURE sp_showAvgScore @student_id INT
AS
BEGIN
DECLARE @avg_score FLOAT
SELECT @avg_score = AVG(score)
FROM SC
WHERE student_id = @student_id
GROUP BY student_id
IF @avg_score >= 60
PRINT '成绩合格,成绩为 ' + CONVERT(VARCHAR(10), @avg_score) + ' 分'
ELSE
PRINT '成绩不合格,成绩为 ' + CONVERT(VARCHAR(10), @avg_score) + ' 分'
END
```
该存储过程的输入参数为学生学号,它会根据该学生所选课程的平均成绩显示提示信息。首先,它会计算该学生的平均成绩,然后根据平均成绩判断是否合格并输出对应的提示信息。
运行该存储过程的方法如下:
```sql
EXEC sp_showAvgScore 1
```
其中,1 是学生的学号,可以根据需要修改。运行结果会根据该学生所选课程的平均成绩输出对应的提示信息。
相关问题
mysql采用前面实验所创建的数据库S_C及其上所建立的STUDENT、COURSE和SC表和数据(必要时可补充数据),根据如下要求,编写程序并运行和查看结果。1、创建并运行一个存储过程,要求实现如下功能:输入学生学号,根据该学生所选课程的平均成绩显示提示信息,即如果平均成绩在 60 分以上,显示"成绩合格,成绩为 xx 分",否则显示"成绩不合格,成绩为 xx 分" 。给我两种方法
方法一:使用存储过程实现
首先,我们需要创建一个存储过程,输入学生学号,计算该学生所选课程的平均成绩,并根据平均成绩显示提示信息。
下面是实现该功能的存储过程代码:
```mysql
DELIMITER $$
CREATE PROCEDURE `get_student_avg_score`(IN `stu_id` INT)
BEGIN
DECLARE avg_score FLOAT;
SELECT AVG(score) INTO avg_score FROM SC WHERE Sno = stu_id;
IF avg_score >= 60 THEN
SELECT CONCAT('成绩合格,成绩为 ', FORMAT(avg_score, 2), ' 分') AS result;
ELSE
SELECT CONCAT('成绩不合格,成绩为 ', FORMAT(avg_score, 2), ' 分') AS result;
END IF;
END$$
DELIMITER ;
```
然后,我们可以调用该存储过程并输入学生学号来测试该功能。例如,输入学号为 1001 的学生的平均成绩:
```mysql
CALL get_student_avg_score(1001);
```
方法二:使用函数实现
除了使用存储过程,我们还可以使用函数来实现同样的功能。下面是实现该功能的函数代码:
```mysql
DELIMITER $$
CREATE FUNCTION `get_student_avg_score_func`(stu_id INT) RETURNS VARCHAR(100)
BEGIN
DECLARE avg_score FLOAT;
SELECT AVG(score) INTO avg_score FROM SC WHERE Sno = stu_id;
IF avg_score >= 60 THEN
RETURN CONCAT('成绩合格,成绩为 ', FORMAT(avg_score, 2), ' 分');
ELSE
RETURN CONCAT('成绩不合格,成绩为 ', FORMAT(avg_score, 2), ' 分');
END IF;
END$$
DELIMITER ;
```
调用该函数的方法与调用存储过程类似,例如,输入学号为 1001 的学生的平均成绩:
```mysql
SELECT get_student_avg_score_func(1001);
```
用SQL语句在数据库Student_info中删除实验一创建的Student表、Course表、SC表。
可以使用以下SQL语句在数据库Student_info中删除实验一创建的Student表、Course表、SC表:
```
DROP TABLE IF EXISTS Student;
DROP TABLE IF EXISTS Course;
DROP TABLE IF EXISTS SC;
```
这三个语句分别对应删除Student、Course、SC三个表,如果这些表不存在,则不会报错。注意,执行这些语句会永久删除这些表及其数据,所以请谨慎操作。