測試面試必會sql(1)
測試一般各種查詢語句用的較多,下面的查詢語句都是需要熟悉的
Course表
Score表
Student表
Teacher表
1,查詢課程編號為“02”的總成績
SELECT * FROM `Score` where c_id=02;
2,查詢課程編號為“01”的課程比“02”的課程成績高的所有學生的學號
SELECT st.*,a.s_core,b.s_core
FROM Student st
INNER JOIN (SELECT s_id,s_core from Score where c_id='01') a ON st.s_id=a.s_id
INNER JOIN (SELECT s_id,s_core FROM Score WHERE c_id='02') b ON a.s_id=b.s_id
WHERE a.s_core>b.s_core;
3,查詢沒學過“張三”老師課的學生的學號、姓名
SELECT st.s_id,st.s_name
from Student st
WHERE st.s_id not in
(SELECT sc.s_id from Score sc INNER JOIN Course co on sc.c_id=co.c_id
INNER JOIN Teacher te on te.t_id=co.t_id
WHERE te.t_name='張三');
4,查詢沒有學全所有課的學生的學號、姓名
SELECT st.s_id,st.s_name FROM Student st
INNER JOIN Score sc on st.s_id=sc.s_id
GROUP BY st.s_id HAVING COUNT(c_id)<(SELECT COUNT(DISTINCT c_id)from Course);
5,查詢平均成績大於60分的學生的學號和平均成績
SELECT s_id as "學號",avg(s_core) as "平均成績" from Score GROUP BY s_id HAVING avg(s_core)>60
6,查詢所有學生的學號、姓名、選課數、總成績
SELECT Student.s_id,Student.s_name,count(Score.c_id),sum(Score.s_core)
FROM Student
JOIN Score
on Student.s_id=Score.s_id
GROUP BY Student.s_id;
7,查詢姓“猴”的老師的個數
SELECT count(t_id)
FROM `Teacher`
where t_name like"猴%";
8,查詢學過“張三”老師所教的所有課的同學的學號、姓名
SELECT st.s_id as '學號',st.s_name as '名稱'
from Student st
WHERE st.s_id in
(SELECT sc.s_id from Score sc INNER JOIN Course co on sc.c_id=co.c_id
INNER JOIN Teacher te on te.t_id=co.t_id
WHERE te.t_name='張三');
9,查詢學過編號為“01”的課程並且也學過編號為“02”的課程的學生的學號、姓名
SELECT *
FROM Student St
INNER JOIN Score Sc
on Sc.s_id=St.s_id
WHERE c_id = '01'and c_id ='02';
10,查詢至少有一門課與學號為“01”的學生所學課程相同的學生的學號和姓名
SELECT st.s_id,st.s_name
from Student st
INNER JOIN Score sc
on st.s_id=sc.s_id
WHERE c_id IN (SELECT c_id from Score where s_id = 01) and st.s_id <> 01
GROUP BY st.s_id