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