《數(shù)據(jù)庫(kù)概論》實(shí)驗(yàn)指導(dǎo)書(shū)2015_第1頁(yè)
《數(shù)據(jù)庫(kù)概論》實(shí)驗(yàn)指導(dǎo)書(shū)2015_第2頁(yè)
《數(shù)據(jù)庫(kù)概論》實(shí)驗(yàn)指導(dǎo)書(shū)2015_第3頁(yè)
《數(shù)據(jù)庫(kù)概論》實(shí)驗(yàn)指導(dǎo)書(shū)2015_第4頁(yè)
《數(shù)據(jù)庫(kù)概論》實(shí)驗(yàn)指導(dǎo)書(shū)2015_第5頁(yè)
已閱讀5頁(yè),還剩26頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、數(shù)據(jù)庫(kù)系統(tǒng)概論實(shí)驗(yàn)報(bào)告書(shū)專業(yè)班級(jí)學(xué) 號(hào)姓 名指導(dǎo)教師安徽工業(yè)大學(xué)計(jì)算機(jī)學(xué)院實(shí)驗(yàn)一:數(shù)據(jù)定義語(yǔ)言 實(shí)驗(yàn)日期 年 月 日 實(shí)驗(yàn)?zāi)康?熟悉Oracle上機(jī)環(huán)境及Oracle客戶端的配置;熟練掌握和使用DDL語(yǔ)言,建立、修改和刪除數(shù)據(jù)庫(kù)表、主鍵、外鍵約束關(guān)系和索引。 實(shí)驗(yàn)內(nèi)容 Oracle上機(jī)環(huán)境以及Oracle客戶端的配置參見(jiàn)附錄。1 SQL數(shù)據(jù)定義語(yǔ)句: 例1-1: (建立數(shù)據(jù)庫(kù)表) 建立教學(xué)數(shù)據(jù)庫(kù)的四個(gè)數(shù)據(jù)庫(kù)表,其中Student表中不包含SSEX(C,2) 字段,Sname 字段為Sname(C,8)且可為空。 例1-2: (修改數(shù)據(jù)庫(kù)表) 在Student表中增加SEX(C,2) 字段。 例

2、1-3: (修改列名) 將Student表中列名SEX修改為SSEX。 例1-4: (修改數(shù)據(jù)庫(kù)表) 將Student表中把Sname 字段修改為Sname(C,10)且為非空。 例1-5: (建立索引) 為Score表按課程號(hào)升序、分?jǐn)?shù)降序建立索引,索引名為SC_GRADE。 例1-6: (刪除索引) 刪除索引SC_GRADE。 例1-7: (建立數(shù)據(jù)庫(kù)表) 建立數(shù)據(jù)庫(kù)表S1(SNO,SNAME,SD,SA),其字段類型定義與Student表中的相應(yīng)字段(SNO,SNAME,SDEPT,SAGE)的數(shù)據(jù)類型定義相同。 例1-8: (修改數(shù)據(jù)庫(kù)表) 刪除成績(jī)表Score的參照完整性約束關(guān)系。

3、例1-9: (修改數(shù)據(jù)庫(kù)表) 添加成績(jī)表Score的參照完整性約束關(guān)系。 例1-10: (修改數(shù)據(jù)庫(kù)表名) 將數(shù)據(jù)庫(kù)表S1改名為Student_Temp。 實(shí)驗(yàn)要求 熟悉Oracle上機(jī)環(huán)境,掌握Oracle客戶端的配置; 建立數(shù)據(jù)庫(kù)表,修改數(shù)據(jù)庫(kù)表結(jié)構(gòu),建立、刪除索引; 實(shí)驗(yàn)方法 按照附錄中的操作步驟進(jìn)行客戶端的配置; 將實(shí)驗(yàn)需求用SQL語(yǔ)句表示; 執(zhí)行SQL語(yǔ)句; 查看執(zhí)行結(jié)果,如果結(jié)果不正確,進(jìn)行修改,直到正確為止。 實(shí)驗(yàn)總結(jié) SQL語(yǔ)句以及執(zhí)行結(jié)果; 對(duì)重點(diǎn)實(shí)驗(yàn)結(jié)果進(jìn)行分析; 實(shí)驗(yàn)中的問(wèn)題和提高; 收獲與體會(huì)。 實(shí)驗(yàn)二:數(shù)據(jù)操縱語(yǔ)言 實(shí)驗(yàn)日期 年 月 日 實(shí)驗(yàn)?zāi)康?在實(shí)驗(yàn)一的基礎(chǔ)上,熟

4、練掌握和使用DML語(yǔ)言,對(duì)數(shù)據(jù)進(jìn)行增加、修改和刪除操作。 實(shí)驗(yàn)內(nèi)容 2 SQL數(shù)據(jù)操縱語(yǔ)句: 例2-1: (插入數(shù)據(jù)) 按前面各表中的數(shù)據(jù)分別插入到教學(xué)數(shù)據(jù)庫(kù)的四個(gè)數(shù)據(jù)庫(kù)表中。 例2-2:(多行插入) 將表Student表中計(jì)算機(jī)系(CS)的學(xué)生數(shù)據(jù)插入到表S1中。(以上操作中,注意用COMMIT提交數(shù)據(jù),將數(shù)據(jù)保存到數(shù)據(jù)庫(kù)服務(wù)器) 例2-1: (插入數(shù)據(jù)) 按前面各表中的數(shù)據(jù)分別插入到教學(xué)數(shù)據(jù)庫(kù)的四個(gè)數(shù)據(jù)庫(kù)表中。 例2-2:(多行插入) 將表Student中在計(jì)算機(jī)系(CS)的學(xué)生數(shù)據(jù)插入到表Student_Temp中。(以上操作中,注意用COMMIT提交數(shù)據(jù),將數(shù)據(jù)保存到數(shù)據(jù)庫(kù)服務(wù)器) 例

