运用SQL数据库语言创建一个名为stu_pr的存储过程,该存储过程能查询出051班学生的所有资料,包括学生的基本信息、学生的选课信息 (含未选课同学的信息)
时间: 2024-12-14 16:14:35 浏览: 12
在SQL中,创建一个名为`stu_pr`的存储过程来查询051班学生及其选课信息,可以分为两个部分:首先获取学生基本信息,然后获取他们的课程选择情况。假设我们有两个表,一个是`students`(包含学生ID,姓名,班级等基本信息),另一个是`courses`(包含课程ID,学生ID,是否选课状态等)。以下是创建这个存储过程的示例:
```sql
CREATE PROCEDURE stu_pr (IN class_id INT)
BEGIN
-- 查询学生基本信息
SELECT s.id AS student_id, s.name AS student_name, s.class AS class
FROM students s
WHERE s.class = '051';
-- 查询学生选课信息
SELECT sc.student_id, c.course_name, CASE WHEN sc.is_selected THEN '已选' ELSE '未选' END AS selection_status
FROM students s
JOIN courses sc ON s.id = sc.student_id
WHERE s.class = '051'
UNION ALL -- 使用UNION ALL合并基本信息和选课信息,以便显示未选课同学
SELECT NULL AS student_id, NULL AS student_name, NULL AS class, '未选' AS selection_status
FROM (
SELECT DISTINCT class_id
FROM students
WHERE class = '051'
) t
LEFT JOIN courses c ON t.class_id = c.student_id AND c.is_selected = 0;
END;
```
在这个存储过程中,你需要传递一个参数`class_id`(这里假设为班级编号),存储过程会返回051班所有学生的详细信息,包括已选和未选的课程。
阅读全文