SQL查询练习2:教学管理系统关系模式及建表语句(单世民版)-结果整理【PDF】
版权申诉
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查询语句,我们可以根据教学管理系统中的表结构和数据,实现对学生、教师、课程和成绩等信息的灵活查询和统计分析。这些查询语句可以帮助我们更好地理解数据库的关系模型,提高数据处理和分析的效率,为教学管理系统的数据管理提供技术支持。同时,还可以通过保存脚本文件,进行数据还原和备份操作,确保数据的安全性和完整性。希望以上内容对您有所帮助,谢谢!
2021-10-14 上传
2021-10-14 上传
2022-08-04 上传
2024-05-13 上传