创建一个名为stu_proc1的存储过程,查询某系、某姓名的学生的学号、姓名、年龄,选修课程名和成绩。系名和姓名在调用该存储过程时输入。
时间: 2024-03-12 16:45:47 浏览: 160
可以使用如下的 SQL 语句创建一个名为stu_proc1的存储过程:
```
CREATE PROCEDURE stu_proc1
@dept_name VARCHAR(20),
@stu_name VARCHAR(20)
AS
BEGIN
SELECT s.stu_id, s.stu_name, s.stu_age, c.course_name, sc.score
FROM student s
JOIN score sc ON s.stu_id = sc.stu_id
JOIN course c ON sc.course_id = c.course_id
WHERE s.dept_name = @dept_name AND s.stu_name = @stu_name
END
```
该存储过程接受两个参数:@dept_name和@stu_name,分别表示系名和姓名。在存储过程内部,使用JOIN语句联结了student、score和course这三个表,然后根据输入的系名和姓名筛选出符合条件的记录,并返回学号、姓名、年龄、选修课程名和成绩这些字段的值。
相关问题
创建一个存储过程stu_op,查询某学号学生的姓名和平均分
创建一个名为 `stu_op` 的存储过程,用于查询特定学号的学生姓名和平均分,通常在SQL数据库中操作,可以按照以下步骤编写(这里以MySQL为例):
```sql
DELIMITER //
CREATE PROCEDURE stu_op(IN student_id INT)
BEGIN
SELECT students.name AS student_name, AVG(grades.score) AS average_score
FROM students
JOIN grades ON students.student_id = grades.student_id
WHERE students.student_id = student_id
GROUP BY students.student_id;
END //
DELIMITER ;
```
在这个存储过程中,我们假设有两个表:
- `students` 表,包含字段 `student_id` 和 `name`;
- `grades` 表,包含字段 `student_id` 和 `score`。
这个存储过程接受一个输入参数 `student_id`,然后通过JOIN操作连接两个表,并计算指定学号的平均成绩。最后返回该学生的名字和平均分。
创建一个存储过程stu_op,查询某学号学生的姓名和平均分。
创建一个名为 `stu_op` 的存储过程,用于查询特定学号的学生姓名及其平均分数,通常会在数据库管理系统(如MySQL、SQL Server等)中操作,其基本语法可能会因数据库系统而异。这里以SQL为例来说明:
```sql
DELIMITER //
CREATE PROCEDURE stu_op(IN student_id INT)
BEGIN
SELECT students.name, AVG(grades.score) as average_score
FROM students
JOIN grades ON students.id = grades.student_id
WHERE students.id = student_id
GROUP BY students.id;
END //
DELIMITER ;
```
在这个例子中:
1. `CREATE PROCEDURE stu_op(IN student_id INT)` 定义了一个接受整数型输入参数 `student_id` 的存储过程。
2. `SELECT students.name, AVG(grades.score) as average_score` 选择了学生姓名 (`students.name`) 和他们的平均成绩 (`AVG(grades.score)` 并给结果起了别名 `average_score`)。
3. `FROM students JOIN grades ON students.id = grades.student_id` 进行了内外连接,将学生表 (`students`) 和成绩表 (`grades`) 按照学号关联起来。
4. `WHERE students.id = student_id` 根据传入的学号筛选数据。
5. `GROUP BY students.id` 为了计算每个学号的平均成绩,对结果进行了分组。
阅读全文