采用前面实验所创建的数据库S_C及其上所建立的STUDENT、COURSE和SC表和数据(必要时可补充数据),根据如下要求,编写程序并运行和查看结果。 1、创建并运行一个存储过程,要求实现如下功能:输入学生学号,根据该学生所选课程的平均成绩显示提示信息,即如果平均成绩在 60 分以上,显示“成绩合格,成绩为 xx 分”,否则显示“成绩不合格,成绩为 xx 分” 。
时间: 2023-06-14 21:06:51 浏览: 221
以下是实现上述要求的存储过程的代码:
```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表,结构如实验一中表2、表3、表4(即创建出空表)所示
在SQL中创建表需要使用CREATE TABLE语句。这里我会分别为你创建`Student_info`数据库下的`Student`、`Course`和`SC`表,假设我们已经在`Student_info`库中:
```sql
-- 创建Student表
CREATE TABLE Student (
ID INT PRIMARY KEY,
Name VARCHAR(50),
Age INT,
Major VARCHAR(50)
);
-- 创建Course表
CREATE TABLE Course (
ID INT PRIMARY KEY,
CourseName VARCHAR(50),
Teacher VARCHAR(50)
);
-- 创建SC表 (student_course) 用于存储学生选课信息,外键关联学生ID和课程ID
CREATE TABLE SC (
StudentID INT,
CourseID INT,
Grade INT,
FOREIGN KEY (StudentID) REFERENCES Student(ID),
FOREIGN KEY (CourseID) REFERENCES Course(ID)
);
```
以上语句会为每个表创建基本的结构,但实际数据将为空,因为没有插入任何记录。
阅读全文