MySQL数据库 - 复杂查询(二)第4关:查询张老师课程成绩最高的学生信息

任务描述

本关任务:根据提供的表和数据,查询选修“张三”老师所授课程的学生中,成绩最高的学生信息(具体输出信息请查看测试说明)及其成绩。

student表数据:

s_ids_names_sex
01Mia
02Riley
03Aria
04Lucas
05Oliver
06Caden
07Lily
08Jacob

course表数据:

c_idc_namet_id
01Chinese02
02Math01
03English03

teacher表数据:

t_idt_name
01张三
02李四
03王五

score表部分数据:

s_idc_ids_score
010180
010290
010399
020170
.........
相关知识

编程要求

请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充。

测试说明

补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。

预期输出:

 
  1. +------+--------+-------+---------+------+--------+
  2. | s_id | s_name | s_sex | s_score | c_id | c_name |
  3. +------+--------+-------+---------+------+--------+
  4. | 01 | Mia | 女 | 90 | 02 | Math |
  5. +------+--------+-------+---------+------+--------+
    
    #请在此添加实现代码
    ########## Begin ##########
    
    select a.*,b.s_score,b.c_id,c.c_name from student a 
    INNER JOIN score b ON a.s_id = b.s_id
    INNER JOIN course c ON b.c_id=c.c_id
    where b.c_id=(select c_id from course c,teacher d where c.t_id=d.t_id and d.t_name='张三')
    and b.s_score in (select MAX(s_score)from score where c_id='02');
    
    ########## End ##########
    
    
    
    
  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我知道你的问题了。首先,为了满足第三范式,我们需要将数据分解成多个表,每个表都应该有一个主键,并且每个字段应该只与主键有。在这个学生选课系统中,我们可以设计以下八张表: 1. 学生表(Student):包含学生的信息,如学生ID、姓名、性别、年龄等。其中,学生ID是主键。 2. 课程表(Course):包含课程的信息,如课程ID、课程名称、授课教师等。其中,课程ID是主键。 3. 教师表(Teacher):包含教师的信息,如教师ID、姓名、性别、年龄、联系方式等。其中,教师ID是主键。 4. 选课表(Selection):记录每个学生选的课程,包括学生ID、课程ID、选课时间等。其中,学生ID和课程ID组合起来是主键。 5. 成绩表(Score):记录每个学生在每门课程中的成绩,包括学生ID、课程ID、成绩等。其中,学生ID和课程ID组合起来是主键。 6. 班级表(Class):记录每个班级的信息,如班级ID、班级名称、所属院系等。其中,班级ID是主键。 7. 院系表(Department):记录每个院系的信息,如院系ID、院系名称等。其中,院系ID是主键。 8. 教师授课表(Teach):记录每个教师所授课程,包括教师ID、课程ID、上课时间、上课地点等。其中,教师ID和课程ID组合起来是主键。 以上八张表都满足第三范式,每个表都有一个主键,并且每个字段只与主键有。下面是用MySQL语言实现的代码: ``` CREATE TABLE Student ( student_id INT PRIMARY KEY, name VARCHAR(50), gender VARCHAR(10), age INT ); CREATE TABLE Course ( course_id INT PRIMARY KEY, name VARCHAR(50), teacher_id INT, FOREIGN KEY (teacher_id) REFERENCES Teacher(teacher_id) ); CREATE TABLE Teacher ( teacher_id INT PRIMARY KEY, name VARCHAR(50), gender VARCHAR(10), age INT, contact VARCHAR(50) ); CREATE TABLE Selection ( student_id INT, course_id INT, selection_time DATETIME, PRIMARY KEY (student_id, course_id), FOREIGN KEY (student_id) REFERENCES Student(student_id), FOREIGN KEY (course_id) REFERENCES Course(course_id) ); CREATE TABLE Score ( student_id INT, course_id INT, score INT, PRIMARY KEY (student_id, course_id), FOREIGN KEY (student_id) REFERENCES Student(student_id), FOREIGN KEY (course_id) REFERENCES Course(course_id) ); CREATE TABLE Class ( class_id INT PRIMARY KEY, name VARCHAR(50), department_id INT, FOREIGN KEY (department_id) REFERENCES Department(department_id) ); CREATE TABLE Department ( department_id INT PRIMARY KEY, name VARCHAR(50) ); CREATE TABLE Teach ( teacher_id INT, course_id INT, time VARCHAR(50), location VARCHAR(50), PRIMARY KEY (teacher_id, course_id), FOREIGN KEY (teacher_id) REFERENCES Teacher(teacher_id), FOREIGN KEY (course_id) REFERENCES Course(course_id) ); ``` 以上是基于学生选课系统设计的数据库,包含八张表,每个表都满足第三范式,并使用MySQL语言实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值