SQL数据库存储过程 输入课程号 查询该课程不及格的学生学号姓名
时间: 2023-12-07 08:05:21 浏览: 118
好的,以下是一个简单的 SQL 存储过程,可以输入课程号,查询该课程不及格的学生学号和姓名:
```
CREATE PROCEDURE GetFailedStudentsByCourse
@CourseID VARCHAR(10)
AS
BEGIN
SELECT 学号, 姓名
FROM 学生
WHERE 学号 IN (
SELECT 学号
FROM 成绩
WHERE 课程号 = @CourseID AND 成绩 < 60
)
END
```
在这个存储过程中,我们使用了一个输入参数 `@CourseID`,它用于指定要查询的课程号。存储过程使用了与前面 SQL 查询语句类似的语法,但是在执行时需要传入参数。您可以在 SQL Server Management Studio 或其他数据库客户端中执行这个存储过程,并传入具体的课程号来查询该课程不及格的学生学号和姓名。
相关问题
② 在gradem数据库中创建存储过程proc_2,要求实现如下功能:查询存在不及格情况的学生选课情况列表,其中包括学号、姓名、性别、课程号、课程名、成绩、系别等。调用proc_2存储过程,观察执行结果。
在MySQL或者类似支持存储过程的数据库系统Gradem中,你可以使用以下步骤创建一个名为`proc_2`的存储过程,用于查询有不及格成绩的学生选课情况:
```sql
DELIMITER //
CREATE PROCEDURE proc_2()
BEGIN
SELECT s.sno AS 学号, s.name AS 姓名, s.gender AS 性别, c.course_id AS 课程号, c.course_name AS 课程名, c.score AS 成绩, d.department AS 系别
FROM students s
JOIN enrollments e ON s.sno = e.student_sno
JOIN courses c ON e.course_id = c.course_id
JOIN departments d ON c.department_id = d.department_id
WHERE c.score < 60; -- 及格线通常设为60分
END //
DELIMITER ;
-- 调用存储过程
CALL proc_2();
```
这个存储过程会返回所有成绩低于及格分数线(例如60分)的学生的信息,包括他们的学号、姓名、性别、课程号、课程名称以及他们所选课程的系别。
检索出所有选修数据库课程并且总评成绩及格的学生的学号、姓名、课程名与分数
检索出所有选修了数据库课程并且总评成绩达到及格标准的学生信息,通常需要查询学生选课表(记录学号、姓名、课程名以及对应的成绩)、评分表(如果分开记录)或者包含总评成绩的课程表。假设有一个名为"student_records"的表,它包含了学生的相关信息,其中包括学号(student_id)、姓名(name)和每个课程的成绩(score),我们可以编写SQL查询如下:
```sql
SELECT student_records.student_id, student_records.name, '数据库课程' AS course_name, student_records.score
FROM student_records
JOIN courses ON student_records.course_id = courses.course_id
WHERE courses.course_name = '数据库' AND student_records.score >= '及格分数线';
```
这里假设"courses"表存储了课程名称(course_name)等信息,并且有明确的及格分数线。如果实际数据库结构不同,可能需要调整JOIN条件和字段选择。
阅读全文