5、2-3:(利用查詢來(lái)實(shí)現(xiàn)表的定義與數(shù)據(jù)插入) 求每一個(gè)學(xué)生的平均成績(jī),把結(jié)果存入數(shù)據(jù)庫(kù)表Student_Gr中。 例2-4: (修改數(shù)據(jù)) 將Student_Temp表中所有學(xué)生的年齡加2。 例2-5: (修改數(shù)據(jù)) 將Course表中程序設(shè)計(jì)課時(shí)數(shù)修改成與數(shù)據(jù)結(jié)構(gòu)的課時(shí)數(shù)相同。 例2-6: (插入數(shù)據(jù)) 向Score表中插入數(shù)據(jù)(98001, 001, 95),根據(jù)返回信息解釋其原因。 例2-7: (插入數(shù)據(jù)) 向Score表中插入數(shù)據(jù)(97001, 010, 80),根據(jù)返回信息解釋其原因。例2-8: (刪除數(shù)據(jù)) 刪除Student表中學(xué)號(hào)為96001的學(xué)生信息,根據(jù)返回信息解釋其原因。

6、例2-9: (刪除數(shù)據(jù)) 刪除Course表中課程號(hào)為003 的課程信息,根據(jù)返回信息解釋其原因。 例2-10: (刪除數(shù)據(jù)) 刪除學(xué)生表Student_Temp中學(xué)號(hào)以96打頭的學(xué)生信息。(此操作后,注意用ROLLBACK回退可能更新的數(shù)據(jù)) 例2-11: (刪除數(shù)據(jù)) 刪除數(shù)據(jù)庫(kù)表Student_Temp中所有學(xué)生的數(shù)據(jù)。 例2-12:(刪除表) 刪除數(shù)據(jù)庫(kù)表Student_Temp和Student_Gr。 實(shí)驗(yàn)要求 對(duì)數(shù)據(jù)庫(kù)表進(jìn)行插入、修改和刪除數(shù)據(jù)的操作。 實(shí)驗(yàn)方法 按照附錄中的操作步驟進(jìn)行客戶端的配置; 將實(shí)驗(yàn)需求用SQL語(yǔ)句表示; 執(zhí)行SQL語(yǔ)句; 查看執(zhí)行結(jié)果,如果結(jié)果不正確,進(jìn)

7、行修改,直到正確為止。 實(shí)驗(yàn)總結(jié) SQL語(yǔ)句以及執(zhí)行結(jié)果; 對(duì)重點(diǎn)實(shí)驗(yàn)結(jié)果進(jìn)行分析; 實(shí)驗(yàn)中的問(wèn)題和提高; 收獲與體會(huì)。 實(shí)驗(yàn)三:數(shù)據(jù)查詢語(yǔ)言 實(shí)驗(yàn)日期 年 月 日 實(shí)驗(yàn)?zāi)康?體會(huì)SQL語(yǔ)言數(shù)據(jù)查詢功能的豐富和復(fù)雜。 實(shí)驗(yàn)內(nèi)容 3 SQL數(shù)據(jù)查詢語(yǔ)句: 例3-1: (選擇表中的若干列) 求全體學(xué)生的學(xué)號(hào)、姓名、性別和年齡。 例3-2: (不選擇重復(fù)行) 求選修了課程的學(xué)生學(xué)號(hào)。 例3-3: (選擇表中的所有列) 求全體學(xué)生的詳細(xì)信息。 例3-4: (使用表達(dá)式) 求全體學(xué)生的學(xué)號(hào)、姓名和出生年份。 例3-5: (使用列的別名) 求學(xué)生的學(xué)號(hào)和出生年份,顯示時(shí)使用別名“學(xué)號(hào)”和“出生年份”。 例

8、3-6: (比較大小條件) 求年齡大于19歲的學(xué)生的姓名和年齡。 例3-7: (比較大小條件) 求計(jì)算機(jī)系或信息系年齡大于18歲的學(xué)生的姓名、系和年齡。 例3-8: (確定范圍條件) 求年齡在19歲與22歲(含20歲和22歲)之間的學(xué)生的學(xué)號(hào)和年齡。 例3-9: (確定范圍條件) 求年齡不在19歲與22歲之間的學(xué)生的學(xué)號(hào)和年齡。 例3-10:(確定集合條件) 求在下列各系的學(xué)生信息:數(shù)學(xué)系、計(jì)算機(jī)系。 例3-11:(確定集合條件) 求不是數(shù)學(xué)系、計(jì)算機(jī)系的學(xué)生信息。 例3-12:(匹配查詢) 求姓名是以“李”打頭的學(xué)生。 例3-13:(匹配查詢) 求姓名中含有“志”的學(xué)生。 例3-14:(匹配

9、查詢) 求姓名長(zhǎng)度至少是三個(gè)漢字且倒數(shù)第三個(gè)漢字必須是“馬”的學(xué)生。 例3-15:(匹配查詢) 求選修課程001或003,成績(jī)?cè)?0至90之間,學(xué)號(hào)為96xxx的學(xué)生的學(xué)號(hào)、課程號(hào)和成績(jī)。 例3-16:(匹配查詢) 求課程名中包含 _ 字符的課程號(hào)、課程名和學(xué)時(shí)數(shù)。 例3-17:(涉及空值查詢) 求缺少學(xué)習(xí)成績(jī)的學(xué)生的學(xué)號(hào)和課程號(hào)。 例3-18:(控制行的顯示順序) 求選修003課程或004課程的學(xué)生的學(xué)號(hào)、課程號(hào)和分?jǐn)?shù),要求按課程號(hào)升序、分?jǐn)?shù)降序的順序顯示結(jié)果。 例3-19:(組函數(shù)) 求學(xué)生總?cè)藬?shù)。 例3-20:(組函數(shù)) 求選修了課程的學(xué)生人數(shù)。 例3-21:(組函數(shù)) 求計(jì)算機(jī)系學(xué)生的

