數據庫 多表查詢

針對數據庫單表查詢的三張表進行查詢:

//查詢未選課的學生情況包含學生學號、姓名和所在系;
select Student.Sno 學號,Sname 姓名,Sdept 系,Cno 課程號 
    from Student 
    left outer join SC on(Student.Sno=SC.Sno) 
    where cno is null;

//查詢已選課學生的選課情況包含學生學號、姓名、所選課程、成績; 
select Student.Sno 學號,Sname 姓名,Cname 課程號,Grade 成績 
    from Student ,SC,Course 
    where (Student.Sno=SC.Sno) and (SC.Cno=Course.Cno);

//查詢所有學生的選課情況包含學生學號、姓名、課程號、課程名、成績;(包含選課和未選課所有學生);
select Student.Sno 學號,Sname 姓名,Cname 課程號,Grade 成績 
    from Student 
    left outer join SC on(Student.Sno=SC.Sno) 
    left outer join Course on(SC.Cno=Course.Cno);

//查詢沒有學生選的課程信息包含課程號、課程名
select Course.Cno 課程號,Cname 課程名,Sno 學號 
    from SC 
    right outer join Course on(SC.Cno=Course.Cno) 
    where Sno is null;

//查詢已被選擇課程的課程信息包含課程號、課程名、學生學號、姓名、成績;
select Course.Cno 課程號,Cname 課程名,Student.Sno 學號 ,Sname 學生姓名,Grade 成績 
    from SC,Student,Course 
    where (SC.Cno=Course.Cno) and (Student.Sno=SC.Sno);

//查詢所有課程的選課情況包含課程號、課程名、學生學號、姓名、成績;(包含沒有學生選課的課程)
select Course.Cno 課程號,Cname 課程名,Student.Sno 學號 ,Sname 學生姓名,Grade 成績 
    from Student
    right outer join SC on(Student.Sno=SC.Sno) 
    right outer join Course on(SC.Cno=Course.Cno);

//查詢每個學生選課的總學分,並按總學分的降序排列;
select sum(Ccredit) 總學分,Sno 
    from SC,Course where SC.Cno=Course.Cno 
    group by Sno 
    order by(sum(Ccredit))desc;

//查詢選修了數據庫課程且成績在60分以下的學生的學號、姓名、課程名及成績;
select Student.Sno 學號,Sname 學生姓名,Sdept 系,Course.Cno 課程號,Grade 成績 
    from Student,SC,Course 
    where (SC.Cno=Course.Cno) and (SC.Sno=Student.Sno) and Grade < 60 and Cname='數據庫';

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章