《上海大學(xué)數(shù)據(jù)庫原理實驗報告》由會員分享,可在線閱讀,更多相關(guān)《上海大學(xué)數(shù)據(jù)庫原理實驗報告(35頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 數(shù)據(jù)庫實驗報告(一)
《數(shù)據(jù)庫原理》
實驗報告(一)
院(系) 計算機工程與科學(xué)
年級專業(yè) 計算機科學(xué)與技術(shù)
教師
姓名
報告日期:
第1周(第四章:SQL體系結(jié)構(gòu)、組成、建庫建表,索引自學(xué))
一、實驗課:
1. 建立school數(shù)據(jù)庫
2. 在school下建立如下數(shù)據(jù)庫表,根據(jù)表中數(shù)據(jù)選取合適的數(shù)據(jù)類型及寬度,設(shè)置各表的主鍵及表間外鍵聯(lián)系:
3. 在學(xué)生表中建立索引idx1:院系號升序,姓名降序
在課程表
2、中建立索引idx2:課名
實驗小結(jié):
這次實驗是我學(xué)習(xí)數(shù)據(jù)庫課程的第一次上機,本來我還以為會很難,但是實際上機下來卻讓我對學(xué)好數(shù)據(jù)庫更加有信心了。可能是因為老師給了我們類似的代碼,書上也講的挺詳細(xì)的緣故吧。不過一開始,我還是不知道怎么用SQL sever 用編程的方式建立數(shù)據(jù)庫,我就人工手動的建表和錄入數(shù)據(jù),設(shè)置外鍵等,不過后面通過仿照老師給的實例代碼和教科書,我又試著用代碼建立了數(shù)據(jù)庫,效果還不錯??傊ㄟ^這次上機,對數(shù)據(jù)庫有了初步的認(rèn)識和體驗,也熟悉了SQL sever這個工具。
第2周(第四章:投影、選擇、多表連接和嵌套,
3、排序自學(xué))
一、實驗課:
1. 查詢2011年進校年齡大于20歲的男學(xué)生的學(xué)號與姓名。
2. 檢索劉曉明不學(xué)的課程的課程號。
3. 檢索馬小紅老師所授課程的學(xué)年,學(xué)期,課程號,上課時間。
4. 查詢計算機學(xué)院男生總評成績及格、教授開設(shè)的課程的課程號、課名、開課教師姓名,按開課教師升序,課程號降序排序。
5. 檢索學(xué)號比張穎同學(xué)大,年齡比張穎同學(xué)小的同學(xué)學(xué)號、姓名。
6. 檢索同時選修了“08305001”和“08305002”的學(xué)生學(xué)號和姓名。
實驗小結(jié):
這次老師上課的內(nèi)容是關(guān)于select用法的初步學(xué)習(xí),在這次實驗中很喜歡用嵌套語句,因
4、為覺得很好理解,有邏輯清晰,可是做到最后一小題實在覺得嵌套不合適,于是用了將三張表連接的方法,其實發(fā)現(xiàn)這種方法思維清晰的話還是很好用的,理解了感覺比嵌套更容易和舒服,總的來說,學(xué)會了一些簡單的select語言,查處結(jié)果的時候還蠻有成就感的。第3周(第四章:除法、聚合函數(shù)、分組、集合操作,外連接自學(xué))
一、實驗課:
1. 驗證在1000萬個以上記錄時在索引和不索引時的查詢時間區(qū)別。
1) 建立30W條記錄
declare
@i int
set @i=1
while @i<300000
begin
insert into Table_1
values(@i)
set @i
5、=@i+1
end
2) 未建立索引前查詢
set statistics time on
select id
from Table_1
where id=200000
set statistics time off
3) 以降序建立id索引后查詢
set statistics time on
select id
from Table_1
where id=200000
set statistics time off
2. 查詢每個學(xué)生選課情況(包括沒有選修課程的學(xué)生)。
3. 檢索所有課程都選修的的學(xué)生的學(xué)號與姓名。
注:(為檢查出結(jié)果,有修改表中數(shù)
6、據(jù))
4. 檢索選修課程包含1106同學(xué)所學(xué)全部課程的學(xué)生學(xué)號和姓名。
5. 查詢每門課程中分?jǐn)?shù)最高的學(xué)生學(xué)號和學(xué)生姓名。
6. 查詢年齡小于本學(xué)院平均年齡,所有課程總評成績都高于所選課程平均總評成績的學(xué)生學(xué)號、姓名和平均總評成績,按年齡排序。
實驗小結(jié):
這次實驗比之前的實驗難度有所增加,寫起來也遇到了不少麻煩,第一題是借助了別班老師的代碼寫的,讓我明白建立索引會使速度增快很多。這次學(xué)習(xí)了外連接,存在量詞的用法以及分組的概念,初上手還是很不適應(yīng),還好老師上課有講一些模版,有好好記錄,套上去還是很好用的,存在量詞的理解確實有所難度,用兩個not exists表
7、示雙重否定,真的很棒呢。不過第六題實在難以解決想了很多方案,還是不行,后來問過老師,說是題目有點問題,有點無語,不過倒是鍛煉了大腦,是自己對select的用法有了更深入的理解。第4周(第四章:數(shù)據(jù)更新、視圖、嵌入式SQL部分自學(xué))
一、實驗課:
1. 建立計算機學(xué)院總評不及格成績學(xué)生的視圖,包括學(xué)生學(xué)號、姓名、性別、手機、所選課程和成績。
2. 在E表中插入記錄,把每個學(xué)生沒學(xué)過的課程都插入到E表中,使得每個學(xué)生都選修每門課。
3. 求年齡大于所有女同學(xué)年齡的男學(xué)生姓名和年齡。
4. 在E表中修改08305001課程的平時成績,若成績小于等于75分時提高5%,若
8、成績大于75分時提高4%。
5. 刪除沒有開課的學(xué)院。
6. 查詢優(yōu)、良、中、及格、不及格學(xué)生人數(shù)
實驗小結(jié):
這次的實驗主要是學(xué)習(xí)了如何建立視圖,從而更有效的找到自己想要尋找的數(shù)據(jù),然后就是學(xué)習(xí)了如何更新和刪除數(shù)據(jù)表中的內(nèi)容,總的來說比上次簡單,遇到的一點問題就是在更新成績時,要注意先更新分?jǐn)?shù)低于75的,再更新分?jǐn)?shù)高于75的,一面把一些分?jǐn)?shù)接近75的人變成高于75的,多做一次提分,造成結(jié)果錯誤,在做數(shù)據(jù)庫查詢操作一定要謹(jǐn)慎并全面的思考,以免發(fā)生不必要的錯誤。
第五周 poewrbuilder
創(chuàng)建“學(xué)生選課”主
9、窗口
學(xué)生信息窗口
激活Open窗口
課程信息窗口
學(xué)生成績單
成績管理主窗口
創(chuàng)建系統(tǒng)登錄窗口
測試運行
登陸界面
選課(選C1)
選號結(jié)果如下圖
退課(退掉C2)
退掉C1
建立下拉菜單
新增記錄
實驗小結(jié):
這次實驗算是最麻煩的耗時最長的實驗了,當(dāng)然老師也給我們了很寬泛的時間,做的時候書上雖然有很詳細(xì)的介紹并且有絕大部分代碼,當(dāng)然也有一些打印錯誤比如窗口名和后來的代碼中有點差異,但是除了那些明顯錯誤之后還是比較直接機械式的做了之后,結(jié)果并沒有預(yù)期所
10、示,第一個問題就是報錯未連接數(shù)據(jù)庫,檢查了數(shù)據(jù)源并沒有什么問題,于是開始debug,然后發(fā)現(xiàn)居然忘記修改書上的代碼,哎,敲代碼沒有太走心于是出現(xiàn)這種錯誤,書上的connectstring里的id和密碼根本和我自己設(shè)置的不相符合,解決了這個以后發(fā)現(xiàn)還是有問題存在,就是點擊成績分布后沒有圖片顯示,后來發(fā)現(xiàn)其實在open這個窗口時應(yīng)該寫一段代碼可是書上沒寫清楚,so...又折騰了一下,不過也算順利解決了。其實做的途中還有有一些問題,比如少敲一行代碼,或者少一個符號,就會出現(xiàn)很多嚴(yán)重的錯誤,然后要一行一行對著找錯誤,所以后面在做的時候就比較細(xì)心了,錯誤的地方也自然就少了。
總而言之,做完這個對如何做一個選課系統(tǒng)有了一定程度的了解,對sql語言的操作也有了一定的了解,感覺學(xué)到了不少,雖然大部分是照葫蘆畫瓢做出來的,但是還是很有收獲的,相信對下學(xué)期數(shù)據(jù)庫的學(xué)習(xí)會有一定幫助。
第 35 頁 共 35 頁