10、平均年齡。 例3-22:(組函數(shù)) 求選修了課程001的最高、最低與平均成績(jī)。 例3-23:(分組查詢) 求各門(mén)課程的平均成績(jī)與總成績(jī)。 例3-24:(分組查詢) 求各系、各班級(jí)的人數(shù)和平均年齡。 例3-25:(分組查詢) 輸入以下查詢語(yǔ)句并執(zhí)行,觀察出現(xiàn)的其結(jié)果并分析其原因。 SELECT SNAME,SDEPT,COUNT(*)FROM STUDENT WHERE SDEPT=CS GROUP BY SDEPT; 例3-26:(分組查詢) 分析以下語(yǔ)句為什么會(huì)出現(xiàn)錯(cuò)誤。并給出正確的查詢語(yǔ)句。 SELECT SAGE FROM STUDENT GROUP BY SNO; 例3-27:(分組查

11、詢) 求學(xué)生人數(shù)不足3人的系及其相應(yīng)的學(xué)生數(shù)。 例3-28:(分組查詢) 求各系中除01班之外的各班的學(xué)生人數(shù)。 例3-29:(涉及空值的查詢) 分別觀察各組函數(shù)、行的顯示順序以及分組查詢與空值的關(guān)系。 例3-30:(連接查詢) 求選修了課程001且成績(jī)?cè)?0分以下或成績(jī)?cè)?0分以上的學(xué)生的姓名、課程名稱和成績(jī)。 例3-31:(連接查詢與表的別名) 求選修了課程的學(xué)生的學(xué)生姓名、課程號(hào)和成績(jī)。 例3-32:(自身連接查詢) 求年齡大于 李麗 的所有學(xué)生的姓名、系和年齡。 例3-33:(外部連接查詢) 求選修了課程002或003的學(xué)生的學(xué)號(hào)、課程號(hào)、課程名和成績(jī),要求必須將002和003課程的相

12、關(guān)信息顯示出來(lái)。 例3-34:(子查詢) 求與 黎明 年齡相同的學(xué)生的姓名和系。 例3-35:(子查詢) 求選修了課程名為 數(shù)據(jù)結(jié)構(gòu) 的學(xué)生的學(xué)號(hào)和姓名。 例3-36:(子查詢ANY) 求比數(shù)學(xué)系中某一學(xué)生年齡大的學(xué)生的姓名和系。 例3-37:(子查詢ALL) 求比數(shù)學(xué)系中全體學(xué)生年齡大的學(xué)生的姓名和系。 例3-38:(子查詢EXISTS) 求選修了課程004的學(xué)生的姓名和系。 例3-39:(返回多列的子查詢) 求與 李麗 同系且同齡的學(xué)生的姓名和系。 例3-40:(多個(gè)子查詢) 求與 黎明 同系,且年齡大于 李麗 的學(xué)生的信息。 例3-41:(子查詢中使用表連接) 求數(shù)學(xué)系中年齡相同的學(xué)生的

13、姓名和年齡。 例3-42:(連接或嵌套查詢) 檢索至少選修王成剛老師所授課程中一門(mén)課程的女學(xué)生姓名。 例3-43:(嵌套與分組查詢) 檢索選修某課程的學(xué)生人數(shù)多于3人的教師姓名。 例3-44:(集合查詢) 列出所有教師和同學(xué)的姓名和性別。 例3-45:(相關(guān)子查詢) 求未選修課程004的學(xué)生的姓名。 例3-46:(相關(guān)子查詢) 求選修了全部課程的學(xué)生的姓名。 例3-47:(相關(guān)子查詢) 求至少選修了學(xué)生 96002 所選修的全部課程的學(xué)生的學(xué)號(hào)。 例3-48:(相關(guān)子查詢) 求成績(jī)比所選修課程平均成績(jī)高的學(xué)生的學(xué)號(hào)、課程號(hào)、和成績(jī)。 例3-49:(相關(guān)子查詢) 查詢被一個(gè)以上的學(xué)生選修的課程號(hào)

14、。例3-50:(相關(guān)子查詢) 查詢所有未選課程的學(xué)生姓名和所在系。 實(shí)驗(yàn)要求 對(duì)數(shù)據(jù)庫(kù)表進(jìn)行各種查詢操作。 實(shí)驗(yàn)方法 將實(shí)驗(yàn)需求用SQL語(yǔ)句表示; 執(zhí)行SQL語(yǔ)句; 查看執(zhí)行結(jié)果,如果結(jié)果不正確,進(jìn)行修改,直到正確為止。 實(shí)驗(yàn)總結(jié) SQL語(yǔ)句以及執(zhí)行結(jié)果; 對(duì)重點(diǎn)實(shí)驗(yàn)結(jié)果進(jìn)行分析; 實(shí)驗(yàn)中的問(wèn)題和提高; 收獲與體會(huì)。實(shí)驗(yàn)四:視圖、授權(quán)控制與事務(wù)處理 實(shí)驗(yàn)日期 年 月 日 實(shí)驗(yàn)?zāi)康?通過(guò)實(shí)驗(yàn)進(jìn)一步理解視圖的建立和更新、數(shù)據(jù)庫(kù)的權(quán)限管理和事務(wù)處理功能。 實(shí)驗(yàn)內(nèi)容 4 SQL視圖的定義與操縱: 例4-1: (建立視圖) 建立計(jì)算機(jī)系的學(xué)生的視圖STUDENT_CS。 例4-2: (建立視圖) 建立由

15、學(xué)號(hào)和平均成績(jī)兩個(gè)字段的視圖STUDENT_GR。 例4-3: (視圖查詢) 利用視圖STUDENT_CS,求年齡大于19歲的學(xué)生的全部信息。 例4-4: (視圖查詢) 利用視圖STUDENT_GR,求平均成績(jī)?yōu)?8分以上的學(xué)生的學(xué)號(hào)和平均成績(jī)。 例4-5: (視圖更新) 利用視圖STUDENT_CS,增加學(xué)生( 96006,張然,CS,02,男,19 )。 例4-6: (視圖更新) 利用視圖STUDENT_CS,將學(xué)生年齡增加1歲。觀察其運(yùn)行結(jié)果并分析原因。 例4-7: (視圖更新) 利用視圖STUDENT_GR,將平均成績(jī)?cè)黾?分。觀察其運(yùn)行結(jié)果并分析原因。 例4-8: (視圖更新) 刪除

