(1) “学生”表Student由学号(Sno)、姓名(Sname)、性别(Ssex)、年龄(Sage)、所在系(Sdept)五个属性组成,可记为: Student(Sno,Sname,Ssex,Sage,Sdept) Sno 为主关键字。 (2) “课程”表Course由课程号(Cno)、课程名(Cname)、先修课号(Cpno)、学分(Ccredit)四个属性组成,可记为: Course(Cno,Cname,Cpno,Ccredit) Cno为关键字。 (3) “学生选课”表SC由学号(Sno)、课程号(Cno)、成绩(Grade)三个属性组成,可记为: SC(Sno,Cno,Grade) (SNO, CNO) 为关键字。 参照学生-课程数据库,两人一组(队友出题,你给出SQL语句)完成下列任务:创建并调用一个多语句表值函数。写出10个例子
时间: 2024-03-06 16:51:05 浏览: 580
学生-课程-选课(学习数据库经典的例子,3个表SQL Server数据库)
4星 · 用户满意度95%
好的,我明白了。以下是创建并调用一个多语句表值函数的SQL语句:
```sql
-- 创建函数
CREATE FUNCTION get_top_students_by_course(course_name VARCHAR(50))
RETURNS TABLE (
Sno VARCHAR(20),
Sname VARCHAR(50),
Grade INT
) AS $$
BEGIN
RETURN QUERY
SELECT SC.Sno, S.Sname, SC.Grade
FROM SC
INNER JOIN Student S ON S.Sno = SC.Sno
INNER JOIN Course C ON C.Cno = SC.Cno
WHERE C.Cname = course_name
ORDER BY SC.Grade DESC
LIMIT 10;
END;
$$ LANGUAGE plpgsql;
-- 调用函数
SELECT * FROM get_top_students_by_course('数据库原理');
```
这个函数名为 `get_top_students_by_course`,它接受一个课程名作为参数,并返回该课程成绩排名前10名的学生的学号、姓名和成绩。
以下是10个调用这个函数的例子:
```sql
-- 获取数据库原理成绩排名前10名的学生信息
SELECT * FROM get_top_students_by_course('数据库原理');
-- 获取高数成绩排名前10名的学生信息
SELECT * FROM get_top_students_by_course('高等数学');
-- 获取英语成绩排名前10名的学生信息
SELECT * FROM get_top_students_by_course('大学英语');
-- 获取操作系统成绩排名前10名的学生信息
SELECT * FROM get_top_students_by_course('操作系统');
-- 获取计算机网络成绩排名前10名的学生信息
SELECT * FROM get_top_students_by_course('计算机网络');
-- 获取编译原理成绩排名前10名的学生信息
SELECT * FROM get_top_students_by_course('编译原理');
-- 获取数据结构成绩排名前10名的学生信息
SELECT * FROM get_top_students_by_course('数据结构');
-- 获取算法分析与设计成绩排名前10名的学生信息
SELECT * FROM get_top_students_by_course('算法分析与设计');
-- 获取软件工程成绩排名前10名的学生信息
SELECT * FROM get_top_students_by_course('软件工程');
-- 获取计算机组成原理成绩排名前10名的学生信息
SELECT * FROM get_top_students_by_course('计算机组成原理');
```
阅读全文