数据库设计:教师、课程、班级关系及SQL查询示例

本文将介绍一个数据库设计示例,包含教师、课程和班级三个实体,并探讨它们之间的关系,以及如何使用SQL语句进行查询。

数据表结构

  • 教师表
    • 工号id (int) - 主键
    • 姓名 (varchar)
    • 教龄 (int)
    • 所教授的课程 kid (int)
  • 课程表
    • 课程编号id (int) - 主键
    • 课程名 (varchar)
    • 课程学分 (int)
    • 开设学期 (int) - 1,2,3,4,5,6
  • 班级表
    • 班级编号id (int) - 主键
    • 班级名 (varchar)
    • 所属专业 (varchar)
    • 所属院系 (varchar)

实体关系

  • 教师和课程:一对多关系,一个教师可以教授多门课程,而一门课程只能由一个教师教授。
    • 实现方式:在教师表中添加 kid 字段,表示该教师所教授的课程编号。
  • 教师和班级:多对多关系,一个教师可以教多个班级,而一个班级也可以有多个教师。
    • 实现方式:创建中间表 教师班级关系表,包含 教师编号班级编号,用于存储教师和班级的对应关系。

SQL查询示例

以下是一些常见的SQL查询示例:

@3 查询 老师和课程信息(老师表,课程表)中第2-4条数据

SELECT * 
FROM 老师表
LIMIT 1, 3;

@4 查询教龄最大的老师名和教龄

SELECT 姓名, 教龄
FROM 老师表
ORDER BY 教龄 DESC
LIMIT 1;

@5 查询每学期开设的课程数量和总学分

SELECT 开设学期, COUNT(*) AS 开设课程数量, SUM(课程学分) AS 总学分
FROM 课程表
GROUP BY 开设学期;

@6 查询每个班级的老师数量

SELECT 班级编号, COUNT(*) AS 老师数量
FROM 教师表
GROUP BY 班级编号;

@7 查询哪些课程目前还没有老师教

SELECT * 
FROM 课程表 
WHERE 课程编号 NOT IN (SELECT kid FROM 老师表);

总结

本文介绍了一个数据库设计示例,包含教师、课程和班级三个实体,并探讨了它们之间的关系。通过合理的数据库设计,我们可以方便地存储和管理数据,并使用SQL语言进行查询操作,获取我们想要的信息。


原文地址: https://www.cveoy.top/t/topic/o3qT 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录