SQL基础题,帮回答并解释,3Q

来源:百度知道 编辑:UC知道 时间:2024/07/05 08:29:24
请设计数据库:教师,课题,学生,成绩。 其中一个教题可教多门课,一个学生需要学习多门课,一个学生一门课只有一次成绩。
1.给出所选修数学的女生

2.给出所有课程的平均成绩

3.按照课程,给出每门课程成绩最高的学生姓名

4.给出张三教师所教学生的课程成绩表。

请设计数据库并回答上面的每个小问题,注:最好有点解释,本人不是太精通SQL
一个教师可以教多门,一个学生需要学习多门课,一个学生一门课只有一次成绩,这又是要求,数据库或表之间存在什么关系呢?请帮帮忙。

数据库定义:
2个表
1、教师表:
教师编号
姓名
科目
2、学生表
学号
姓名
性别
所选科目
成绩

1、所有选数学的女生

select 姓名 from 学生表 where 性别='女' and 所选科目='数学'

2、所有课程的平均成绩

select 所选科目,avg(成绩) as 平均成绩 from 学生表 group by 科目

3、每门课程,成绩最高的学生姓名

select 学生姓名,所选科目,max(成绩) from 学生表 group by 所选科目,学生姓名

4、给出张三教师所教学生的课程成绩表

select 教师表.科目,学生表.学号,学生表.姓名,学生表.成绩 from 学生表 inner join 教师表
on 教师表.科目=学生表.所选科目 group by 教师表.科目

只所以要有教师编号和学生学号,是因为人命可能会重复,只有学号和教师编号是唯一的

要先建模,光写sql不是很直观