16、視圖STUDENT_CS中學(xué)號(hào)為 96006 的學(xué)生的全部數(shù)據(jù)。 例4-9: (視圖更新) 刪除視圖STUDENT_GR的全部數(shù)據(jù)。 例4-10:(刪除視圖) 刪除視圖STUDENT_CS和STUDENT_GR。5 SQL數(shù)據(jù)控制語(yǔ)句: 例5-1: (授權(quán)) 給左右鄰近同學(xué)(用戶)授予在表Student上的SELECT權(quán)限,并使這兩個(gè)用戶具有給其他用戶授予相同權(quán)限的權(quán)限。 例5-2: (授權(quán)) 給鄰近同學(xué)(用戶)授予Teach表上的所有權(quán)限。 例5-3: (授權(quán)) 給所有用戶授予Score表上的SELECT權(quán)限。 例5-4: (授權(quán)驗(yàn)證) 觀察左右鄰近同學(xué)查詢你所授權(quán)的表中的內(nèi)容。 例5-5:

17、 (收回授權(quán)) 收回上面例子中的所有授予的權(quán)限。6 SQL事務(wù)處理: 例6-1: (事務(wù)回退) 將課程名稱表中的 程序設(shè)計(jì) 課程學(xué)時(shí)數(shù)修改為80、微機(jī)原理 課程學(xué)時(shí)數(shù)修改為70學(xué)時(shí),查詢?nèi)空n程的總學(xué)時(shí)數(shù)后,取消所有修改(ROLLBACK)。再次查詢?nèi)空n程的總學(xué)時(shí)數(shù)。注意比較分析兩次查詢的結(jié)果。 例6-2: (事務(wù)提交) 將課程名稱表中的 程序設(shè)計(jì) 課程學(xué)時(shí)數(shù)修改為80、微機(jī)原理 課程學(xué)時(shí)數(shù)修改為70學(xué)時(shí),查詢?nèi)空n程的總學(xué)時(shí)數(shù)后,確認(rèn)所有修改(COMMIT)。再次查詢?nèi)空n程的總學(xué)時(shí)數(shù)。注意比較分析兩次查詢的結(jié)果。 實(shí)驗(yàn)要求 建立視圖,視圖查詢,視圖更新; 給某一或全部用戶授權(quán)和收回授權(quán);

18、 事務(wù)回退,事務(wù)提交。 實(shí)驗(yàn)方法 將實(shí)驗(yàn)需求用SQL語(yǔ)句表示; 執(zhí)行SQL語(yǔ)句; 查看執(zhí)行結(jié)果,如果結(jié)果不正確,進(jìn)行修改,直到正確為止。 實(shí)驗(yàn)總結(jié) SQL語(yǔ)句以及執(zhí)行結(jié)果; 對(duì)重點(diǎn)實(shí)驗(yàn)結(jié)果進(jìn)行分析; 實(shí)驗(yàn)中的問(wèn)題和提高; 收獲與體會(huì)。實(shí)驗(yàn)五:Oracle存儲(chǔ)過(guò)程與觸發(fā)器 實(shí)驗(yàn)日期 年 月 日 實(shí)驗(yàn)?zāi)康?通過(guò)實(shí)驗(yàn)進(jìn)一步理解和掌握Oracle數(shù)據(jù)庫(kù)的存儲(chǔ)過(guò)程和觸發(fā)器。 實(shí)驗(yàn)內(nèi)容 4 存儲(chǔ)過(guò)程與觸發(fā)器:例7-1: (存儲(chǔ)過(guò)程) 創(chuàng)建一個(gè)顯示學(xué)生總?cè)藬?shù)的存儲(chǔ)過(guò)程。例7-2: (存儲(chǔ)過(guò)程) 創(chuàng)建顯示學(xué)生信息的存儲(chǔ)過(guò)程STUDENT_LIST,并引用STU_COUNT存儲(chǔ)過(guò)程。例7-3: (存儲(chǔ)過(guò)程) 創(chuàng)

19、建一個(gè)顯示學(xué)生平均成績(jī)的存儲(chǔ)過(guò)程。例7-4: (存儲(chǔ)過(guò)程) 創(chuàng)建顯示所有學(xué)生平均成績(jī)的存儲(chǔ)過(guò)程。例7-5: (修改數(shù)據(jù)庫(kù)表) 在Student表中增加SAVG(N,6,2) 字段。例7-6: (存儲(chǔ)過(guò)程) 創(chuàng)建存儲(chǔ)過(guò)程,計(jì)算每個(gè)學(xué)生的平均成績(jī)保存到學(xué)生表SAVG字段中。例7-7: (觸發(fā)器) 當(dāng)更新學(xué)生成績(jī)表SCORE中的學(xué)生成績(jī)時(shí),自動(dòng)計(jì)算該學(xué)生的平均成績(jī)保存到學(xué)生表SAVG字段中。例7-8: (觸發(fā)器) 創(chuàng)建包含插入、刪除、修改多種觸發(fā)事件的觸發(fā)器DML_LOG,對(duì)SCORE表的操作進(jìn)行記錄。用INSERTING、DELETING、UPDATING謂詞來(lái)區(qū)別不同的DML操作。先創(chuàng)建事件記錄

20、表LOGS,該表用來(lái)對(duì)操作進(jìn)行記錄。該表的字段含義解釋如下: LOG_ID:操作記錄的編號(hào),數(shù)值型,它是該表的主鍵,自動(dòng)增1,可由序列自動(dòng)生成。 LOG_TABLE:進(jìn)行操作的表名,字符型,非空,該表設(shè)計(jì)成可以由多個(gè)觸發(fā)器共享使用。比如我們可以為Student表創(chuàng)建類似的觸發(fā)器,同樣將操作記錄到該表。 LOG_DML:操作的動(dòng)作,即INSERT、DELETE或UPDATE三種之一。 LOG_KEY_ID:操作時(shí)表的主鍵值,數(shù)值型。之所以記錄表的主鍵,是因?yàn)橹麈I是表的記錄的惟一標(biāo)識(shí),可以識(shí)別是對(duì)哪一條記錄進(jìn)行了操作。對(duì)于Score表,主鍵是由SNO_CNO構(gòu)成。 LOG_DATE:操作的日期,日

