《實(shí)驗(yàn)05 復(fù)雜數(shù)據(jù)查詢》由會(huì)員分享,可在線閱讀,更多相關(guān)《實(shí)驗(yàn)05 復(fù)雜數(shù)據(jù)查詢(5頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、【精品文檔】如有侵權(quán),請聯(lián)系網(wǎng)站刪除,僅供學(xué)習(xí)與交流
實(shí)驗(yàn)05 復(fù)雜數(shù)據(jù)查詢
.....精品文檔......
實(shí)驗(yàn)5 復(fù)雜數(shù)據(jù)查詢
實(shí)驗(yàn)?zāi)康?
1. 掌握使用T-SQL的SELECT語句進(jìn)行復(fù)雜查詢的方法
2. 掌握在SELECT語句中使用集合函數(shù)的方法
3. 掌握在SELECT語句中使用GROUP BY/HAVING子句的方法
4. 掌握嵌套查詢的操作方法
5. 掌握數(shù)據(jù)更新語句INSERT INTO、UPDATE、DELETE的使用方法
實(shí)驗(yàn)準(zhǔn)備
還原studentdb數(shù)據(jù)庫,包含各表如圖5- 1所示。
圖5- 1 數(shù)據(jù)庫studentdb表關(guān)
2、系圖
實(shí)驗(yàn)內(nèi)容及步驟
1. 打開查詢分析器,選擇當(dāng)前數(shù)據(jù)庫為studentdb。
2. 在SELECT語句中使用集合函數(shù)
(1) 查詢2008級的學(xué)生總數(shù)。
select count(*) as 學(xué)生總數(shù) from 學(xué)生 where 年級=2008
(2) 查詢2008級學(xué)生課程代碼為1304的平均總評成績、考試成績的最高分和最低分。
select avg(總評成績) 平均成績,max(考試成績) 最高分,min(考試成績) 最低分
from 成績
where 課程代碼=1304 and 年級=2008
3. 在SELECT語句中使用分組匯總(GROUP BY/HAVING
3、子句)。
(1) 查詢2008年入校的男學(xué)生和女學(xué)生的個(gè)數(shù)。
select 性別,count(*) 學(xué)生數(shù)
from 學(xué)生
where 進(jìn)校時(shí)間='2008-09-01'
group by 性別
(2) 查詢2008級課程代碼為1304的不同專業(yè)的平均總評成績。
select 專業(yè),avg(總評成績) as 平均成績
from 成績
where 年級=2008 and 課程代碼=1304
group by 專業(yè)
(3) 查詢2008級課程代碼為1304且平均總評成績在95分以上的專業(yè)代碼及平均成績。
select 專業(yè),avg(總評成績) as 平均成績
fro
4、m 成績
where 年級=2008 and 課程代碼=1304
group by 專業(yè)
having avg(總評成績)>=90
4. 使用嵌套查詢
(1) 查詢“計(jì)算機(jī)文化基礎(chǔ)”的考試成績。
select 學(xué)號,專業(yè),年級,班序號,總評成績
from 成績
where 課程代碼=(select 課程代碼
from 課程
where 課程名稱='計(jì)算機(jī)文化基礎(chǔ)')
(2) 用IN子查詢查找2008級課程1304總評成績?yōu)?00分的學(xué)生學(xué)號、姓名、性別、專業(yè)。
select 學(xué)號,姓名,性別,專業(yè)
from 學(xué)生
where 學(xué)號 in(select 學(xué)
5、號 from 成績
where 年級=2008 and 課程代碼=1304 and 總評成績=100)
(3) 查詢學(xué)號為2008242330的學(xué)生的分?jǐn)?shù)比2008242331號學(xué)生的最低分?jǐn)?shù)高的課程代碼和分?jǐn)?shù)。
select 課程代碼,總評成績
from 成績
where 學(xué)號= '2008242330 '
and 總評成績 >any(select 總評成績
from 成績
where 學(xué)號= '2008242331 ')
(4) 查詢學(xué)號為2008242330的學(xué)生的分?jǐn)?shù)比2008242331號學(xué)生的最高分?jǐn)?shù)還要高的課程代碼和分?jǐn)?shù)。
select 課程代碼,
6、總評成績
from 成績
where 學(xué)號= '2008242330 '
and 總評成績 >all(select 總評成績
from 成績
where 學(xué)號= '2008242331 ')
5. 數(shù)據(jù)更新。
(1) 在studentdb數(shù)據(jù)庫中創(chuàng)建新表stinfo,表結(jié)構(gòu)如圖5- 2。
圖5- 2 stinfo表結(jié)構(gòu)
(2) 使用INSERT INTO語句通過學(xué)生表將2008級學(xué)生的學(xué)號、姓名、性別數(shù)據(jù)追加到新表stinfo中。
insert into stinfo(學(xué)號,姓名,性別)
select 學(xué)號,姓名,性別 from 學(xué)生 where 年級=20
7、08
插入完成后查詢新表stinfo數(shù)據(jù):select * from stinfo
(3) 使用UPDATE語句通過成績表更新stinfo總成績。
update stinfo
set 總成績=(select sum(總評成績)
from 成績
where stinfo.學(xué)號=成績.學(xué)號)
查詢表stinfo數(shù)據(jù):select * from stinfo
(4) 使用DELETE語句刪除表stinfo男同學(xué)的學(xué)生記錄。
delete from stinfo where 性別='男'
查詢表stinfo數(shù)據(jù):select * from stinfo
實(shí)驗(yàn)思考
1. 查詢2008級課程代碼為1304且平均總評成績在90分以上的專業(yè)代碼、專業(yè)名稱及平均成績。
2. HAVING子句與WHERE子句的區(qū)別是什么?
3. 用內(nèi)連接查詢(INNER JOIN)實(shí)現(xiàn)4(2)要求的查詢結(jié)果。