数据库设计:多对多关系、SQL语句练习

数据库表设计

假设有kc课程表,js教师表,bj班级表,信息字段如下:

  • 老师信息: * 工号id int * 姓名 name varchar * 教龄 year int * 所教授的课程 kid int* 课程信息: * 课程编号id int * 课程名 name varchar * 课程学分 xf int * 开设学期 xq int (1,2,3,4,5,6)* 班级信息: * 班级编号id int * 班级名 name varchar * 所属专业zy varchar * 所属院系yx varchar

关系分析

  • 教师和课程之间是多对多的关系,因为一个老师可以教授多个课程,一门课程也可以有多个老师。可以通过创建一个中间表来实现这种关系。中间表中包含教师的工号id和课程的课程编号id,表示该教师教授了该课程。* 教师和班级之间是多对多的关系,因为一个老师可以教很多个班级,一个班级也有多个老师。也可以通过创建一个中间表来实现这种关系。中间表中包含教师的工号id和班级的班级编号id,表示该教师教授了该班级。

SQL语句练习

以下是一些SQL语句练习,基于上述数据库表设计:

@3 查询 老师和课程信息(老师表,课程表)中第2-4条数据sqlSELECT * FROM 老师表 LIMIT 1,3;SELECT * FROM 课程表 LIMIT 1,3;

@4 查询教龄最大的老师名和教龄sqlSELECT 姓名, 教龄 FROM 老师表 ORDER BY 教龄 DESC LIMIT 1;

@5 查询每学期开设的课程数量和总学分sqlSELECT 开设学期, COUNT(*) AS 开设课程数量, SUM(课程学分) AS 总学分 FROM 课程表 GROUP BY 开设学期;

@6 查询每个班级的老师数量sqlSELECT 班级名, COUNT(*) AS 老师数量 FROM 班级表 GROUP BY 班级名;

@7 查询哪些课程目前还没有老师教sqlSELECT 课程名 FROM 课程表 LEFT JOIN 老师表 ON 课程表.课程编号id = 老师表.所教授的课程 WHERE 老师表.工号id IS NULL;

注意:

  • 以上SQL语句示例仅供参考,实际应用中需要根据具体数据库和数据表进行调整。* 建议使用数据库管理工具进行练习,例如 MySQL Workbench 或 SQL Server Management Studio。

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

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