21、期型,取當(dāng)前的系統(tǒng)時(shí)間。 LOG_USER:操作者,字符型,取當(dāng)時(shí)的操作者賬戶名。比如登錄SCOTT賬戶進(jìn)行操作,在該字段中,記錄賬戶名為SCOTT。 實(shí)驗(yàn)要求 創(chuàng)建、調(diào)試和修改、調(diào)用和執(zhí)行Oracle存儲(chǔ)過(guò)程; 創(chuàng)建、調(diào)試和修改、測(cè)試Oracle觸發(fā)器。 實(shí)驗(yàn)方法 將實(shí)驗(yàn)需求用SQL語(yǔ)句表示; 執(zhí)行SQL語(yǔ)句; 查看執(zhí)行結(jié)果,如果結(jié)果不正確,進(jìn)行修改,直到正確為止。 實(shí)驗(yàn)總結(jié) SQL語(yǔ)句以及執(zhí)行結(jié)果; 對(duì)重點(diǎn)實(shí)驗(yàn)結(jié)果進(jìn)行分析; 實(shí)驗(yàn)中的問(wèn)題和提高; 收獲與體會(huì)。數(shù)據(jù)庫(kù)系統(tǒng)概論實(shí)驗(yàn)指導(dǎo)書(shū)(Ver 5.0)安徽工業(yè)大學(xué)計(jì)算機(jī)學(xué)院2010年9月數(shù)據(jù)庫(kù)系統(tǒng)概論實(shí)驗(yàn)指導(dǎo)書(shū)一、 實(shí)驗(yàn)?zāi)康模簲?shù)據(jù)庫(kù)系統(tǒng)概論

22、是一門(mén)應(yīng)用性很強(qiáng)的課程,上機(jī)實(shí)驗(yàn)是數(shù)據(jù)庫(kù)課程的重要環(huán)節(jié)。本實(shí)驗(yàn)是結(jié)合數(shù)據(jù)庫(kù)系統(tǒng)概論課程的學(xué)習(xí)而開(kāi)設(shè)的實(shí)驗(yàn)。本實(shí)驗(yàn)?zāi)康娜缦拢?. 通過(guò)上機(jī)實(shí)驗(yàn),加深對(duì)數(shù)據(jù)庫(kù)系統(tǒng)理論知識(shí)的理解,增強(qiáng)對(duì)網(wǎng)絡(luò)環(huán)境下大型數(shù)據(jù)庫(kù)的感性認(rèn)識(shí)和實(shí)際操作能力;2. 通過(guò)使用具體的DBMS,了解一種實(shí)際的數(shù)據(jù)庫(kù)管理系統(tǒng),并掌握其操作技術(shù)。熟悉Oracle Net Configuration Assistant工具,掌握Oracle數(shù)據(jù)庫(kù)的網(wǎng)絡(luò)連接配置;3. 學(xué)習(xí)使用SQL語(yǔ)言,加深對(duì)SQL語(yǔ)言的認(rèn)識(shí)和理解,提高SQL語(yǔ)言的實(shí)際應(yīng)用能力;4. 加強(qiáng)對(duì)事務(wù)處理、權(quán)限管理等概念的認(rèn)識(shí)和理解。二、 適應(yīng)專業(yè):計(jì)算機(jī)科學(xué)和技術(shù)、軟件工程、

23、網(wǎng)絡(luò)工程專業(yè)三、 實(shí)驗(yàn)學(xué)時(shí)數(shù):12學(xué)時(shí)四、 實(shí)驗(yàn)內(nèi)容及學(xué)時(shí)安排:實(shí)驗(yàn)一:數(shù)據(jù)定義語(yǔ)言實(shí)驗(yàn)?zāi)康模菏煜racle上機(jī)環(huán)境以及Oracle客戶端的配置;熟練掌握和使用DDL語(yǔ)言,建立、修改和刪除數(shù)據(jù)庫(kù)表、主鍵、外鍵約束關(guān)系和索引。學(xué)時(shí)數(shù):2學(xué)時(shí)實(shí)驗(yàn)內(nèi)容:SQL數(shù)據(jù)定義語(yǔ)句。實(shí)驗(yàn)要求:1. 熟悉Oracle上機(jī)環(huán)境;2. 建立數(shù)據(jù)庫(kù)表,修改數(shù)據(jù)庫(kù)表結(jié)構(gòu),建立、刪除索引;實(shí)驗(yàn)二:數(shù)據(jù)操縱語(yǔ)言實(shí)驗(yàn)?zāi)康模涸趯?shí)驗(yàn)一的基礎(chǔ)上,熟練掌握和使用DML語(yǔ)言,對(duì)數(shù)據(jù)進(jìn)行增加、修改和刪除操作。學(xué)時(shí)數(shù):2學(xué)時(shí)實(shí)驗(yàn)內(nèi)容:SQL數(shù)據(jù)操縱語(yǔ)句。實(shí)驗(yàn)要求:對(duì)數(shù)據(jù)庫(kù)表進(jìn)行插入、修改和刪除數(shù)據(jù)的操作。實(shí)驗(yàn)三:數(shù)據(jù)查詢語(yǔ)言實(shí)驗(yàn)?zāi)康模后w

24、會(huì)SQL語(yǔ)言數(shù)據(jù)查詢功能的豐富和復(fù)雜。學(xué)時(shí)數(shù):4學(xué)時(shí)實(shí)驗(yàn)內(nèi)容:SQL數(shù)據(jù)查詢語(yǔ)句。實(shí)驗(yàn)要求:對(duì)數(shù)據(jù)庫(kù)表進(jìn)行各種查詢操作。實(shí)驗(yàn)四:視圖、授權(quán)控制與事務(wù)處理實(shí)驗(yàn)?zāi)康模和ㄟ^(guò)實(shí)驗(yàn)進(jìn)一步理解視圖的建立和更新、數(shù)據(jù)庫(kù)的權(quán)限管理和事務(wù)處理功能。學(xué)時(shí)數(shù):2學(xué)時(shí)實(shí)驗(yàn)內(nèi)容:1. 視圖的定義與操縱;2. SQL數(shù)據(jù)控制語(yǔ)句;3. SQL事務(wù)處理。實(shí)驗(yàn)要求:1. 建立視圖,視圖查詢,視圖更新;2. 給某一或全部用戶授權(quán)和收回授權(quán);3. 事務(wù)回退,事務(wù)提交。實(shí)驗(yàn)五:Oracle存儲(chǔ)過(guò)程與觸發(fā)器實(shí)驗(yàn)?zāi)康模和ㄟ^(guò)實(shí)驗(yàn)進(jìn)一步理解視圖的建立和更新、數(shù)據(jù)庫(kù)的權(quán)限管理和事務(wù)處理功能。學(xué)時(shí)數(shù):2學(xué)時(shí)實(shí)驗(yàn)內(nèi)容:1. Oracle存儲(chǔ)過(guò)程

