1、查詢課程編號“001”比課程編號“002” 成績高的所有學生的學號****
#把兩個表同時放過來(並且都命名一個新的名字)一起查,
#1先找出所有包含學科為1 和學科為2 的學生 以便後續引用select * from score where c_id=‘1‘;select * from score where c_id=‘2‘ #2 正式的代碼select A.s_id from (select * from score where c_id=‘1‘)as A, #同時引入兩個表,並給表命名一個新的暱稱 A 暱稱B (select * from score where c_id=‘2‘) as B where A.s_id=B.s_id and A.s_score>B.s_score# 當滿足即學學科1又學學科2 並且學科1的成績大於學科二的成績時,就顯示出來
2、查詢平均成績大於60分的同學的學號和平均成績;
SELECT s_id,avg(s_score) from score GROUP BY s_id having avg(s_score)>60 #group by 語句前邊不能寫where
3、查詢所有同學的學號、姓名、選課數、總成績;
SELECT s_id,count(SC.c_id),sum(s_score) from score SC,student ST WHERE ST.s_id1=SC.s_id GROUP BY s_id #兩表聯集查詢要讓這兩個表的學生id 關聯起來
4、查詢含有"子"的老師的個數;
SELECT count(1) from teacher where t_name like‘%子%‘ #count(1) 相當與給後邊查出來的資料計數
5、查詢沒學過“老子”老師課的同學的學號、姓名;
##SELECT c_id from course co,teacher te where co.t_id=te.t_id and te.t_name=‘老子‘ #找到老子老師交的課程SELECT DISTINCT st.s_id1,st.s_name from score S,student st where S.s_id not in(SELECT s_id from score where c_id in (SELECT c_id from course co,teacher te where co.t_id=te.t_id
and te.t_name=‘老子‘)) and st.s_id1=S.s_id #注意distinct的用法 可以去重 #先找出學過老子課程的學生,然後從總score表中尋找(不屬於學過老子課程的學生)沒有學老子課程的學生 然後再關聯到學生的表格中
6、查詢學過“001”並且也學過編號“002”課程的同學的學號、姓名;
#1 先找到學過1 的和學過2 的學生ID****SELECT s_id from score where c_id=‘1‘;SELECT s_id from score where c_id=‘2‘SELECT distinct s_id,A.s_name from score,student A where s_id in (SELECT s_id from score where c_id=‘1‘) and s_id in(SELECT s_id from score where c_id=‘2‘) and s_id=A.s_id1## 上邊這句話 可以找出只在 in (*****) 裡邊的內容 沒有的不給出 精確性
找出即學過1也學過2的 學生ID 和學生姓名
7、查詢學過“老子”老師所教的所有課的同學的學號、姓名;
SELECT s_id,S.s_name from score,student S WHERE c_id in (SELECT c_id from teacher te,course
where te.t_name=‘老子‘ and c_id= te.t_id) and s_id=S.s_id1
8、查詢課程編號“002”的成績比課程編號“001”課程低的所有同學的學號、姓名;
1.先找出學兩個課程的學生SELECT s_id from score where c_id =‘1‘;SELECT s_id from score where c_id =‘2‘2再找出學兩個課程而且課程A的成績比課程2的成績高的學生姓名學號SELECT A.s_id,s_name from (SELECT * from score where c_id =‘1‘)A,(SELECT * from score where c_id =‘2‘)B,studentwhere A.s_score>B.s_score and A.s_id=B.s_id=s_id1
9、查詢有課程成績小於60分的同學的學號、姓名;
SELECT distinct st.s_id1,s_name from score sc,student st where s_score>‘60‘ and st.s_id1=sc.s_id
10、查詢沒有學全所有課的同學;
SELECT s_id1,s_name from student where s_id1 in (SELECT s_id from score GROUP BY s_id HAVING count(1) != (SELECT count(1) from course))
11、查詢至少有一門課與學號為“002”的同學所學相同的同學的學號和姓名;
select sc.c_id from score sc,student st where sc.s_id =st.s_id and sc.s_id =‘2‘
select DISTINCT st.s_id,st.s_name from score sc,student st where
st.s_id =sc.s_id and sc.c_id in(select sc.c_id from score sc where sc.s_id =‘2‘)
12、查詢學過 學號為“002”同學全部課程 的其他同學的學號和姓名;
select sc.c_id from score sc where sc.s_id = ‘2‘ select st.s_id,st.s_name from score sc,student st where sc.s_id =st.s_id and st.s_id !=‘2‘ and sc.c_id in (select sc.c_id from score sc where sc.s_id = ‘2‘) GROUP BY sc.s_id HAVING count(1) = (select count(1) from score sc where sc.s_id = ‘2‘)##學生學得課程在學生2的課程裡 且尋找出來的學生學的課程數量與學生2 學的課程數量一致
13、查詢和“002”號的同學學習的課程完全相同的,其他同學學號和姓名;
14、把“score”表中“老子”老師教的課的成績都更改為此課程的平均成績;
15、刪除學習“墨子”老師課的score表記錄;
16、按平均成績從高到低顯示所有學生的“python”、“java”、“linux”三門的課程成績,按如下形式顯示: 學生ID,python,java,linux,有效課程數,有效平均分
17、查詢各科成績最高和最低的分:以如下形式顯示:課程ID,最高分,最低分
18、按各科平均成績從低到高和及格率的百分數從高到低順序
19、查詢老師所教課程平均分從高到低顯示,並顯示老師的名稱及課程名稱
20、統計列印各科成績,各分數段人數:課程ID,課程名稱,[100-85],[85-70],[70-60],[ <60]
21、查詢每門課程被選修的學生數.
22、查詢出只選修了一門課程的學生的學號和姓名
23、查詢學生表中男生、女生人數
24、查詢姓“張”的學生名單
25、查詢同名學生名單,並統計同名人數
26、查詢每門課程的平均成績,結果按平均成績升序排列,平均成績相同時,按課程號降序排列
27、查詢平均成績大於85的所有學生的學號、姓名和平均成績
28、查詢課程名稱為“python”,且分數低於60的學生姓名和分數
29、查詢所有學生的選課情況,顯示 學生編號,學生姓名,所選課程名稱
30、查詢任何一門課程成績在70分以上的姓名、課程名稱和分數;
31、查詢不及格的課程,並按課程號從大到小排列
32、查詢課程編號為003且課程成績在80分以上的學生的學號和姓名
33、求 已選課程的學生人數
34、查詢選修“老子”老師所授課程的學生中,成績最高的學生姓名及其成績
35、查詢各個課程及相應的選修人數
36、查詢不同課程但成績相同的學生的學號、課程號、學產生績
37、檢索至少選修兩門課程的學生學號
38、查詢全部學生都選修的課程的課程號和課程名
39、查詢沒學過“老子”老師講授的任一門課程的學生姓名
40、查詢兩門以上不及格課程的同學的學號及其平均成績
41、檢索“003”課程分數小於60,按分數降序排列的同學學號
42、刪除“002”同學的“001”課程的成績