數(shù)據(jù)庫面試題:
Student(S#,Sname,Sage,Ssex) 學(xué)生表 S#:學(xué)號(hào);Sname:學(xué)生姓名;Sage:學(xué)生年齡;Ssex:學(xué)生性別
Course(C#,Cname,T#) 課程表 C#,課程編號(hào);Cname:課程名字;T#:教師編號(hào)
SC(S#,C#,score) 成績表 S#:學(xué)號(hào);C#,課程編號(hào);score:成績
Teacher(T#,Tname) 教師表 T#:教師編號(hào); Tname:教師名字
問題:
1、查詢“001”課程比“002”課程成績高的所有學(xué)生的學(xué)號(hào);
select a.S# from (select s#,score from SC where C#='001') a,(select s#,score
from SC where C#='002') b
where a.score>b.score and a.s#=b.s#;
2、查詢平均成績大于60分的同學(xué)的學(xué)號(hào)和平均成績;
select S#,avg(score)
from sc
group by S# having avg(score) >60;
3、查詢所有同學(xué)的學(xué)號(hào)、姓名、選課數(shù)、總成績;
select Student.S#,Student.Sname,count(SC.C#),sum(score)
from Student left Outer join SC on Student.S#=SC.S#
group by Student.S#,Sname
4、查詢姓“李”的老師的個(gè)數(shù);
select count(distinct(Tname))
from Teacher
where Tname like '李%';
5、查詢沒學(xué)過“葉平”老師課的同學(xué)的學(xué)號(hào)、姓名;
select Student.S#,Student.Sname
from Student
where S# not in (select distinct( SC.S#) from SC,Course,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname='葉平');
6、查詢學(xué)過“001”并且也學(xué)過編號(hào)“002”課程的同學(xué)的學(xué)號(hào)、姓名;
select Student.S#,Student.Sname from Student,SC where Student.S#=SC.S# and SC.C#='001'and exists( Select * from SC as SC_2 where SC_2.S#=SC.S# and SC_2.C#='002');
7、查詢學(xué)過“葉平”老師所教的所有課的同學(xué)的學(xué)號(hào)、姓名;
select S#,Sname
from Student
where S# in (select S# from SC ,Course ,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname='葉平' group by S# having count(SC.C#)=(select count(C#) from Course,Teacher where Teacher.T#=Course.T# and Tname='葉平'));
8、查詢課程編號(hào)“002”的成績比課程編號(hào)“001”課程低的所有同學(xué)的學(xué)號(hào)、姓名;
Select S#,Sname from (select Student.S#,Student.Sname,score ,(select score from SC SC_2 where SC_2.S#=Student.S# and SC_2.C#='002') score2
from Student,SC where Student.S#=SC.S# and C#='001') S_2 where score2
9、查詢所有課程成績小于60分的同學(xué)的學(xué)號(hào)、姓名;
select S#,Sname
from Student
where S# not in (select Student.S# from Student,SC where S.S#=SC.S# and score>60);
10、查詢沒有學(xué)全所有課的同學(xué)的學(xué)號(hào)、姓名;
select Student.S#,Student.Sname
from Student,SC
where Student.S#=SC.S# group by Student.S#,Student.Sname having count(C#) <(select count(C#) from Course);
11、查詢至少有一門課與學(xué)號(hào)為“1001”的同學(xué)所學(xué)相同的同學(xué)的學(xué)號(hào)和姓名;
select S#,Sname from Student,SC where Student.S#=SC.S# and C# in select C# from SC where S#='1001';