- 查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩(没成绩的显示为 null )
SELECT s.sid,s.sname,r.cum,r.scorenum FROM
(SELECT Student.sid,Student.sname FROM Student)s
LEFT JOIN
(SELECT SC.SId,SUM(SC.score)scorenum,COUNT(SC.CId)cum FROM SC GROUP BY SC.SId)r
ON s.sid = r.sid
- 查有成绩的学生信息
SELECT FROM Student WHERE Student.SId IN (SELECT SC.SId FROM SC)
SELECT FROM Student WHERE EXISTS(SELECT SC.SId FROM SC WHERE Student.SId = SC.SId)
- 查询「李」姓老师的数量
SELECT COUNT(TID) FROM Teacher WHERE Tname LIKE ‘李%’
- 查询学过「张三」老师授课的同学的信息
SELECT S.* FROM SC,Course C ,Student S ,Teacher T
WHERE S.SId = SC.SId
AND SC.CId = C.CId
AND C.TId = T.TId
AND T.Tname = ‘张三’
- 查询没有学全所有课程的同学的信息
因为有学生什么课都没有选,反向思考,先查询选了所有课的学生,再选择这些人之外的学生.
SELECT * FROM Student WHERE Student.SId NOT IN(
SELECT SC.SId FROM SC GROUP BY SC.SId HAVING COUNT(SC.CId) = (SELECT COUNT(CId) FROM Course)
)
