sql刷題
⑴ sql簡單習題兩道
1:select "書名","定價" from "圖書館"
where "定價" = (select top 1 "定價" from "圖書館" desc as '定價')
//就是要查出定價最高的價格,可以對定價排序,取到,這個你可以自己實踐下,我忘了命令了,本機上沒裝SQL
2:就是要你查出 藏有 發行「書名=『資料庫系統基礎』」的圖書館館名
3:select CNAME,TEACHER from c where C# =
(select C# from SC where S# = '10001')
⑵ 用SQL語句做題。謝謝啦。。
一(1):SQL>select * from 學生表;
or select 學號,姓名,專業 from 學生表;
(2)SQL>select 姓名 from 學生表 where 學號=』A050040012』;
(3)SELECT TOP 5 * FROM 成績表
(4)select 學號,姓名,課程號,成績 from 學生表,成績表,課程表 where 學生表.學號=成績表.學號and 課程表.課程號=成績表.課程號;
(5)select 學號,成績 from 學生表,成績表
where 學生表.學號=成績表.學好 and 課程號=』02』and 成績>=80;
(6)select學號,成績 from 成績表 where 課程號=』03』and 成績 between 75 and 85; 其他=下 太多了 一時做不來
二(1)INSERT INTO 成績表 values('A050010012','02','','80');
(2)UPDATE 學生表 SET 班級=』0012』,專業=』計算機應用』
where 姓名 IN
(SELECT 姓名 FROM 學生表
WHERE 姓名=』王瑋』);
(3)UPDATE 成績表 SET 成績=92
WHERE 姓名 IN
(SELECT 姓名=李麗);
(4)DELETE FROM 成績表,學生表
WHERE 學號 IN
(SELECT 學號 FROM 學生表,成績表
WHERE 學生表.學號=成績表.學號AND 學號=』A050010025』);
(5)CREATE UNQUE INDEX INDEX-1
ON 成績表(學生表,課程表);
如果還沒解決你的問題,可以加我網路HI賬號。
⑶ sql簡單試題懂得來大神們幫幫忙
問題一: Create table 運動員( 運動員編號 char(6) ___not null_____ primary key ____, 姓名varchar(40), 性別char(2)____constraint chk1 _ check(性別='男' or 性別='女')________, 年齡char(2), 隊名char(20), __constraint chk2__ check(隊名('A隊'B隊'C隊'D隊))_______; ) (我不知道最後那些算不算是空格,是的話,你可以追問....) 問題二: (1) 統計參加比賽時女運動員的人數。 Select _count(運動員編號) as 參賽女運動員_ From 運動員 Where 性別=『女』; (2) 查詢100576 號運動員參加的所有項目名稱及其比賽的時間和地點。 Select 項目編號,項目名,比賽時間,比賽場地 From ___項目 a ,參賽 b__ Where _____a.項目編號=b.項目編號________ And _______b.運動員編號='100576'______; 如有疑問請追問....
⑷ SQL資料庫練習題~
1.select name from 學生
where 系別='數學系' and 性別='女';
2.select a.name from 學生 a inner join 選課 b
on a.學號=b.學號
where 成績<60;
3.select a.name from 學生 a inner join 選課 b
on a.學號=b.學號
where avg(成績)>=95;
4.select a.name from 學生 a inner join 選課 b
on a.學號=b.學號
where (select b.成績 from 課程 c inner join 選課 b
on c.課程號=b.課程號 where 課程名='SQL Server 2000')<60
5.update 學生
set 年齡=年齡+1;
⑸ 急求SQL資料庫練習題
樓上的--理論很多不太使用:ㄨinsert -增加語句用法 insert into(Name,Sec)values("張三","李四") --這個語句1.習題:插入學員信息 Name,Sex,Age,Address (地址可為null) 要有自動標識列。 2.實現一次插入多行。3.把原有表中的某個欄位 移到新表中 提示:select <欄位> into newtable from <原表> ㄨdelecte --刪除語句delecte from <表> [where<條件>]例題:上表中 --刪除 年齡是66和地址為null 信息 (年齡與地址自己添加) ㄨupdate--更新語句update set <條件> where[限制條件]例題:把年齡大於50歲的 更新為49歲 其餘條件自己加 ㄨselect --查詢語句select <欄位1>,<欄位2> from <表> where [條件]例題:從表1、表2中查找相同欄位並且 把相同欄位存放到新的表中這里子查詢就不多說了。這些題很基礎你試一試。
⑹ sql資料庫練習題,急求!!!
創建一個選擇查詢,按系別統計各自男女學生的平均年齡
SELECT
系,
性別,
AVG(年齡) AS 平均年齡
FROM
表
GROUP BY
系,
性別
上面是用 SQL 的處理方法。
樓主要求 「最好不是SQL啊」, 不知道樓主 希望是用什麼?
一步一步操作?
那要說明是什麼資料庫啊.
如果是 Access的話, 操作順序是這樣的:
1、創建一個查詢
2、在《顯示表》窗口裡面,把那個表 選中,按 添加按鈕。
3、關閉《顯示表》窗口, 進入設計窗口。
4、在表中,雙擊 系, 性別, 年齡 這3列, 加到下面的列表中。
5、在下面列表的地方,滑鼠右鍵,在彈出窗口,選擇 「匯總」
6、修改 年齡下面的 Group By, 變成 「計算」 注意,不是「總計」。
7、運行查詢。
⑺ 哪裡可以刷SQL題
在瀏覽器中輸入localhost:埠號/phpmyadmin安裝包/index.php,回車,輸入連接資料庫的用戶名和密碼,點擊執行,連接資料庫,出現如圖,可以實現圖形化管理mysql資料庫!
⑻ 計算機SQL語言試題
(一)現有關系資料庫如下: 資料庫名:我班同學資料庫同學表(學號 char(6),姓名,性別,年齡,民族,身份證號,宿舍號) 宿舍表(宿舍號 char(6),宿舍電話) 用SQL語言實現下列功能的sql語句代碼:1.創建資料庫[我班同學資料庫]代碼。2.創建數據表[宿舍表]代碼; 宿舍表(宿舍號 char(6),宿舍電話) 要求使用:主鍵(宿舍號)、宿舍電話:以633開頭的7位電話號碼3.創建數據表[同學表]代碼; 同學表(學號 char(6),姓名,性別,年齡,民族,身份證號,宿舍號) 要求使用:主鍵(學號)、外鍵(宿舍號)、默認(民族)、非空(民族,姓名,年齡)、唯一(身份證號)、檢查(性別)4.將下列宿舍信息添加到宿舍表的代碼 宿舍號 宿舍電話 101 6331157 102 6331777 修改 宿舍號為101的 宿舍電話:6331158 刪除 宿舍號為102的 宿舍信息5.創建視圖[同學表視圖]代碼; 同學表視圖(學號, 姓名, 性別, 年齡, 民族, 身份證號, 宿舍號, 宿舍電話)6.從同學表視圖中查詢姓張的女同學的姓名、性別、宿舍電話。7.從同學表中查詢女同學的最大年齡、最小年齡、平均年齡。8.創建帶參數的存儲過程[某宿舍同學]:姓名, 性別, 宿舍電話 執行此過程,查詢'101'宿舍情況 (二) 現有關系資料庫如下: 資料庫名:學生成績資料庫學生表(學號 char(6),姓名,性別,民族,身份證號) 課程表(課號 char(6),名稱) 成績表(ID,學號,課號,分數) 用SQL語言實現下列功能的sql語句代碼:1.創建資料庫[學生成績資料庫]代碼 ;2.創建[課程表]代碼 ; 課程表(課號 char(6),名稱) 要求使用:主鍵(課號)、非空(名稱)3. 創建[學生表]代碼 ; 學生表(學號 char(6),姓名,性別,民族,身份證號) 要求使用:主鍵(學號)、默認(民族)、非空(民族,姓名)、唯一(身份證號)、檢查(性別)4. 創建[成績表]代碼 ; 成績表(ID,學號,課號,分數) 要求使用:主鍵(課號)、外鍵(成績表.學號,成績表.課號)、檢查(分數),自動編號(ID)5. 將下列課程信息添加到課程表的代碼 課號 課程名稱 100001 大學語文 100002 大學英語 100003 西班牙語 修改 課號為100002的課程名稱:實用英語 刪除 課號為100003的課程信息 6. 寫出創建:成績表視圖(學號,姓名,課號,課程名稱,分數)的代碼; 8. 寫出創建:某門課程高低均分 計算某門課程成績最高分、最低分、平均分 存儲過程以及執行的代碼; 執行:所有修 實用英語 這門學生的最高分、最低分、平均分;9. 檢索姓李的女同學的情況:姓名、性別、民族。 10.檢索有一門或一門以上課程成績大於等於90分的所有學生的信息,包括學號、姓名。 (三)有一個[學生課程]資料庫,資料庫中包括三個表:學生表Student由學號(Sno)、姓名(Sname)、性別(Ssex)、年齡(Sage)、所在系(Sdept)五個屬性組成,記為: Student(Sno,Sname,Ssex,Sage,Sdept) ,Sno 為關鍵字。課程表Course由課程號(Cno)、課程名(Cname)、先修課號(Cpno)、學分(Ccredit)四個屬性組成,記為:Course(Cno,Cname,Cpno,Ccredit) Cno為關鍵字。 成績表SG由學號(Sno)、課程號(Cno)、成績(Grade)三個屬性組成,記為:SG(Sno Cno, Grade) (SNO, CNO)為關鍵字。用SQL語言實現下列功能:1.建立學生表Student,其中學號屬性不能為空,並且其值是唯一的。2.向Student表增加「入學時間(Scome)」列,其數據類型為日期型。3.查詢選修了3號課程的學生的學號及其成績,查詢結果按分數的降序排列。4.查詢學習1號課程的學生最高分數、平均成績。5.查詢與「李洋」在同一個系學習的學生。6.將計算機系全體學生的成績置零。
有些秘密是男人永遠不會說的,所以就不要再問了,因為再問,他們給的答案也不會是真的!
1、男人很容易喜歡一個女人,卻不輕易深愛一個女人。
2、男人在感情的王國里,絕對是個昏君。女人只要肯奉承,他什麼都答應。
3、男人普遍喜歡外表溫柔的女子,寧願把精力花在事業或其他地方,也不願全用來征服女人。
4、男人都不太重視對自己太好的女人。
5、男人都怕女人死纏爛打,但喜歡用同樣的方式對付沒追上的女人。
6、男人的夢想之一,是擁有可以超越友誼界限的紅顏知己。
7、男人會以很理性的態度取捨愛情,就算他感性上很愛一個人,但當他清楚她並非一個好妻子時,他會放棄她,另找合適家居生活的那一個。男人認為戀愛和結婚是兩回事,很多時候,他拖延結婚,根本原因就是他認為身邊的女人不是想像中的好妻子。
8、男人對妻子的要求,可能比對戀人更低——在外型上,在性格上則更高。
9、懂得欣賞聰明女人的男人不多,和她們在一起,男人總覺得缺乏安全感受。
10、當有喜歡的女人在場時,男人會有如下表現:話多;顯得聰明些;比平日慷慨;會把話題扯到得意成就上;會刻意顯露平時少見的好心腸;多說一些自以為好笑的笑話引大家發笑。
11、一個男人同時是大男人和小男人的化身。大男人的他,希望女人完全遷就他,令他放心;小男人的他,意識到自己懦弱無能的一面,猶豫不決。說穿了,他們很多都是忌妒心重的小器鬼,又像孩子般容易被哄騙。
12、男人追求女人的時候願意割捨一切自由,追到了越來越感到自由的重要性。
13、男人內心隱藏著狩獵心態,追捕,得到後就要馴服她,讓她變成可在家飼養的乖乖動物。
14、男人都有愛當英雄的自大心態,所以很容易愛上向他訴苦的女人。
15、男人希望身邊的女人明白:帶著同一個女人去所有地方,實在是一件很悶的事(或許女人也這樣覺得吧,只是不好意思說),所以和其他女人適度約會,是調劑和放鬆,完全可以沒有其他企圖。
16、兩性關系中,女人需要男人告訴她,他願意為她做任何犧牲,男人則需要女人告訴他,他很能幹。
17、男人自以為是的多情,常常是女人眼中不折不扣的薄倖。
18、在男人心底,親熱到哪個程度,就是和女人的戀情發展到什麼程度。
19、男人每隔一段時間,就有情緒和體力跌到谷底的幾天,不想見任何人,躲起來翻翻書,聽聽音樂,看看影碟或狂打電玩發泄。
20、有過戀愛經驗的男人都知道:女人是不能不騙的,類似像:「我會永遠愛你」,「我一直都會像現在這樣疼你」,「什麼時候需要我,一個電話我就立刻趕來」,「我以後再也不會像愛你這樣去愛另外一個人」這種話是必須要說但永遠堅持不了的「騙話」,誰讓女人這么愛聽呢!
21、男人遇上舊情人多半會自作多情,以為與自己有過感情的人,內心總會保存一份情,幻想愛過他的女人永遠愛他。女人只會美化眼前的男人,男人卻不自覺地美化逝去的戀情。所以男人比女人更認同:分手還是朋友。不管是甩人還是被甩,男人多半願意與前女友繼續保持聯絡。
22、女人在意男友以前的女友,男人卻在意女人離開他後找個什麼樣的男友。如果分手後仍是朋友的,他會時不時批評她的男友。
23、男人跌入愛河,很少問她的過去,不太關心她和哪種男人談過戀愛,因為男人較注重女人的外表——外表就是現在。
24、男人不願聽心上人的舊戀情,因為一想到自己愛的人之前和其他男人有過肌膚之親,就難以忍受。
25、面對兩個對自己有愛意的人,女人會在徘徊中選擇,男人不會為此煩惱——他其實只想同時追上兩個人呢!
26、男人愛上一個女人,不一定對她有強烈的親熱沖動,反倒對一些他只是喜歡而不愛的女人,沖動更大些。
27、男人很容易被女人吸引,但他分得出哪種渴求出於性還是愛,大概知道能從她身上得到什麼。
28、女人主動示愛,對男人來說,唯一的損失就是縮短了那段朦朦朧朧,若有若無的浪漫日子。
29、男人相信證明自身出色的重要表現之一是:擁有更多的女人。事業上越出色的男人,往往需要更多女人的仰慕和傾心以體現他的超凡脫俗。
30、男人在分手問題上拖泥帶水,其實是想把去留的難題丟給女人,減少自己決定帶來的內疚感。
31、男人說的「未來」是6個月到1年時間,女人的定義則可以是10年到50年。當男人愛上一個女人,他只會想像如何在短暫的未來與她親密發展;女人則幻想到戀愛,結婚,生孩子乃至如何白頭到老。
32、男人基本是都小器,大方是裝出來的。表面上他們不拘小節,其實內心和女人一樣,計算得清清楚楚。
33、女性較容易坦白心事,男人恰恰相反。遇到煩惱,他們找個別好友傾訴時,不會說得很完整,總會給自己留最後一點面子。男人的傾訴都是經過包裝或刻意切碎的,不讓一個人知道全部。這也是女人很難了解男人的原因——他們根本不想被人徹底了解。
34、一個男人可以愛上兩個女人,但究竟喜歡哪個多一點,他多半分不清楚。
35、男人看待婚外情比女人實際,因為他有更多機會涉及婚外情,而且他心裡明白——花心隱藏在男人的天性中。
36、男人要變心,其實和女人是否注意保持美麗儀表沒直接關系,那隻是他的借口之一。當他厭倦一個女人,不管她多漂亮,只要是她以外的任何女人,他都覺得比她有吸引力。
37、成熟男人對於崇拜他的少女,抵抗力是相當弱的。
38、男人年紀越大,擇偶越隨心所欲,乃至不顧他人的任何想法。
39、對許多男人來說,真愛意味著——愛情減去性。換句話,男人只要覺得女人缺乏性的吸引力,就可以一直跟她做單純的朋友。
40、男人在有尋求親熱的身體沖動那一刻,對異性的要求忽然降低,他會覺得一個平時普通的女人很可愛,甚至很性感。不過等沖動一旦消退,他立刻恢復了習慣的審美判斷。
41、男人對女人的愛天天快遞查詢 http://www.paijian.com/tt.html總是混合了生理沖動,親熱前他覺得女人什麼都好,之後卻可以無半點留戀,但為了不背負太多罪惡感,他們可以裝作溫柔地在事後繼續吐露纏綿的情話。
42、男人很容易愛上賣弄風情,看起來唾手可得的女人,因為他覺得有更多機會觸摸。
⑼ SQL練習題
一 學生 – 課程資料庫
1 查詢 7號課程沒有考試成績的學生學號
select sno from sc where cno=』7』 and grade is not null
2 查詢 7號課程成績在90分以上或60分以下的學生學號
select sno from sc where grade>90 or grade<60
3 查詢課程名以「數據」兩個字開頭的所有課程的課程號和課程名。
Select cno,cname from c where cname like 『數據%』
4 查詢每個學生所有課程的平均成績,輸出學生學號、平均成績
select sno,avg(grade) from sc group by sno
5 查詢每門課程的選修人數,輸出課程號、選修人數。
Select cno,count(*) from sc group by cno
6 查詢選修 7號課程的學生的學號、姓名、性別。
Select s.sno, sname,ssex from s , sc where s.sno=sc.sno and cno = 『7』
7 查詢選修7號課程學生的平均年齡。
Select avg(sage) from s , sc where s.sno=sc.sno and cno = 『7』
8 查詢由30名以上學生選修的課程號。
Select sno from sc group by cno having count(*)>30
9 查詢至今沒有考試不及格的學生學號
a: select sno from s where sno not in ( select sno from sc where grade<60 )
b: select sno from sc group by sno having min(grade)>=60
二
1 找出選修課程號為 C2 的學生學號與成績。
Select sno,grade from sc where cno=』C2』
2 找出選修課程號為C4 的學生學號與姓名。
Select s.sno , sname from s,sc where s.sno=sc.sno and cno=』C4』
3 找出選修課程名為 Maths 的學生學號與姓名。
Select s.sno ,sname from s,sc,c
where s.sno=sc.sno and c.cno=sc.cno and cname = 『Maths』
4找出選修課程號為C2或C4 的學生學號。
Select distinct sno from sc where cno in (『C2』,』C4』)
或: Select distinct sno from sc where cno=』C2』 or cno =』C4』
5找出選修課程號為C2和C4 的學生學號。
Select sno from sc where cno =』C2』 and sno in (
select sno from sc where cno = 『C4』 )
6 找出不學C2課程的學生姓名和年齡
select sname , sage from s where sno not in ( select sno from sc where cno=』C2』 )
或:
select sname , sage from s where not exists ( select * from sc where sc.sno=s.sno and cno=』C2』 )
7 找出選修了資料庫課程的所有學生姓名。(與3同)
Select s.sno ,sname from s,sc,c
where s.sno=sc.sno and c.cno=sc.cno and cname = 『資料庫』
8 找出資料庫課程不及格的女生姓名
嵌套:
select sname from s where ssex = 『女』 and sno in ( select sno from sc where grade<60 and cno in ( select cno from c where cname=』資料庫』) )
連接:
Select sname from s,sc,c
where s.sno=sc.sno and c.cno=sc.cno and ssex=』女』 and cname = 『資料庫』 and grade<60
9 找出各門課程的平均成績,輸出課程名和平均成績
select cname , avg(grade) from sc , c where c.cno =sc.cno group by sc.cno
10找出各個學生的平均成績,輸出學生姓名和平均成績
select sname , avg(grade) from s , sc where s.sno=sc.sno group by sc.sno
11 找出至少有30個學生選修的課程名
select cname from c where cno in ( select cno from sc group by cno having count(*)>=30 )
12 找出選修了不少於3門課程的學生姓名。
Select sname from s where sno in ( select sno from sc group by sno having count(*)>=3)
13 找出各門課程的成績均不低於90分的學生姓名。
Select sname from s where sno not in ( select sno from sc where grade<90)
14* 找出資料庫課程成績不低於該門課程平均分的學生姓名。
Select sname from s where sno in (
Select sno from sc , c where sc.cno=c.cno and cname=』資料庫』 and
Grade > (Select avg(grade) from sc , c where sc.cno=c.cno and cname=』資料庫』 ) )
15 找出各個系科男女學生的平均年齡和人數。
Select sdept,ssex , avg(sage) , count(*) from s
Group by sdept , ssex
16 找出計算機系(JSJ)課程平均分最高的學生學號和姓名。
Select sc.sno , sname from s, sc where s.sno=sc.sno and sdept=』JSJ』
Group by sc.sno Having avg(grade) =
( Select top 1 avg(grade) from sc, s where s.sno=sc.sno and sdept=』JSJ』
group by sc.sno order by avg(grade) DESC )
三 客戶 – 商品資料庫中包括3按各表:KH,FP,YWY
1 查詢工資在 1000 到3000 元之間的男性業務員的姓名和辦公室編號。
Select Yname , Ono from YWY where salary between 1000 and 3000 and Ysex=』男』
2 查詢各個辦公室的業務員人數,輸出辦公室編號和對應的人數。
Select Ono , count(*) from YWY group by Ono
3 查詢每個客戶在2002年5月購買的總金額,輸出客戶號和相應的總金額。
Select Kno,sum(Fmoney) from FP where fdate between 『2002.5.1』 and 『2002.5.31』
Group by Kno
4 查詢2002年5月購買次數超過5次的所有客戶號,且按客戶號升序排序。
Select Kno from FP where fdate between 『2002.5.1』 and 『2002.5.31』
Group by Kno having count(*)>5
Order by Kno ASC
5 查詢各辦公室男性和女性業務員的平均工資。
Select Ono,Ysex ,avg(salary) from YWY group by Ono , Ysex
6 查詢2002年5月曾經在王海亮業務員手中購買過商品的客戶號、客戶姓名、聯系電話。
Select Kno,Kname,phone from KH where Kno in (
Select kno from FP where fdate between 『2002.5.1』 and 『2002.5.31』 and
Yno=(select Yno from YWY where Yname = 『王海亮』 )
7 查詢所有工資比1538號業務員高的業務員的編號、姓名、工資。
Select yno ,Yname, salary from YWY where salary >
( Select salary from YWY where Yno=』1538』 )
8 查詢所有與1538號業務員在同一個辦公室的其他業務員的編號、姓名。
Select Yno , Yname from YWY where Yno<>』1538』 and Ono in (
Select Ono from YWY where Yno=』1538』 )
9 查詢銷售總金額最高的業務員的編號。
Select Yno from FP Group By Yno Having sum(Fmoney) =
(Select top 1 sum(Fmoney) from FP group by Yno ORDER BY sum(Fmoney) DESC)
10 查詢所有業務員的編號、姓名、工資以及工資比他高的其他業務員的平均工資。
利用自身連接
Select y1.Yno ,y1.Yname ,y1.salary , avg( y2. salary) from YWY y1 , YWY y2
Where y1.Yno<>y2.Yno and y1.salary < y2.salary
Group by y1.Yno
Sno salary sno salary
1 100 1 100
2 120 2 120
3 90 3 90
4 110 4 110
四 某中學資料庫中由一張表:
學生選課表:由板及代碼、班內學號、姓名、科目、成績五個屬性組成,關系模式為
SC(BJDM,BNXH,XSXM,KM,CJ) ,其中(BJDM,BNXH)為主碼。
說明:每個學生每門科目存放一個記錄,科目有「語文」、「數學」、「外語」三門。
1 找出每個班級的班級代碼、學生人數、平均成績。
Select BJDM,count(*) ,avg(CJ) from SC group by BJDM
2 找出每個學生的班級代碼、學生姓名、考試科目數、總成績。
Select BJDM,XSXM,count(*) , sum(CJ) from SC
Group by BNXH
3 輸出一張表格,每位學生對應一條記錄,包括:班級代碼、姓名、語文成績、數學成績、外語成績。
方法一:利用視圖
create view v1 (bjdm,xsxm, yw,sx,wy ) AS
select bjdm , xsxm , cj , 0,0 from sc where km=』語文』
union
select bjdm , xsxm , 0 , cj,0 from sc where km=』數學』
union
select bjdm , xsxm , 0,0,cj from sc where km=』外語』
select bjdm, xsxm , sum(yw) as 語文, sum(sx) as 數學, sum(wy) as 外語 from v1 group by bjdm, xsxm
方法二:自身連接
select a.bjdm,a.xsxm , a.km,a.cj , b.km,b.cj , c.km,c.cj from sc a , sc b , sc c
where a.bjdm=b.bjdm and a.bnxh= b.bnxh and b.bjdm=c.bjdm and b.bnxh= c.bnxh
and a.km=』語文』 and b.km=』數學』 and c.km=』外語』
方法三:利用存儲過程(略)
4 輸出一張表格:由成績低於60分的每位學生對應一條記錄,包括欄位:班級代碼、姓名、最低成績。
Select bjdm,xsxm ,min(CJ) from sc where grade<60 group by bjdm,xsxm
5輸出一張表格:由成績低於60分的每位學生對應一條記錄,包括欄位:班級代碼、姓名、最高成績、平均成績。
得到平均成績:create view V1 (bjdm,bnxh ,avg_cj) AS
select bjdm,bnxh ,avg(cj) from sc where bjdm , bnxh
select sc.bjdm,sc.xsxm ,max(cj) , avg_cj from sc , V1
where sc.bjdm=v1.bjdm and sc.bnxh=V1.bnxh and cj<60
group by sc.bjdm,sc.xsxm
6輸出一張表格:所有成績不低於60分的每位學生對應一條記錄,包括欄位:班級代碼、姓名、平均成績。
select bjdm, xsxm , avg(cj) from sc
where sno not in ( select sno from sc where grade<60)
group by bjdm, xsxm
7輸出一張表格:每一位學生對應一條記錄,包括欄位:班級代碼、姓名、去掉一個最低分後的平均成績。
方法一:
得到每個學生的最低分:
create view V1 (bjdm,bnxh ,min_cj) as
select bjdm,bnxh,min(cj) from sc group by bjdm,bnxh
select sc.bjdm,sc.xsxm , avg(cj) from sc , v1
where sc.bjdm=v1.bjdm and sc.bnxh=v1.bnxh and sc.cj <> v1.min_cj
group by bjdm,bnxh
方法二:
select sc.bjdm,sc.xsxm , ( sum(cj) – min(cj) ) / count(*) from sc
group by bjdm , bnxh
8輸出一張表格:每門科目對應一條記錄,包括欄位:科目、去掉一個最低分後的平均成績。
方法一:
得到每門課的最低分:
create view V1 ( km, min_cj) as
select km,min(cj) from sc group by km
select sc.km , avg(cj) from sc , v1
where sc.km=v1.km and sc.cj <> v1.min_cj
group by sc.km
方法二:
select km , (sum( cj) – min(cj) )/count(*) from sc
group by km
補充9:輸出表格:每門科目對應一條記錄,包括欄位:科目、去掉一個最低分和最高分後的平均成績。
select km , (sum( cj) – min(cj) – max(cj) )/count(*) from sc
group by km
五 資料庫存放著某高校1990年以來英語四、六級的考試情況,且規定:
1 英語四、六級考試每年分別在6月和12月舉行二次;
2 四級沒有通過的學生不能報考六級;
3 某一級的考試只要沒有通過可以反復參加考試;
4 某一級的考試一旦通過就不能再報考同級的考試;
5 允許報了名但不參加考試。
該資料庫中有二張表,相應的關系模式如下:
學生表:S(Sno, Sname, Ssex, Sage, Sdept),其中Sno為主碼。
考試表:E(Sno, Year, Month, Level, Grade),學號、年、月、級別、成績。
其中(Sno, Year, Month)為主碼。
1. 找出各次四級和六級考試的參考人數和平均成績(報了名但沒有參加考試的不作統計)
select year , month,level ,count(*) , avg(grade)
group by year,month , level
2. 找出各次四級考試中平均分最高的系科(報了名但沒有參加考試的不作統計)。
A: Select sdept from s , e where s.sno=e.sno
Where level=4
Group by sdept
Having avg(grade)>=ALL(
Select avg(grade) from s , e where s.sno=e.sno where level=4 Group by sdept )
B: Select top 1 sdept from s , e where s.sno=e.sno
Where level=4
Group by sdept
Order by (avg(grade) desc
3. 找出已經通過英語六級考試的學生的學號、姓名和性別(用連接方法做)
select s.sno,sname,ssex from s,e
where s.sno=e.sno and level=6 and grade>=60
4. 找出在同一年中四、六級考試都參加了的學生的學號
1) select sno from E
where (level=4 and grade>=60) or level=6
group by year having count(*)>=2
2) select sno from E X where level=4 and grade>=60 and exists (
select * from E Y where Y.sno=X.sno and year=X.year and level=6 )
5. 找出只參加一次考試就通過了英語六級考試的學生的學號
select sno from E
where level=6
group by sno
having count(*)=1 錯,想想為何?
1) select sno from E
where level=6
group by sno
having count(*)=1 and max(grade)>=60
2) select sno from E where level=6 and grade>=60 and sno in (
select sno from E where level=6 group by sno having count(*)=1)
6. 找出至今沒有通過英語四級考試的學生的學號(應包括至今還沒有參加過考試或者是參加了但還沒有通過兩種)
select sno from E where level=4
group by sno
having max(grade)<60
Union
Select sno from s where sno not in( select sno from E)
7. 找出英語六級考試中合格人數最少的考試年份和月份(有並列的都要列出,用一句SQL語句)。
Select year , month From E
Where level = 6 and grade>=60
Group by year , month
Having count(*) <=all
(Select count(*) from E where level=6 and grade>=60 group by year , month )
我是從「上海全鼎軟體學院」畢業的————————