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