CREATE PROCEDURE p_grade AS BEGIN SELECT s.name, c.name AS course_name, sc.grade FROM student s JOIN sc ON s.id = sc.student_id JOIN course c ON sc.course_id = c.id WHERE s.department = '电信学院' ORDER BY s.name; END
时间: 2024-02-06 13:04:40 浏览: 111
这是一个 SQL Server 存储过程,名为 p_grade。该存储过程的作用是查询电信学院学生的成绩,并按照学生姓名进行排序。具体实现的 SQL 语句如下:
```
SELECT s.name, c.name AS course_name, sc.grade
FROM student s
JOIN sc ON s.id = sc.student_id
JOIN course c ON sc.course_id = c.id
WHERE s.department = '电信学院'
ORDER BY s.name;
```
该 SQL 语句使用了三个表:student(学生表)、course(课程表)和 sc(学生选课表)。通过 JOIN 连接这三个表,查询电信学院学生的成绩,并按照学生姓名进行排序。该存储过程可以在 SQL Server 数据库中创建并执行。
相关问题
CREATE PROCEDURE Proc_Selesno ( VARIABLE student_id INT ) BEGIN SELECT s.*, c.Cname, sc.grade FROM S s INNER JOIN SC sc ON s.sno = sc.sno INNER JOIN C c ON sc.cno = c.cno WHERE s.sno = student_id; END
很抱歉,MySQL 不支持使用 "VARIABLE" 声明量。在 MySQL 中,该使用 "IN" 关键字来声明输入参数。
以下是修改后的代码:
```
CREATE PROCEDURE Proc_Selesno (
IN student_id INT
)
BEGIN
SELECT s.*, c.course_name, sc.grade
FROM S s
INNER JOIN SC sc ON s.sno = sc.sno
INNER JOIN C c ON sc.cno = c.cno
WHERE s.sno = student_id;
END
```
这个代码应该可以在 MySQL 中执行,它创建了一个名为 Proc_Selesno 的储存过程,接受一个名为 student_id 的输入参数,并使用 INNER JOIN 连接 S、C 和 SC 表,以返回特定学生的信息和选课情况。
要执行此储存过程,请使用以下代码:
```
CALL Proc_Selesno(12345);
```
请将 12345 替换为您要查询的学生的实际 ID 值。
希望这次能够帮助您!
用sql语句实现以下代码:输入以下代码,创建存储过程stu_info,执行时通过输入姓名,可以查询该姓名的学生的各科成绩。 2. 使用TeachSystem数据库中的student表、course表、SC表。 (1)创建一个存储过程stu_grade,查询学号为S01的学生的姓名、课程名称、成绩。 (2)调用存储过程stu_grade。 3. 使用TeachSystem数据库中的student表、course表、SC表。 (1)创建存储过程stu_name,当任意输入一个学生的姓名时,查看其课程的最高分、最低分、平均分。 (2)调用存储过程stu_name。 (3)删除存储过程stu_name。 4. 使用TeachSystem数据库中的SC表。 (1)创建一个存储过程stu_g_r,当输入一个学生的学号时,通过返回输出参数获取该学生选修课程的门数。 (2)执行存储过程stu_g_r,输入学号S02。 (3)显示S02号学生的选课门数。
创建存储过程stu_info:
```
CREATE PROCEDURE stu_info
@name VARCHAR(50)
AS
BEGIN
SELECT s.name, c.course_name, sc.grade
FROM student s
JOIN SC sc ON s.s_id = sc.s_id
JOIN course c ON c.c_id = sc.c_id
WHERE s.name = @name
END
```
创建存储过程stu_grade:
```
CREATE PROCEDURE stu_grade
AS
BEGIN
SELECT s.name, c.course_name, sc.grade
FROM student s
JOIN SC sc ON s.s_id = sc.s_id
JOIN course c ON c.c_id = sc.c_id
WHERE s.s_id = 'S01'
END
```
调用存储过程stu_grade:
```
EXECUTE stu_grade
```
创建存储过程stu_name:
```
CREATE PROCEDURE stu_name
@name VARCHAR(50)
AS
BEGIN
SELECT MAX(sc.grade) AS max_grade, MIN(sc.grade) AS min_grade, AVG(sc.grade) AS avg_grade
FROM student s
JOIN SC sc ON s.s_id = sc.s_id
WHERE s.name = @name
END
```
调用存储过程stu_name:
```
EXECUTE stu_name '张三'
```
删除存储过程stu_name:
```
DROP PROCEDURE stu_name
```
创建存储过程stu_g_r:
```
CREATE PROCEDURE stu_g_r
@s_id VARCHAR(50),
@count INT OUTPUT
AS
BEGIN
SELECT @count = COUNT(*)
FROM SC
WHERE s_id = @s_id
END
```
执行存储过程stu_g_r,输入学号S02:
```
DECLARE @count INT
EXECUTE stu_g_r 'S02', @count OUTPUT
SELECT @count
```
阅读全文