SQL查询练习2:教学管理系统关系模式及建表语句(单世民版)-结果整理【PDF】

版权申诉
0 下载量 146 浏览量 更新于2024-03-03 收藏 929KB PDF 举报
教学管理系统中包含的关系模式有Student(学生信息表)、Teacher(教师信息表)、Course(课程信息表)和Score(成绩表)。其中,Student表包含学生学号(no)、姓名(name)、性别(sex)、出生日期(birthday)和班级(class)字段;Teacher表包含教师工号(no)、姓名(name)、性别(sex)、出生日期(birthday)、专业(prof)和部门(depart)字段;Course表包含课程编号(cno)、课程名称(cname)和教师工号(tno)字段;Score表包含学生学号(no)、课程编号(cno)和成绩(degree)字段。 在对这些关系模式的描述表中,我们可以通过SQL查询语句来操作数据,解决各种问题。下面将根据给定的教学管理系统的表结构,进行一系列SQL查询练习: 首先,我们需要完成上述表的建表语句,分别为Student表、Teacher表、Course表和Score表。建表语句如下: ```sql CREATE TABLE Student ( no INT PRIMARY KEY, name VARCHAR(14), sex VARCHAR(2), birthday DATE, class INT ); CREATE TABLE Teacher ( no INT PRIMARY KEY, name VARCHAR(14), sex VARCHAR(2), birthday DATE, prof VARCHAR(10), depart VARCHAR(10) ); CREATE TABLE Course ( cno VARCHAR(10) PRIMARY KEY, cname VARCHAR(20), tno INT ); CREATE TABLE Score ( no INT, cno VARCHAR(10), degree FLOAT, PRIMARY KEY (no, cno), FOREIGN KEY (no) REFERENCES Student(no), FOREIGN KEY (cno) REFERENCES Course(cno) ); ``` 接下来,我们可以根据以上表结构,完成一系列查询题目的解答: 1.查询所有学生的学号、姓名和性别。 ```sql SELECT no, name, sex FROM Student; ``` 2.查询所有课程的编号、名称和授课教师姓名。 ```sql SELECT c.cno, c.cname, t.name FROM Course c JOIN Teacher t ON c.tno = t.no; ``` 3.查询所有学生的学号、姓名、平均成绩。 ```sql SELECT s.no, s.name, AVG(sc.degree) AS avg_degree FROM Student s JOIN Score sc ON s.no = sc.no GROUP BY s.no, s.name; ``` 4.查询所有学生的学号、姓名、选课数量。 ```sql SELECT s.no, s.name, COUNT(sc.cno) AS course_count FROM Student s LEFT JOIN Score sc ON s.no = sc.no GROUP BY s.no, s.name; ``` 5.查询所有课程的编号、名称、平均成绩。 ```sql SELECT c.cno, c.cname, AVG(sc.degree) AS avg_degree FROM Course c LEFT JOIN Score sc ON c.cno = sc.cno GROUP BY c.cno, c.cname; ``` 通过以上一系列的SQL查询语句,我们可以根据教学管理系统中的表结构和数据,实现对学生、教师、课程和成绩等信息的灵活查询和统计分析。这些查询语句可以帮助我们更好地理解数据库的关系模型,提高数据处理和分析的效率,为教学管理系统的数据管理提供技术支持。同时,还可以通过保存脚本文件,进行数据还原和备份操作,确保数据的安全性和完整性。希望以上内容对您有所帮助,谢谢!