查询01课程比02课程成绩高的学生信息及其分数

简介: 查询01课程比02课程成绩高的学生信息及其分数

公众号merlinsea


  • 准备工作
  • 数据库这里使用的是mysql版本是8.0.25
  • 这里是用navicat工具连接数据库
  • 创建表和插入数据
# 学生表
create table Student(
SId varchar(10),
Sname varchar(10),
Sage datetime,
Ssex varchar(10)
);
# 教师表
create table Teacher(
TId varchar(10),
Tname varchar(10)
);
# 科目表
create table Course(
CID varchar(10),
Cname nvarchar(10),
TId varchar(10)
);
# 成绩表
create table SC(
SId varchar(10),
CID varchar(10),
score decimal(18,1)
);
#学生表
insert into Student values('01','赵雷','1990-01-01','男');
insert into Student values('02','钱电','1990-12-21','男');
insert into Student values('03','孙风','1990-05-20','男');
insert into Student values('04' ,'李云','1990-08-06','男');
insert into Student values('05','周梅','1991-12-01','女');
insert into Student values('06','吴兰','1992-03-01','女');
insert into Student values('07','郑竹','1999-07-01','女');
insert into Student values('09','张三','2017-12-20','女');
insert into Student values('10','李四','2017-12-25','女');
insert into Student values('11','李四','2017-12-30','女');
insert into Student values('12','赵六','2017-01-01','女');
insert into Student values('13','孙七','2018-01-01','女');
#科目表Course
insert into Course values('01','语文','02');
insert into Course values('02','数学','01');
insert into Course values('03','英语','03');
#教师表
insert into Teacher values('01','张三');
insert into Teacher values('02','李四');
insert into Teacher values('03','王五');
#成绩表
insert into SC(CId,score,SId) values('01',110.5,'01');
insert into SC(CId,score,SId) values('02',33.5,'01');
insert into SC(CId,score,SId) values('03',90.2,'01');
insert into SC(CId,score,SId) values('01',79,'02');
insert into SC(CId,score,SId) values('02',19,'02');
insert into SC(CId,score,SId) values('03',59,'02');
insert into SC(CId,score,SId) values('01',120,'03');
insert into SC(CId,score,SId) values('02',110,'03');
insert into SC(CId,score,SId) values('03',100,'03');

表结构如下

640.jpg

  • 表关系如下

640.jpg

  • 查询01课程比02课程成绩高的学生信息及其分数


select *
from Student 
inner join sc sc1 
on student.sid = sc1.sid   // student 和 sc表进行第一次连接 第1次连接后可以在一行记录中出现学生信息和课程信息
inner join sc sc2
on student.sid = sc2.sid    // 连接结果 和 sc表进行第二次连接,第2次连接后一行记录中可以出现学生信息,课程1信息,课程2信息
where sc1.cid = '01' and sc2.cid='02' and sc1.score > sc2.score;  // 筛选结果,把一条记录中同时出现课程1和课程2的记录过滤出来,并选出课程1分数高于课程2的


  • 查询同时选了01课程和02课程的学生情况
select student.*
from Student
inner join sc sc1
on student.sid = sc1.sid
inner join sc sc2
on student.sid = sc2.sid
where sc1.cid = '01' and sc2.cid = '02';// 过滤出其中一门课程等于01,另一门课程等于02的课程
  • 连接方式对比
  • inner join... on ...
  • 特点:只会保留两边都存在的字段,对于其中一边不存在的字段的记录会进行舍弃
select *
from student 
inner join sc
on student.sid = sc.sid;

640.jpg

  • where
  • 特点:只会保留两边都存在的字段,对于有一边不存在的字段的这种记录会进行抛弃

select
*from student,sc
where student.sid = sc.sid;

640.jpg

  • left join... on...
  • 特点:left join会以左边的表作为主表,即左边的表会全部输出,如果右边的表有匹配则进行匹配,如果右边的表没有匹配,则以空输出

select
*from student
left join sc
on student.sid = sc.sid;


640.jpg

算法训练营永久班授课,欢迎同学们参加呀~

奔跑的小梁,公众号:梁霖编程工具库

算法训练营春节价格通知,2023年2月12日


相关文章
|
8月前
有五个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出平均成绩,并存到磁盘中
有五个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出平均成绩,并存到磁盘中
114 0
|
5月前
|
SQL 数据库连接 数据库
查询每位学生成绩大于85的课程
【8月更文挑战第5天】查询每位学生成绩大于85的课程。
58 7
|
8月前
|
关系型数据库 MySQL
mysql重点题目--查询“01“课程比“02“课程成绩高的学生的信息及课程分数
mysql重点题目--查询“01“课程比“02“课程成绩高的学生的信息及课程分数
190 0
|
8月前
|
关系型数据库 MySQL
Mysql强化练习-难题之查询所有课程的成绩第2名到第3名的学生信息及该课程成绩
Mysql强化练习-难题之查询所有课程的成绩第2名到第3名的学生信息及该课程成绩
129 0
成绩排序 给出班里某门课程的成绩单,请你按成绩从高到低对成绩单排序输出,如果有相同分数则名字字典序小的在前。
成绩排序 给出班里某门课程的成绩单,请你按成绩从高到低对成绩单排序输出,如果有相同分数则名字字典序小的在前。
660 0
学生成绩管理(下)
学生成绩管理是学校教务部门日常工作的重要组成部分,其处理信息量很大。本项目是对学生成绩管理的简单模拟,用菜单选择方式完成下列功能:输入学生数据;输出学生数据;学生数据查询;添加学生数据;修改学生数据;删除学生数据。
|
Python
python实现简易的学生成绩管理
python实现简易的学生成绩管理
139 0
|
存储 人工智能 C语言
学生成绩管理(上)
学生成绩管理 1.项目简介 学生成绩管理是学校教务部门日常工作的重要组成部分,其处理信息量很大。本项目是对学生成绩管理的简单模拟,用菜单选择方式完成下列功能:输入学生数据;输出学生数据;学生数据查询;添加学生数据;修改学生数据;删除学生数据。
143 0
输入5个同学的3门课程成绩,计算各门课程的总分及平均分
输入5个同学的3门课程成绩,计算各门课程的总分及平均分
490 0
输入5个同学的3门课程成绩,计算各门课程的总分及平均分