数据库设计与SQL查询练习:教师、课程、班级关系
本练习以教师、课程、班级三张表为例,探讨多对多关系的实现方法,并通过SQL语句进行数据查询。
表信息:
- kc课程表:
- 课程编号id (int): 课程编号
- 课程名 name (varchar): 课程名称
- 课程学分 xf (int): 课程学分
- 开设学期 xq (int): 开设学期 (1,2,3,4,5,6)
- js教师表:
- 工号id (int): 教师工号
- 姓名 name (varchar): 教师姓名
- 教龄 year (int): 教师教龄
- 所教授的课程 kid (int): 教师教授的课程编号
- bj班级表:
- 班级编号id (int): 班级编号
- 班级名 name (varchar): 班级名称
- 所属专业zy (varchar): 班级所属专业
- 所属院系yx (varchar): 班级所属院系
关系:
- 一个老师只能教授一门课程。
- 一门课程可以有多个老师。
- 一个老师可以教很多个班级。
- 一个班级也有多个老师。
问题:
- 教师和课程之间是什么关系,如何在表中实现这种关系?
- 教师和班级之间是什么关系,如何实现这种关系?
SQL语句:
- 查询 老师和课程信息(老师表,课程表)中第2-4条数据
SELECT *
FROM 教师表, 课程表
WHERE 教师表.id = 课程表.kid
LIMIT 1, 3;
- 查询教龄最大的老师名和教龄
SELECT 姓名, 教龄
FROM 教师表
ORDER BY 教龄 DESC
LIMIT 1;
- 查询每学期开设的课程数量和总学分
SELECT 开设学期, COUNT(*) AS 课程数量, SUM(课程学分) AS 总学分
FROM 课程表
GROUP BY 开设学期;
- 查询每个班级的老师数量
SELECT 班级名, COUNT(*) AS 老师数量
FROM 教师表, 班级表
WHERE 教师表.id = 班级表.id
GROUP BY 班级名;
答案:
- 教师和课程之间是'多对多'关系。可以使用一个中间表来实现这种关系,表中包含教师的id和课程的id。
- 教师和班级之间是'多对多'关系。同样可以使用一个中间表来实现这种关系,表中包含教师的id和班级的id。
原文地址: https://www.cveoy.top/t/topic/o3rt 著作权归作者所有。请勿转载和采集!