1.查询平均成绩大于等于60分的同学的编号,Sid 以及学生姓名Sname 和平均成绩
第一步先查询出平均成绩大于60的全部信息
此题知识点,GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组。group by后面不能接where,having代替了where
Select * from sc group by sid having avg(score)>60;
第二部添加student表中的name(用内连接,因为需要查询大于60分的同学的姓名,需要关联students表)
Select c.sid,s.sname,avg(score) from student s inner join sc c on s.sid=c.sid group by c.sid having avg(score)>60;
2.查询sc表存在成绩的学生信息
--右连接 以=号右边的表为主表 显示右边表的全部信息(包括等值的,不等值的)
select s.*,c.* from student s right join sc c on s.sid=c.sid;
3.查询所有同学的学生信息 ,每个学生选课的总数,每个学生所有课程总成绩 没成绩的显示null;
第一步查询所有同学的信息(用左外连接因为,因为没显示成绩为空,要以student表为准)
select * from student;
第二歩 查询每个学生选课的总数
select count(c.CId) as coursecount from sc c GROUP BY c.SId;
第三部查询所有课程的总成绩
select sum(c.score)as sumscore from sc c GROUP BY c.Sid;
第四部:汇总
select s.sid,s.sname,count(c.CId) as coursecount,sum(c.score)as sumscore from student s left Outer join sc c on s.sid=c.sid group by c.sid;
=================================================
4.查询姓李老师的信息
Select * From Teacher Where TName like '李%';
查询名字中含有”李”字的学生信息
select * from teacher where Tname like '%李%';