25、;2. Oracle觸發(fā)器。實(shí)驗(yàn)要求:1. 創(chuàng)建、調(diào)試和修改、調(diào)用和執(zhí)行Oracle存儲(chǔ)過(guò)程;2. 創(chuàng)建、調(diào)試和修改、測(cè)試Oracle觸發(fā)器。五、 教材及參考文獻(xiàn)1.數(shù)據(jù)庫(kù)系統(tǒng)及應(yīng)用 戴小平 主編 中國(guó)科學(xué)技術(shù)大學(xué)出版社 2010.82.數(shù)據(jù)庫(kù)系統(tǒng)概論(第四版) 王珊 薩師煊 編著 高等教育出版社 2006.53.Oracle9i基礎(chǔ)教程與上機(jī)指導(dǎo) 付玉生 史樂(lè)平 編著 清華大學(xué)出版社 2004.10六、 實(shí)驗(yàn)環(huán)境實(shí)驗(yàn)要求如下環(huán)境服務(wù)器端:Windows 2000/2003 Server; Oracle 9i Database Server客戶端: Windows 2000/xp;Oracle

26、 9i Client 網(wǎng)絡(luò)協(xié)議:TCP/IP七、 成績(jī)考核上機(jī)實(shí)驗(yàn)考核采取實(shí)驗(yàn)報(bào)告和上機(jī)抽查檢驗(yàn)相結(jié)合的方式。每次實(shí)驗(yàn)結(jié)束后都必須寫(xiě)出實(shí)驗(yàn)報(bào)告。八. 實(shí)驗(yàn)報(bào)告按“數(shù)據(jù)庫(kù)系統(tǒng)概論實(shí)驗(yàn)報(bào)告書(shū)”格式要求,在規(guī)定時(shí)間內(nèi)完成并上交。九. 教學(xué)管理數(shù)據(jù)庫(kù)設(shè)計(jì)各表的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)如下: 1 學(xué)生情況表 Student 主關(guān)鍵字:SNO 非空字段:SNAME,SDEPT,SCLASS CS:計(jì)算機(jī)系SNO(C,5)學(xué)號(hào)SNAME(C,10)姓名SDEPT(C,2)系SCLASS(C,2)班級(jí)SSEX(C,2)性別SAGE(N,2)年齡 96001 馬小燕 CS 01 女 21MA:數(shù)學(xué)系IS:信息系 9600

27、2 黎明 CS 01 男 18 96003 劉東明 MA 01 男 18 96004 趙志勇 IS 02 男注意:區(qū)別大小寫(xiě) 20 97001 馬蓉 MA 02 女 19 97002 李成功 CS 01 男 20 97003 黎明 IS 03 女 19 97004 李麗 CS 02 女 19 96005 司馬志明 CS 02 男 18 2 課程名稱表 Course 3 教師授課表 Teach CNO(C,3)課程號(hào)CNAME(C,16)課程名稱CTIME(N,3)學(xué)時(shí)數(shù)TNAME(C,8)教師姓名TSEX(C,2)性別CNO(C,3)課程號(hào)TDATE授課日期TDEPT(C,2)系 001 數(shù)學(xué)

28、分析 144 王成剛男 004 1999.9.5 CS 002 普通物理 144 李正科男 003 1999.9.5 CS 003 微機(jī)原理 72 嚴(yán)敏女 001 1999.9.5 MA 004 數(shù)據(jù)結(jié)構(gòu) 72 趙高男 004 1999.9.5 IS 005 操作系統(tǒng) 64 李正科男 003 2000.2.23 MA 006 數(shù)據(jù)庫(kù)原理 64 劉玉蘭女 006 2000.2.23 CS 007 DB_Design 48 王成剛男 004 2000.2.23 IS 008 程序設(shè)計(jì) 56 馬悅女 008 2000.9.6 CS 王成剛男 007 1999.9.5 CS 主關(guān)鍵字:CNO 候選關(guān)鍵

29、字:CNAME 主關(guān)鍵字:TNAME,CNO,TDEPT 參照關(guān)系:Course(CNO) 4 成績(jī)表 Score 主關(guān)鍵字:SNO,CNO 參照關(guān)系:Student(SNO),Course(CNO) SNO(C,5)學(xué)號(hào)CNO(C,3)課程號(hào)SCORE(N,5,2)分?jǐn)?shù)SNO(C,5)學(xué)號(hào)CNO(C,3)課程號(hào)SCORE(N,5,2)分?jǐn)?shù)SNO(C,5)學(xué)號(hào)CNO(C,3)課程號(hào)SCORE(N,5,2)分?jǐn)?shù) 96001 001 77.5 96005 005 90 97002 003 91 96001 003 89 96005 006 89 97002 004 96001 004 86 960

30、05 007 76 97002 006 92 96001 005 82 96003 001 69 97004 005 90 96002 001 88 97001 001 96 97004 006 85 96002 003 92.5 97001 008 9597004 008 75 96002 006 90 96004 001 8797003 001 59 96005 004 92 96003 003 9197003 003 58 十. SQL語(yǔ)句1 SQL數(shù)據(jù)定義語(yǔ)句: 例1-1: (建立數(shù)據(jù)庫(kù)表) 建立教學(xué)數(shù)據(jù)庫(kù)的四個(gè)數(shù)據(jù)庫(kù)表,其中Student表中不包含SSEX(C,2) 字段,Sname

