根据学生选课数据库建立存储过程,要求根据学生名,查询某个学生的选课情况,显示学号,姓名,课程号,成绩,调用存储过程查询张海同学的选课情况
时间: 2024-10-23 09:18:57 浏览: 310
在创建一个用于查询学生选课情况的存储过程时,通常会涉及到SQL语言。以下是一个简单的示例,展示如何在MySQL中创建这样的存储过程,并假设有一个名为`student_courses`的表,包含`student_id`, `name`, `course_id`, 和 `score`等字段:
```sql
DELIMITER //
CREATE PROCEDURE GetStudentCourses(IN studentName VARCHAR(50))
BEGIN
SELECT sc.student_id AS '学号',
s.name AS '姓名',
c.course_id AS '课程号',
sc.score AS '成绩'
FROM student_courses sc
JOIN students s ON sc.student_id = s.student_id
WHERE s.name = studentName;
END //
DELIMITER ;
```
这个存储过程接受一个参数`studentName`,然后通过JOIN操作将学生信息表(`students`)与选课记录表(`student_courses`)关联起来,最后筛选出指定学生的选课数据。
为了查询张海同学的选课情况,你可以像这样调用存储过程:
```sql
CALL GetStudentCourses('张海');
```
相关问题
② 在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分)的学生的信息,包括他们的学号、姓名、性别、课程号、课程名称以及他们所选课程的系别。
在studentinfo数据库中创建一个存储过程proc1,该存储过程能实现根据专业编号查询某一专业学生的选课信息,包括学生的学号、姓名、专业名称、课程名、成绩(没有选课的学生也需要出现在查询结果集中)。
在studentinfo数据库中创建proc1存储过程的SQL语句如下:
```sql
CREATE PROCEDURE proc1
@major_id INT
AS
BEGIN
SELECT s.student_id, s.student_name, m.major_name, c.course_name, sc.score
FROM students AS s
JOIN majors AS m ON s.major_id = m.major_id
LEFT JOIN student_courses AS sc ON s.student_id = sc.student_id
LEFT JOIN courses AS c ON sc.course_id = c.course_id
WHERE m.major_id = @major_id
ORDER BY s.student_id;
END
```
该存储过程接受一个参数@major_id,表示要查询的专业编号。然后使用JOIN和LEFT JOIN将学生、专业、选课和课程表进行连接,筛选出专业编号为@major_id的学生的选课信息。选课信息中包括学生的学号、姓名、专业名称、课程名、成绩(没有选课的学生也需要出现在查询结果集中)。最后按照学号进行排序,并返回结果集。
阅读全文