创建名为proc_grade的存储过程,要求查询db_student 数据库中每个学生各门功课绩,其中包括每个学生的sno、 sname、 cname、 grade。并调用改proc_ grade存储过程
时间: 2023-12-14 10:38:59 浏览: 160
下面是创建名为proc_grade的存储过程的 SQL 代码:
```
CREATE PROCEDURE proc_grade
AS
BEGIN
SELECT s.sno, s.sname, c.cname, sc.grade
FROM db_student.dbo.student s
INNER JOIN db_student.dbo.score sc ON s.sno = sc.sno
INNER JOIN db_student.dbo.course c ON c.cno = sc.cno
END
```
要调用这个存储过程,只需要使用以下 SQL 代码:
```
EXEC proc_grade
```
这将会返回每个学生各门功课绩的查询结果。
相关问题
已知教学数据库中包含四个基本表: 实体完整性和参照完整性教师情况表T (Tno,TName,TDept) ;课程基本表C (Cno,Cname,cpno,Tno)学生情况表S (Sno,Sname,Sage,Sex,sdept)学生成绩基本表SC (Sno,Cno,Grade) ;使用mysql完成以下实验任务。实验任务 1 创建名为 proc_grade 的存储过程,要求查询 db_student 数据库中每个学生各门功课的成绩,其中包括每个学生的sno、sname、cname、grade。并调用改 p
根据要求,我们可以创建下面的存储过程 proc_grade:
```sql
DELIMITER $$
CREATE PROCEDURE proc_grade()
BEGIN
SELECT S.Sno, S.Sname, C.Cname, SC.Grade
FROM S, C, SC
WHERE S.Sno = SC.Sno AND C.Cno = SC.Cno
ORDER BY S.Sno, C.Cno;
END$$
DELIMITER ;
```
该存储过程会查询学生情况表 S、课程基本表 C 和学生成绩基本表 SC,根据学生学号 Sno 和课程编号 Cno 进行关联查询,最终返回每个学生各门功课的成绩信息。
要调用该存储过程,可以使用以下语句:
```sql
CALL proc_grade();
```
执行该语句后,就可以看到查询结果了。
一.针对教学管理数据库ST,创建下列存储过程并执行: Student(Sno,Sname, Ssex, Sage,Sdept) SC(Sno,Cno,Grade) C(Cno,Cname,Cpno,Ccredit) 1.创建名为s_grade的存储过程,要求查询每个学生各门课程的成绩,其中包括每个学生的sno,sname,cname,grade。 2.创建名为proc_exp的存储过程,要求输入某学生的姓名时从SC表中查询该学生的平均成绩。 3.创建名为s_info的存储过程,要求输入某学生的姓名时输出该学生所学课程的门数以及他的平均成绩。 4.创建存储过程proc_insert_sno,实现对sc表的数据的插入。 5.修改存储过程proc_exp,要求输入学生学号时根据该学生所选课程的成绩显示提示信息,即如果平均成绩成绩在60分以上,显示“此学生成绩合格,成绩为XX分”,否则显示“此学生综合成绩不合格,成绩为XX分”
好的,以下是对应的SQL语句:
1. 创建名为s_grade的存储过程,要求查询每个学生各门课程的成绩,其中包括每个学生的sno,sname,cname,grade。
```
CREATE PROCEDURE s_grade
AS
BEGIN
SELECT S.Sno, S.Sname, C.Cname, SC.Grade
FROM Student AS S
INNER JOIN SC ON S.Sno = SC.Sno
INNER JOIN C ON C.Cno = SC.Cno
ORDER BY S.Sno;
END
```
该存储过程会查询出每个学生各门课程的成绩,并按学生学号排序。注意,这里假设有如下表结构:
- Student表:包含学生信息,其中Sno是主键
- C表:包含课程信息,其中Cno是主键
- SC表:记录每个学生每门课程的成绩,其中Sno和Cno是外键,关联到Student和C表中的主键。同时,该表还包含Grade字段,表示学生在该门课程中的成绩。
2. 创建名为proc_exp的存储过程,要求输入某学生的姓名时从SC表中查询该学生的平均成绩。
```
CREATE PROCEDURE proc_exp
@Sname VARCHAR(20)
AS
BEGIN
SELECT AVG(SC.Grade) AS Avg_Grade
FROM Student AS S
INNER JOIN SC ON S.Sno = SC.Sno
WHERE S.Sname = @Sname;
END
```
该存储过程会根据输入的学生姓名查询该学生在所有课程中的平均成绩。
3. 创建名为s_info的存储过程,要求输入某学生的姓名时输出该学生所学课程的门数以及他的平均成绩。
```
CREATE PROCEDURE s_info
@Sname VARCHAR(20)
AS
BEGIN
SELECT COUNT(*) AS Course_Num, AVG(SC.Grade) AS Avg_Grade
FROM Student AS S
INNER JOIN SC ON S.Sno = SC.Sno
WHERE S.Sname = @Sname;
END
```
该存储过程会根据输入的学生姓名查询该学生所学课程的门数以及平均成绩。
4. 创建存储过程proc_insert_sno,实现对sc表的数据的插入。
```
CREATE PROCEDURE proc_insert_sno
@Sno VARCHAR(10),
@Cno VARCHAR(10),
@Grade INT
AS
BEGIN
INSERT INTO SC(Sno, Cno, Grade)
VALUES (@Sno, @Cno, @Grade);
END
```
该存储过程会向SC表中插入一条数据,包括学生学号、课程编号和成绩。
5. 修改存储过程proc_exp,要求输入学生学号时根据该学生所选课程的成绩显示提示信息,即如果平均成绩在60分以上,显示“此学生成绩合格,成绩为XX分”,否则显示“此学生综合成绩不合格,成绩为XX分”
```
CREATE PROCEDURE proc_exp
@Sno VARCHAR(10)
AS
BEGIN
DECLARE @Avg_Grade FLOAT;
SELECT @Avg_Grade = AVG(Grade)
FROM SC
WHERE Sno = @Sno;
IF @Avg_Grade >= 60
PRINT '此学生成绩合格,成绩为' + CONVERT(VARCHAR(10), @Avg_Grade) + '分';
ELSE
PRINT '此学生综合成绩不合格,成绩为' + CONVERT(VARCHAR(10), @Avg_Grade) + '分';
END
```
该存储过程会根据输入的学生学号查询该学生在所有课程中的平均成绩,并根据平均成绩输出相应的提示信息。
阅读全文
相关推荐
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)