当前位置:Gxlcms > 数据库问题 > 数据库多表查询及索引

数据库多表查询及索引

时间:2021-07-01 10:21:17 帮助过:12人阅读

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

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   课程   

人气教程排行