31、 字段為Sname(C,8)且可為空。 例1-2: (修改數(shù)據(jù)庫(kù)表) 在Student表中增加SEX(C,2) 字段。 例1-3: (修改列名) 將Student表中列名SEX修改為SSEX。 例1-4: (修改數(shù)據(jù)庫(kù)表) 將Student表中把Sname 字段修改為Sname(C,10)且為非空。 例1-5: (建立索引) 為Score表按課程號(hào)升序、分?jǐn)?shù)降序建立索引,索引名為SC_GRADE。 例1-6: (刪除索引) 刪除索引SC_GRADE。 例1-7: (建立數(shù)據(jù)庫(kù)表) 建立數(shù)據(jù)庫(kù)表S1(SNO,SNAME,SD,SA),其字段類型定義與Student表中的相應(yīng)字段(SNO,SNAM

32、E,SDEPT,SAGE)的數(shù)據(jù)類型定義相同。 例1-8: (修改數(shù)據(jù)庫(kù)表) 刪除成績(jī)表Score的參照完整性約束關(guān)系。 例1-9: (修改數(shù)據(jù)庫(kù)表) 添加成績(jī)表Score的參照完整性約束關(guān)系。 例1-10: (修改數(shù)據(jù)庫(kù)表名) 將數(shù)據(jù)庫(kù)表S1改名為Student_Temp。2 SQL數(shù)據(jù)操縱語(yǔ)句: 例2-1: (插入數(shù)據(jù)) 按前面各表中的數(shù)據(jù)分別插入到教學(xué)數(shù)據(jù)庫(kù)的四個(gè)數(shù)據(jù)庫(kù)表中。 例2-2:(多行插入) 將表Student中在計(jì)算機(jī)系(CS)的學(xué)生數(shù)據(jù)插入到表Student_Temp中。(以上操作中,注意用COMMIT提交數(shù)據(jù),將數(shù)據(jù)保存到數(shù)據(jù)庫(kù)服務(wù)器) 例2-3:(利用查詢來(lái)實(shí)現(xiàn)表的定義與

33、數(shù)據(jù)插入) 求每一個(gè)學(xué)生的平均成績(jī),把結(jié)果存入數(shù)據(jù)庫(kù)表Student_Gr中。 例2-4: (修改數(shù)據(jù)) 將Student_Temp表中所有學(xué)生的年齡加2。 例2-5: (修改數(shù)據(jù)) 將Course表中程序設(shè)計(jì)課時(shí)數(shù)修改成與數(shù)據(jù)結(jié)構(gòu)的課時(shí)數(shù)相同。 例2-6: (插入數(shù)據(jù)) 向Score表中插入數(shù)據(jù)(98001, 001, 95),根據(jù)返回信息解釋其原因。 例2-7: (插入數(shù)據(jù)) 向Score表中插入數(shù)據(jù)(97001, 010, 80),根據(jù)返回信息解釋其原因。例2-8: (刪除數(shù)據(jù)) 刪除Student表中學(xué)號(hào)為96001的學(xué)生信息,根據(jù)返回信息解釋其原因。例2-9: (刪除數(shù)據(jù)) 刪除Co

34、urse表中課程號(hào)為003 的課程信息,根據(jù)返回信息解釋其原因。 例2-10: (刪除數(shù)據(jù)) 刪除學(xué)生表Student_Temp中學(xué)號(hào)以96打頭的學(xué)生信息。(此操作后,注意用ROLLBACK回退可能更新的數(shù)據(jù)) 例2-11: (刪除數(shù)據(jù)) 刪除數(shù)據(jù)庫(kù)表Student_Temp中所有學(xué)生的數(shù)據(jù)。 例2-12:(刪除表) 刪除數(shù)據(jù)庫(kù)表Student_Temp和Student_Gr。3 SQL數(shù)據(jù)查詢語(yǔ)句: 例3-1: (選擇表中的若干列) 求全體學(xué)生的學(xué)號(hào)、姓名、性別和年齡。 例3-2: (不選擇重復(fù)行) 求選修了課程的學(xué)生學(xué)號(hào)。 例3-3: (選擇表中的所有列) 求全體學(xué)生的詳細(xì)信息。 例3-4

35、: (使用表達(dá)式) 求全體學(xué)生的學(xué)號(hào)、姓名和出生年份。 例3-5: (使用列的別名) 求學(xué)生的學(xué)號(hào)和出生年份,顯示時(shí)使用別名“學(xué)號(hào)”和“出生年份”。 例3-6: (比較大小條件) 求年齡大于19歲的學(xué)生的姓名和年齡。 例3-7: (比較大小條件) 求計(jì)算機(jī)系或信息系年齡大于18歲的學(xué)生的姓名、系和年齡。 例3-8: (確定范圍條件) 求年齡在19歲與22歲(含20歲和22歲)之間的學(xué)生的學(xué)號(hào)和年齡。 例3-9: (確定范圍條件) 求年齡不在19歲與22歲之間的學(xué)生的學(xué)號(hào)和年齡。 例3-10:(確定集合條件) 求在下列各系的學(xué)生信息:數(shù)學(xué)系、計(jì)算機(jī)系。 例3-11:(確定集合條件) 求不是數(shù)學(xué)系

36、、計(jì)算機(jī)系的學(xué)生信息。 例3-12:(匹配查詢) 求姓名是以“李”打頭的學(xué)生。 例3-13:(匹配查詢) 求姓名中含有“志”的學(xué)生。 例3-14:(匹配查詢) 求姓名長(zhǎng)度至少是三個(gè)漢字且倒數(shù)第三個(gè)漢字必須是“馬”的學(xué)生。 例3-15:(匹配查詢) 求選修課程001或003,成績(jī)?cè)?0至90之間,學(xué)號(hào)為96xxx的學(xué)生的學(xué)號(hào)、課程號(hào)和成績(jī)。 例3-16:(匹配查詢) 求課程名中包含 _ 字符的課程號(hào)、課程名和學(xué)時(shí)數(shù)。 例3-17:(涉及空值查詢) 求缺少學(xué)習(xí)成績(jī)的學(xué)生的學(xué)號(hào)和課程號(hào)。 例3-18:(控制行的顯示順序) 求選修003課程或004課程的學(xué)生的學(xué)號(hào)、課程號(hào)和分?jǐn)?shù),要求按課程號(hào)升序、分?jǐn)?shù)

