MySQL 筆試題
阿新 • • 發佈:2018-11-15
表和表間關係圖:
題目及答案:(未完,待續。。。)
-- 1、課程1成績大於課程2成績的學生學號 select S,score from sc where c=1; select S,score from sc where c=2; select a.s from (select S,score from sc where c=1) a, (select S,score from sc where c=2) b where a.score > b.score and a.s=b.s; -- 2、查詢平均成績大於80 學生學號和平均成績 select S,Avg(score) from SC group by S having Avg(score) > 60 ; -- 3、查詢所有同學的學號、姓名、選課數、總成績; select student.S,student.Sname,count(sc.C),sum(score) from student left JOIN sc on student.S=sc.S group by student.s; -- 4、查詢姓“李”的老師的個數; select count(distinct(Tname)) from teacher where Tname like '%李%'; -- 5、查詢沒學過“陳”老師課的同學的學號、姓名; select SC.s from teacher,course,sc where Tname like '%陳%' and teacher.T=course.T and course.c=sc.c; select student.s,student.sname from student where student.s not in (select distinct(SC.s) from teacher,course,sc where Tname like '%陳%' and teacher.T=course.T and course.c=sc.c); -- 6、查詢學過“1”並且也學過編號“3”課程的同學的學號、姓名; -- 方法1 select student.s,student.sname from student where student.s in ( select sc_2.s as SSS from sc,(select s from sc where sc.C=3) sc_2 where sc.s=sc_2.s and sc.c=1); -- 方法2 select Student.S,Student.Sname from Student,SC where Student.S=SC.S and SC.C=1 and exists( select * from SC as SC_2 where SC_2.S=SC.S and SC_2.C=3); -- exists 在乎的是是否有結果集返回 -- not exists -- 7、查詢學過“4寧老師”老師所教的所有課的同學的學號、姓名; select sc.s from sc,teacher,course where teacher.Tname='4寧老師' and course.T=teacher.T and sc.C=course.c; -- 方法1 select student.s,student.sname from student where student.s in (select sc.s from sc,teacher,course where teacher.Tname='4寧老師' and course.T=teacher.T and sc.C=course.c); -- 方法2 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='4寧老師' group by S having count(SC.C)=(select count(C) from Course,Teacher where Teacher.T=Course.T and Tname='4寧老師')); -- 8、查詢課程編號“2”的成績比課程編號“1”課程低的所有同學的學號、姓名; select s,score from sc where sc.c=1; select s,score from sc where sc.c=2; -- 方法1 select s,sname from student where student.s in( select s1.s from (select s,score from sc where sc.c=1) s1,(select s,score from sc where sc.c=2) s2 where s1.s=s2.s and s1.score > s2.score ); -- 方法2 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=2) score2 from Student,SC where Student.S=SC.S and C=1) s_2 where score2 < score; -- 9、查詢所有課程成績小於60分的同學的學號、姓名; select distinct(s) from sc where score <= 60; select S,Sname from student where student.S in (select distinct(S) from sc where score < 60); -- 10、查詢沒有學全所有課的同學的學號、姓名; select count(c) from course ; select s from sc GROUP BY s having count(c) < (select count(c) from course ); -- 方法1 select s,sname from student where student.s in (select s from sc GROUP BY s having count(c) < (select count(c) from course )); -- 方法2 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);