码迷,mamicode.com
首页 > 数据库 > 详细

数据库多表查询及索引

时间:2019-11-27 12:06:28      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:sid   teacher   别名   排序   均值   大于   course   cname   课程   

多表查询练习:已知三张表:

Student 学生信息表(Student(SID,Sname,Sage,Ssex)     -SID 学生编号,Sname 学生姓名,Sage 年龄,Ssex 学生性别)

SC学生课程成绩表   course课程信息表(Course(CID,Cname,TID)  --CID --课程编号,Cname 课程名称,TID 教师编号)  

teacher表(Teacher(TID,Tname)   --TID 教师编号,Tname 教师姓名)

course课程表(CID,Cname,TID)      --CID --课程编号,Cname 课程名称,TID 教师编号)

技术图片

 

 

技术图片

 

 

1.查询"01"课程比"02"课程成绩高的学生的信息及课程分数
select a.*,b.score as ‘01课程分数’,c.score as ‘02课程分数’       //as取别名
 from student a,SC b,SC c
 where a.SID = b.SID and a.SID = c.SID and b.CID = 1 and c.CID = 2 and b.score > c.score;

技术图片

 

2、查询平均成绩大于等于60分的同学的学生编号和学生姓名和平均成绩
select a.SID , a.Sname ,avg(b.score) avg_score
from Student a,SC b
where a.SID = b.SID group by a.SID  having avg(b.score) >= 60;  //因为要根据每一个的成绩作平均值再排序,所以用到group by

技术图片

 

 3、查询在sc表中不存在成绩的学生信息。
select * from Student where SID not in (select distinct SID from SC);

技术图片

 

 4、查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩
select a.SID, a.Sname,count(b.CID) as count, sum(b.score) as sum_score
from Student a, SC b
where a.SID = b.SID group by a.SID;

技术图片

 

 5.查找有成绩但不是学生的学生学号、课程号、成绩

select *from SC where SID not in(select distinct SID from student) 

技术图片

 

 6.查询李姓老师的数量

技术图片

 

 

数据库多表查询及索引

标签:sid   teacher   别名   排序   均值   大于   course   cname   课程   

原文地址:https://www.cnblogs.com/laurarararararara/p/11940993.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!