37、降序的順序顯示結(jié)果。 例3-19:(組函數(shù)) 求學(xué)生總?cè)藬?shù)。 例3-20:(組函數(shù)) 求選修了課程的學(xué)生人數(shù)。 例3-21:(組函數(shù)) 求計(jì)算機(jī)系學(xué)生的平均年齡。 例3-22:(組函數(shù)) 求選修了課程001的最高、最低與平均成績(jī)。 例3-23:(分組查詢) 求各門(mén)課程的平均成績(jī)與總成績(jī)。 例3-24:(分組查詢) 求各系、各班級(jí)的人數(shù)和平均年齡。 例3-25:(分組查詢) 輸入以下查詢語(yǔ)句并執(zhí)行,觀察出現(xiàn)的其結(jié)果并分析其原因。 SELECT SNAME,SDEPT,COUNT(*)FROM STUDENT WHERE SDEPT=CS GROUP BY SDEPT; 例3-26:(分組查詢)

38、分析以下語(yǔ)句為什么會(huì)出現(xiàn)錯(cuò)誤。并給出正確的查詢語(yǔ)句。 SELECT SAGE FROM STUDENT GROUP BY SNO; 例3-27:(分組查詢) 求學(xué)生人數(shù)不足3人的系及其相應(yīng)的學(xué)生數(shù)。 例3-28:(分組查詢) 求各系中除01班之外的各班的學(xué)生人數(shù)。 例3-29:(涉及空值的查詢) 分別觀察各組函數(shù)、行的顯示順序以及分組查詢與空值的關(guān)系。 例3-30:(連接查詢) 求選修了課程001且成績(jī)?cè)?0分以下或成績(jī)?cè)?0分以上的學(xué)生的姓名、課程名稱和成績(jī)。 例3-31:(連接查詢與表的別名) 求選修了課程的學(xué)生的學(xué)生姓名、課程號(hào)和成績(jī)。 例3-32:(自身連接查詢) 求年齡大于 李麗 的

39、所有學(xué)生的姓名、系和年齡。 例3-33:(外部連接查詢) 求選修了課程002或003的學(xué)生的學(xué)號(hào)、課程號(hào)、課程名和成績(jī),要求必須將002和003課程的相關(guān)信息顯示出來(lái)。 例3-34:(子查詢) 求與 黎明 年齡相同的學(xué)生的姓名和系。 例3-35:(子查詢) 求選修了課程名為 數(shù)據(jù)結(jié)構(gòu) 的學(xué)生的學(xué)號(hào)和姓名。 例3-36:(子查詢ANY) 求比數(shù)學(xué)系中某一學(xué)生年齡大的學(xué)生的姓名和系。 例3-37:(子查詢ALL) 求比數(shù)學(xué)系中全體學(xué)生年齡大的學(xué)生的姓名和系。 例3-38:(子查詢EXISTS) 求選修了課程004的學(xué)生的姓名和系。 例3-39:(返回多列的子查詢) 求與 李麗 同系且同齡的學(xué)生的姓

40、名和系。 例3-40:(多個(gè)子查詢) 求與 黎明 同系,且年齡大于 李麗 的學(xué)生的信息。 例3-41:(子查詢中使用表連接) 求數(shù)學(xué)系中年齡相同的學(xué)生的姓名和年齡。 例3-42:(連接或嵌套查詢) 檢索至少選修王成剛老師所授課程中一門(mén)課程的女學(xué)生姓名。 例3-43:(嵌套與分組查詢) 檢索選修某課程的學(xué)生人數(shù)多于3人的教師姓名。 例3-44:(集合查詢) 列出所有教師和同學(xué)的姓名和性別。 例3-45:(相關(guān)子查詢) 求未選修課程004的學(xué)生的姓名。 例3-46:(相關(guān)子查詢) 求選修了全部課程的學(xué)生的姓名。 例3-47:(相關(guān)子查詢) 求至少選修了學(xué)生 96002 所選修的全部課程的學(xué)生的學(xué)號(hào)

41、。 例3-48:(相關(guān)子查詢) 求成績(jī)比所選修課程平均成績(jī)高的學(xué)生的學(xué)號(hào)、課程號(hào)、和成績(jī)。 例3-49:(相關(guān)子查詢) 查詢被一個(gè)以上的學(xué)生選修的課程號(hào)。例3-50:(相關(guān)子查詢) 查詢所有未選課程的學(xué)生姓名和所在系。 4 SQL視圖的定義與操縱: 例4-1: (建立視圖) 建立計(jì)算機(jī)系的學(xué)生的視圖STUDENT_CS。 例4-2: (建立視圖) 建立由學(xué)號(hào)和平均成績(jī)兩個(gè)字段的視圖STUDENT_GR。 例4-3: (視圖查詢) 利用視圖STUDENT_CS,求年齡大于19歲的學(xué)生的全部信息。 例4-4: (視圖查詢) 利用視圖STUDENT_GR,求平均成績(jī)?yōu)?8分以上的學(xué)生的學(xué)號(hào)和平均成績(jī)。 例4-5: (視圖更新) 利用視圖STUDENT_CS,增加學(xué)生( 96006,張然,CS,02,男,19 )。 例4-6: (視圖更新) 利用視圖STUDENT_CS,將學(xué)生年齡增加1歲。觀察其運(yùn)行結(jié)果并分析原因。 例4-7: (視圖更新) 利用視圖STUDENT_GR,將平均成績(jī)?cè)黾?分。觀察其運(yùn)行結(jié)果并分析原因。 例4-8: (視圖更新) 刪除視圖STUDENT_CS中學(xué)號(hào)為 96006 的學(xué)生的全部數(shù)據(jù)。 例4-9: (視圖更

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論