创建存储过程“学生_选课_proc”,根据提供的学生的学号统计该生的选课情况,统计结果包括学号、姓名、院系、选课门数,并调用存储过程。 (1)创建“学生_选课_proc”。 (2)调用“学生_选课_proc”,学生学号为“2022102510023”。
时间: 2024-12-17 11:42:28 浏览: 13
首先,我们将创建一个名为“学生_选课_proc”的存储过程,该过程会接受学生学号作为输入参数,然后查询学生信息和选课记录来计算选课门数。
```sql
CREATE PROCEDURE 学生_选课_proc (@student_id INT)
AS
BEGIN
SELECT s.学号, s.姓名, s.院系, COUNT(c.课程ID) as 选课门数
FROM 学生表 s
LEFT JOIN 选课表 c ON s.学号 = c.学号 AND s.学号 = @student_id
GROUP BY s.学号, s.姓名, s.院系;
END;
```
上面的SQL语句定义了一个存储过程,它首先从学生表(s)中选择数据,然后通过LEFT JOIN连接选课表(c),只保留那些学生学号匹配的数据。最后,通过COUNT函数计算每个学生的选课门数,并按学号、姓名和院系分组。
接着,我们可以调用这个存储过程,传入学生学号为“2022102510023”。
```sql
EXEC 学生_选课_proc 2022102510023;
```
上述命令会返回指定学生的所有选课信息,包括学号、姓名、院系以及他们所选的课程数量。
相关问题
在学生成绩库中创建存储过程,存储过程名为proc1,要求实现如下功能:根据学生学号,查询该学生的选课情况,其中包括该学生学号、姓名、性别、课程号、课程名、成绩和学分
好的,根据您的要求,我已经理解了您的问题。以下是实现该功能的存储过程:
```
CREATE PROCEDURE proc1 (@student_id INT)
AS
BEGIN
SELECT s.student_id, s.student_name, s.student_gender, c.course_id, c.course_name, sc.score, c.credit
FROM students s
INNER JOIN student_courses sc ON s.student_id = sc.student_id
INNER JOIN courses c ON sc.course_id = c.course_id
WHERE s.student_id = @student_id
END
```
该存储过程接收一个学生学号作为参数,然后通过 INNER JOIN 操作将学生表、学生选课表和课程表连接起来,从而查询到该学生的选课情况,包括学号、姓名、性别、课程号、课程名、成绩和学分。
您可以将该存储过程保存在学生成绩库中,然后通过调用该存储过程来查询指定学生的选课情况。例如,执行以下语句可以查询学号为1的学生的选课情况:
```
EXEC proc1 1
```
希望这个存储过程能够满足您的需求。如果您还有其他问题,可以继续提出。
创建存储过程proc_t1,要求实现如下功能:输入专业名称,产生该专业学生的选课情况列表,其中包括专业、学号、姓名、课程号、课程名、成绩、学分等。并调用此存储过程,显示“信息管理”专业学生的选课情况列表
好的,以下是创建存储过程proc_t1的SQL语句,实现输入专业名称,产生该专业学生的选课情况列表:
```
CREATE PROCEDURE proc_t1 (@major_name VARCHAR(50))
AS
BEGIN
SELECT
s.major,
s.student_id,
s.student_name,
c.course_id,
c.course_name,
sc.score,
c.credit
FROM
student s
JOIN score sc ON s.student_id = sc.student_id
JOIN course c ON sc.course_id = c.course_id
WHERE
s.major = @major_name
ORDER BY
s.student_id,
c.course_id
END
```
调用存储过程,显示“信息管理”专业学生的选课情况列表的SQL语句:
```
EXEC proc_t1 '信息管理'
```
执行上述SQL语句后,就可以得到“信息管理”专业学生的选课情况列表了。
阅读全文