記錄網上看到的sql面試題,自己填寫答案

參考原貼鏈接:http://www.cnblogs.com/edisonchou/p/3878135.html
裏面也有作者寫的答案

表的結構
    Student(S#,Sname,Sage,Ssex)    學生表
    Course(C#,Cname,T#)        課程表
    SC(S#,C#,score)           成績表
    Teacher(T#,Tname)         教師表

1.創建對應的表
create table student(
s# int,
sname varchar(32),
sage int,
ssex varchar
)以下省略
2.插入數據
insert into student select 1,'張三',18,‘男’ union all
select 2,'李四',18,‘男’ union all ....
3.查詢“001”課程比“002”課程成績高的所有學生的學號;
select a.s#' from sc a,sc b where a.c#=001 and b.c#`=002 and a.score>b.score;

4.查詢平均成績大於60分的同學的學號和平均成績;
select s#,avg(score) from sc group by s# having avg(score)>60
5.查詢所有同學的學號、姓名、選課數、總成績;
select a.s#,a.sname,count(b.c#),sum(score) from student a,sc b where a.s#=b.s# group by a.s#
6.查詢姓“李”的老師的個數;
select count(tname) from teacher where tname like '李%'
7.查詢沒學過“葉平”老師課的同學的學號、姓名;
select s#,sname from student where s# not in(select a.s# from student a ,teacher,course,sc WHERE teacher.tname='葉平'and course.t#=teacher.t# and sc.c#=course.c#and a.S#=sc.s#)
8.查詢學過“001”並且也學過編號“002”課程的同學的學號、姓名;
select student.s#,student.sname from student,sc a where a.c#=001 and student.s#=a.s# and EXISTS (select * from student,sc b where b.c#=002 and b.s#=a.s#)
9.查詢學過“葉平”老師所教的所有課的同學的學號、姓名;
select a.s#,a.sname from student a ,teacher,course,sc WHERE teacher.tname='葉平'and course.t#=teacher.t# and sc.c#=course.c#and a.S#=sc.s#
記錄網上看到的sql面試題,自己填寫答案
10.查詢課程編號“002”的成績比課程編號“001”課程低的所有同學的學號、姓名
SELECT student.s#,student.sname from student,sc s1,sc s2 where s1.c#=001 and s2.c#=002 and s1.score>s2.score and s1.s#=student.s# and s1.s#=s2.s#
記錄網上看到的sql面試題,自己填寫答案
11.查詢有課程成績小於60分的同學的學號、姓名;
SELECT DISTINCT(student.s#),student.sname from student,sc s1 where s1.s#=student.s# and s1.score < 60
記錄網上看到的sql面試題,自己填寫答案
12.查詢沒有學全所有課的同學的學號、姓名;
SELECT st.s#,st.sname from student st where st.s# not in (select sc.S# from SC sc group by sc.S# having COUNT(distinct sc.C#)=(SELECT COUNT(c#) from course))
記錄網上看到的sql面試題,自己填寫答案
13.查詢至少有一門課與學號爲“001”的同學所學相同的同學的學號和姓名;
select distinct(s.S#),s.Sname from student s,course,sc where s.s#=sc.s# and sc.c#=any (select distinct(sc.c#) from sc where sc.s#='001' )
記錄網上看到的sql面試題,自己填寫答案
14.查詢至少學過學號爲“001”同學所有一門課的其他同學學號和姓名;
select distinct(s.S#),s.Sname from student s,course,sc where s.s#=sc.s#and sc.s#!='001' and sc.c#=any (select distinct(sc.c#) from sc where sc.s#='001' )
記錄網上看到的sql面試題,自己填寫答案
15.把“SC”表中“葉平”老師教的課的成績都更改爲此課程的平均成績;
16.查詢和“002”號的同學學習的課程完全相同的其他同學學號和姓名;
17.刪除學習“葉平”老師課的SC表記錄;
18.向SC表中插入一些記錄,這些記錄要求符合以下條件:①沒有上過編號“002”課程的同學學號;②插入“002”號課程的平均成績;
19.按平均成績從低到高顯示所有學生的“語文”、“數學”、“英語”三門的課程成績,按如下形式顯示: 學生ID,語文,數學,英語,有效課程數,有效平均分;
20.查詢各科成績最高和最低的分:以如下形式顯示:課程ID,最高分,最低分
21.按各科平均成績從低到高和及格率的百分數從高到低順序;
22.查詢不同老師所教不同課程平均分從高到低顯示;
23.查詢如下課程成績第 3 名到第 6 名的學生成績單:企業管理(001),馬克思(002),UML (003),數據庫(004)

    [學生ID],[學生姓名],企業管理,馬克思,UML,數據庫,平均成績
24.統計列印各科成績,各分數段人數:課程ID,課程名稱,[100-85],[85-70],[70-60],[< 60] ,
25.查詢學生平均成績及其名次;
26.查詢各科成績前三名的記錄:(不考慮成績並列情況)
27.查詢每門課程被選修的學生數;
28.查詢出只選修了一門課程的全部學生的學號和姓名;
29.查詢男生、女生的人數;
30.查詢姓“張”的學生名單;
31.查詢同名同姓學生名單,並統計同名人數;
32.查詢1981年出生的學生名單(注:Student表中Sage列的類型是datetime) ;
33.查詢每門課程的平均成績,結果按平均成績升序排列,平均成績相同時,按課程號降序排列;
34.查詢平均成績大於85的所有學生的學號、姓名和平均成績
35.查詢課程名稱爲“數學”,且分數低於60的學生姓名和分數;
36.查詢所有學生的選課情況;
37.查詢任何一門課程成績在70分以上的姓名、課程名稱和分數;
38.查詢不及格的課程,並按課程號從大到小排列;
39.查詢課程編號爲003且課程成績在80分以上的學生的學號和姓名;
40.求選了課程的學生人數
41.查詢選修“楊豔”老師所授課程的學生中,成績最高的學生姓名及其成績;
42.查詢各個課程及相應的選修人數;
43.查詢不同課程但成績相同的學生的學號、課程號、學生成績;
44.查詢每門課程成績最好的前兩名;
45.統計每門課程的學生選修人數(超過10人的課程才統計)。要求輸出課程號和選修人數,查詢結果按人數降序排列,查詢結果按人數降序排列,若人數相同,按課程號升序排列
46.檢索至少選修兩門課程的學生學號;
47.查詢全部學生都選修的課程的課程號和課程名;
48.查詢沒學過“葉平”老師講授的任一門課程的學生姓名;
49.查詢兩門以上不及格課程的同學的學號及其平均成績;
50.檢索“004”課程分數小於60,按分數降序排列的同學學號;
51.刪除“002”同學的“001”課程的成績;

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