




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
中南大學數(shù)據(jù)庫實驗報告課題:數(shù)據(jù)庫原理及應用姓名:林一新班級:信息0803學號:0909082112指導老師:張祖平實驗時間:2011.04實驗目的與要求熟悉ORACLE的運行環(huán)境,在CLIENT端進行聯(lián)接設置與服務器聯(lián)通,進入ORACLE的SQL*PLUS的操作環(huán)境,進一步建立表格,并考慮主鍵,外部鍵,值約束。熟悉在SQL*PLUS環(huán)境下進行數(shù)據(jù)記錄查詢,其中查詢考慮簡單查詢,復雜查詢,嵌套查詢。熟悉在SQL*PLUS環(huán)境下進行數(shù)據(jù)記錄的修改、刪除及表結(jié)構(gòu)的修改。熟悉在SQL*PLUS環(huán)境下進行數(shù)據(jù)視圖及權(quán)限控制的操作。熟悉在SQL*PLUS環(huán)境下數(shù)據(jù)庫觸發(fā)器的建立及作用,了解大型數(shù)據(jù)庫編程。實驗環(huán)境硬件:586以上服務器、586以上微機,內(nèi)存512M以上。軟件:WINDOWS2000/2003SERVER可安裝ORACLE/9i/10g/11g/13iFORNT/WINDOWS(注意在32位與64位的區(qū)別)如果windows非server如XP等,安裝時請選擇個人版(PERSONAL)實驗內(nèi)容及步驟熟悉ORALCE環(huán)境并練習SQL的定義打開控制面板,――>管理工具――>服務――>啟動OracleServiceslab或者如圖通過界面或資源管理器右鍵找到管理。再找服務:啟動的服務如下或有OracleService****的服務。從桌面執(zhí)行SQL*PLUS或在程序中輸入:system/manager在SQL>狀態(tài)輸入建立用戶命令:createuserusernameidentifiedbypassword;其中username與password不要數(shù)字開頭,用戶名username中按規(guī)則加班級學號后綴如:U_301表示3班學號尾數(shù)為1號的用戶。給用戶授權(quán):grantresource,connecttousername;連接用戶:connectusername/password在SQL>就可以建表等操作了根據(jù)要求建立如下表,插入數(shù)據(jù)DROPTABLEDEPT_???;/*系,???為班級學號如dept_512,5班12號代碼:createuserU_2112identifiedbylyx330;grantresource,connecttoU_2112;connectU_2112/lyx330;DROPTABLEDEPT_2112;CREATETABLEDEPT_2112(DNOCHAR(3)PRIMARYKEY,DNVARCHAR2(32),DEANCHAR(8),TELCHAR(8)CHECK(SUBSTR(1,3)='8887'));DROPTABLESTUD_2112;CREATETABLESTUD_2112(SNOCHAR(10)PRIMARYKEY,SNAMECHAR(8),BIRTHDAYDATE,NATIVE_PLACEVARCHAR2(20),DNOCHAR(3)REFERENCESDEPT_2112(DNO));DELETEFROMSTUD_2112;
DELETEFROMDEPT_2112;
INSERTINTODEPT_2112VALUES('D01','計算機系','王大明','88879626');
INSERTINTODEPT_2112VALUES('D02','物理系','張大奔','88879726');INSERTINTODEPT_2112VALUES('D03','化學系','李水明','88879826');INSERTINTODEPT_2112VALUES('D04','管理系','歐陽衛(wèi)紅','88879926');INSERTINTODEPT_2112VALUES('D05','外語系','寬左右','88879526');INSERTINTOSTUD_2112VALUES('0909080524','胡明天',SYSDATE-365*21,'湖南長沙','D01');INSERTINTOSTUD_2112VALUES('0909080134','唐明海',SYSDATE-365*21,'湖南長沙','D01');INSERTINTOSTUD_2112VALUES('0909080224','張麗梅',SYSDATE-365*20,'湖南長沙','D01');INSERTINTOSTUD_2112VALUES('0909080324','李有能',SYSDATE-365*22,'湖南長沙','D02');INSERTINTOSTUD_2112VALUES('0909080424','王漢中',SYSDATE-365*22,'湖南長沙','D02');INSERTINTOSTUD_2112VALUES('0909080464','高強',SYSDATE-365*21,'','D02');INSERTINTOSTUD_2112VALUES('0909080474','JONE',SYSDATE-365*23,'','D03');INSERTINTOSTUD_2112VALUES('0909080484','SMITH',SYSDATE-365*21,'','D03');INSERTINTOSTUD_2112VALUES('0909080594','TOMHONE',SYSDATE-365*22,'','D03');INSERTINTOSTUD_2112VALUES('0909080264','張三',SYSDATE-365*22,'','D04');INSERTINTOSTUD_2112VALUES('0909080274','李四',SYSDATE-365*21,'','D04');INSERTINTOSTUD_2112VALUES('0909080284','王老五',SYSDATE-365*20,'','D04');思考題:改變表的名稱及數(shù)據(jù)類型再進行相應的操作。答:改變表名的操作為:ALTERTABLE當前表名RENAMETO新表名;可以通過以下屬性改變屬性的數(shù)據(jù)類型:ALTERTABLE表名MODIFY(列名數(shù)據(jù)類型)。先刪除主表DEPT_???,結(jié)果怎么樣?答:因為DEPT_???中屬DNO作為STUD_???中的外鍵被參照,為了約束完整性不應該被首先刪除。但是可以用cascade關(guān)鍵字實現(xiàn)級聯(lián)刪除。修改表中的字段類型與長度,考慮表中有數(shù)據(jù)或者沒數(shù)據(jù)情況。答:修改表中字段類型與長度:ALTERTABLEDEPT_???MODIFY(DNOCHAR(2))。表中主鍵值不允許為null;屬性定義中聲明為notnull也不允許空值。插入相同的學號與相同的系號會出現(xiàn)什么結(jié)果答:不允許。主鍵值不可相同。插入空的學號或空的系號會出現(xiàn)的結(jié)果答:不允許。主鍵值不允許為空值。記錄查詢1.查詢所有學生記錄select*fromSTUD_2112;2.查詢所有系的記錄,并按系號升序排列selectDN,DNOfromDEPT_2112ORDERbyDNODESC;3.查詢有自己姓名的記錄Select*fromSTUD_2112whereEXISTS(SNAME);4.查詢’張三’的SNO,SNAME,BIRTHDAYselectSNO,SNAME,BIRTHDAYfromSTUD_2112whereSNAME=’張三’;5.查詢計算系所有的學生記錄select*fromSTUD_2112whereDNO=’D01’6.查詢各計算系學生在各年齡值的人數(shù),如19的為200,20的有500等selectCOUNT(AGE)fromSTUD_2112groupby(SYSDATE-BIRTHDAY)/365;7.查詢’張三’的SNO,BIRTHDAY,DNO,DN,DEANselectSNO,BIRTHDAY,STUD_2112.DNO,DN,DEANfromSTUD_2112,DEPT_2112whereSNAME=’張三’ANDSTUD_2112.DNO=DEPT_2112.DNO;思考題:查詢學生的記錄數(shù)。答:selectCOUNT(*)fromSTUD_2112;查詢平均年齡小于22歲的系號及學生SNO,SNAME,AGE答:運用子查詢可實現(xiàn)。找出平均年齡大于20的系名及平均年齡數(shù)答:運用having()聚合函數(shù)。SQL的數(shù)據(jù)操縱在STUD中增加AGENUMBER(2)/*年齡*/字段,并求出每個學生入校時的年齡。ALTERTABLESTUD_2112ADDAGENUMBER(2);UPDATESTUD_2112SETAGE=(SYSDATE-BIRTHDAY)/365;UPDATESTUD_2112將STUD_???表中的08級學生的年齡都加3SETAGE=AGE+3WHERESNOlike’090908____’;將DEPT_???表中的’計算機系’改為’信息科學與工程學院’UPDATEDEPT_2112SETDN=’信息科學與工程學院’WHEREDN=’計算機系’;刪除07級以前的所有的學生記錄DELETEFROMSTUD_2112WHERESNO<0909070000;思考題:誤刪了STUD_???中的記錄,怎么辦?答:可以運用事務回滾rollbacktosavepointlabel.此外,為了防止不必要的回滾操作。設置savepoint前應該在適當位置用commit提交事務。怎么樣才能做到在一個語句中將學生的年齡加上相應的學習年數(shù)(如08級加3,09級加2,10級加1,07級加4等)。答:UPDATESTUD_2112SETAGE=AGE+11-TO_NUMBER(SUBSTR(SNO,5,2));3:建立與STUD_???對應的表ST_???(SNO,SNAME,AGE/*年齡*/),在ST_???輸入若干學號(在STUD_???中有的有幾個),然后將STUD_???中的SNAME,BIRTHDAY轉(zhuǎn)入到ST_???相應的SNO,AGE(多表間的更新)。答:CREATETABLEST_2112(SNOCHAR(10)PRIMARYKEY,SNAMECHAR(8),AGENUMBER(2));INSERTINTOST_2112(SNO)VALUES('0909080424');INSERTINTOST_2112(SNO)VALUES('0909080464');INSERTINTOST_2112(SNO)VALUES('0909080474');INSERTINTOST_2112(SNO)VALUES('0909080484');UPDATEST_2112SETST_2112.AGE=ST_2112.AGE,ST_2112.BIRTHDAY=ST_2112.BIRTHDAYWHEREST_2112.SNO=ST_2112.SNO;視圖及權(quán)限控制視圖的建立connectsystem/manager;grantcreateviewtoU_2112;connectU_2112/lyx330;CREATEVIEWS_D_2112ASSELECTSNO,SNAME,STUD_2112.DNO,DN,TELFROMSTUD_2112,DEPT_2112WHERESTUD_2112.DNO=DEPT_2112.DNOANDTO_CHAR(BIRTHDAY,'YYYY')>='1991';2.對視圖進行查詢Select*fromS_D_2112;3.分別將對象的各種權(quán)限授予相應的用戶假若已有用戶SCOTT(視系統(tǒng)實際情況),在SCOTT中看操作權(quán)限的變化。
GRANTINSERTONSTUD_2112TOSCOTT;GRANTUPDATE(BIRTHDAY)ONSTUD_2112TOSCOTT;GRANTDELETEONSTUD_2112TOSCOTT;GRANTSELECTONS_D_2112TOSCOTT;思考題:在視圖S_D_???中只考慮信息08級,視圖將怎樣建立?答;CREATEVIEWS_D_2114ASSELECTSNO,SNAME,STUD_2112.DNO,DN,TELFROMSTUD_2112,DEPT_2112
WHERESTUD_2112.DNO=DEPT_2112.DNOANDSNOlike’090908____’;如果用戶為DBA,還需要給授權(quán)嗎?答:不需要??紤]基于一個表、簡單條件的視圖的更新操作。答:類同。4.考慮基于多表視圖的更新操作。答:一般不允許。數(shù)據(jù)庫觸發(fā)器與過程1.先建立表ST_???(SNO,SNAME,AGE)DROPTABLEST_2112;CREATETABLEST_2112(SNOCHAR(10),SNAMECHAR(8),AGENUMBER(2));2.建立觸發(fā)器
CREATEORREPLACETRIGGERSTUD_TRG_2112
BEFOREINSERTORUPDATEORDELETEONSTUD_2112
FOREACHROW
BEGINIFINSERTINGTHEN
INSERTINTOST_2112VALUES(:NEW.SNO,:NEW.SNAME,(SYSDATE-:NEW.BIRTHDAY)/365);ENDIF;IFUPDATINGTHENDELETEFROMST_2112WHERESNO=:OLD.SNO;INSERTINTOST_2112VALUES(:NEW.SNO,:NEW.SNAME,(SYSDATE-:NEW.BIRTHDAY)/365);ENDIF;IFDELETINGTHENDELETEFROMST_2112WHERESNO=:OLD.SNO;ENDIF;END./3.驗證觸發(fā)器的作用在STUD_2112中輸入、修改、刪除數(shù)據(jù)時,查看ST_2112表中的變化。ALTERTABLEST_2112DROPCOLUMNAGEcascadeconstraints;INSERTINTOST_2112VALUES('0909081111','一一一',date'1988-05-02','中國福建INSERTINTOST_2112VALUES('0909082222','二二二',date'1988-04-02INSERTINTOST_2112VALUES('0909083333','一一一',date'1988-04-02','中國福建INSERTINTOST_2112VALUES('0909084444','一一一',date'1988-02-02','中國福建SELECT*FROMST_2112;UPDATEST_2112SETBIRTHDAY=DATE'1988WHERESNAME='二二二';SELECT*FROMST_2112;DELETEFROMST_2112WHERESNAME='一一一';SELECT*FROMST_2112;4.設計并調(diào)試過程(1)分系dno統(tǒng)計STUD_2112表中各年齡的人數(shù)(2)根據(jù)Bank數(shù)據(jù)庫,分街道(street)統(tǒng)計客戶的存款余額(balance),其中街道名為變量。出現(xiàn)的問題和解決方法建立視圖時顯示權(quán)限不足。解決方法:進行授權(quán)。connectsystem/manager;grantcreateviewtoU_2112;connectU_2112/lyx330;插入數(shù)據(jù)時,出現(xiàn)錯誤。解決方法:根據(jù)提示查找錯誤。檢查語法錯誤。檢查拼寫錯誤。檢查標點符號,引號是否缺少,標點是否為英文標點。心得體會數(shù)據(jù)庫的上機實驗結(jié)束了,通過對數(shù)據(jù)庫的學習也初步掌握了其各方面的知識,數(shù)據(jù)庫的的功能是強大的,面對目前的信息化社會,在整理、查詢、分析數(shù)據(jù)方面是一款強有力的工具。學習的目的在于將知識能合理順利的運用,將書本知識化為己用,將理論知識用在顯示當中的問題,是一個不知道到知道,了解完善應用的過程,尤其是計算機方面的知識更是如此,必要的上機練習是必不可少的。本次數(shù)據(jù)庫上機主要用到的是SQL結(jié)構(gòu)化查詢語言,它是一種數(shù)據(jù)庫查詢和程序設計語言,用于存取數(shù)據(jù)以及查詢、更新和管理關(guān)系數(shù)據(jù)庫系統(tǒng)。通過這幾次上機實驗,我們學會了數(shù)據(jù)查詢、修改、視圖建立和查詢、權(quán)限的修改、觸發(fā)器的建立等。上機過程中也遇到不少問題,通過老師的幫助和同學互相探討,解決了很多問題。通過本次實驗,我了解到數(shù)據(jù)庫今后的發(fā)展方向以及其廣泛應用,在今后應加強學習。參考文獻[1]RamezElmasri,ShamkantB.Navathe著,孫瑜注釋.FundamentalsofDatabaseSystems(FourthEdition)(數(shù)據(jù)庫系統(tǒng)基礎(chǔ)初級篇英文注釋版第四版)人民郵電出版社(影印,英文版).2008-10[2]張祖平,孫星明等.數(shù)據(jù)庫原理及應用,中南大學出版社,2010.11代碼匯總/*建表*/createuserU_2112identifiedbylyx330;grantresource,connecttoU_2112;connectU_2112/lyx330;DROPTABLEDEPT_2112;CREATETABLEDEPT_2112(DNOCHAR(3)PRIMARYKEY,DNVARCHAR2(32),DEANCHAR(8),TELCHAR(8)CHECK(SUBSTR(1,3)='8887'));DROPTABLESTUD_2112;CREATETABLESTUD_2112(SNOCHAR(10)PRIMARYKEY,SNAMECHAR(8),BIRTHDAYDATE,NATIVE_PLACEVARCHAR2(20),DNOCHAR(3)REFERENCESDEPT_2112(DNO));DELETEFROMSTUD_2112;
DELETEFROMDEPT_2112;
INSERTINTODEPT_2112VALUES('D01','計算機系','王大明','88879626');
INSERTINTODEPT_2112VALUES('D02','物理系','張大奔','88879726');
INSERTINTODEPT_2112VALUES('D03','化學系','李水明','88879826');INSERTINTODEPT_2112VALUES('D04','管理系','歐陽衛(wèi)紅','88879926');INSERTINTODEPT_2112VALUES('D05','外語系','寬左右','88879526');INSERTINTOSTUD_2112VALUES('0909080524','胡明天',SYSDATE-365*21,'湖南長沙','D01');INSERTINTOSTUD_2112VALUES('0909080134','唐明海',SYSDATE-365*21,'湖南長沙','D01');INSERTINTOSTUD_2112VALUES('0909080224','張麗梅',SYSDATE-365*20,'湖南長沙','D01');INSERTINTOSTUD_2112VALUES('0909080324','李有能',SYSDATE-365*22,'湖南長沙','D02');INSERTINTOSTUD_2112VALUES('0909080424','王漢中',SYSDATE-365*22,'湖南長沙','D02');INSERTINTOSTUD_2112VALUES('0909080464','高強',SYSDATE-365*21,'','D02');
INSERTINTOSTUD_2112VALUES('0909080474','JONE',SYSDATE-365*23,'','D03');
INSERTINTOSTUD_2112VALUES('0909080484','SMITH',SYSDATE-365*21,'','D03');
INSERTINTOSTUD_2112VALUES('0909080594','TOMHONE',SYSDATE-365*22,'','D03');INSERTINTOSTUD_2112VALUES('0909080264','張三',SYSDATE-365*22,'','D04');INSERTINTOSTUD_2112VALUES('0909080274','李四',SYSDATE-365*21,'','D04');INSERTINTOSTUD_2112VALUES('0909080284','王老五',SYSDATE-365*20,'','D04');/*查詢:*/select*fromDEPT_2112;select*fromSTUD_2112;selectDN,DNOfromDEPT_2112ORDERbyDNODESC;/*查詢系名稱,降序*/Select*fromSTUD_2112whereSNAME=’胡明天’;Select*fromSTUD_2112whereEXISTS(SNAME);selectSNO,SNAME,BIRTHDAYfromSTUD_2112whereSNAME=’張三’;select*fromSTUD_2112whereDNO=’D01’selectCOUNT(AGE)fromSTUD_2112groupby(SYSDATE-BIRTHDAY)/365;selectSNO,BIRTHDAY,STUD_2112.DNO,DN,DEANfromSTUD_2112,DEPT_2112whereSNAME=’張三’ANDSTUD_2112.DNO=DEPT_2112.DNO;select*fromSTUD_2112whereSNOlike’090908____’;/*數(shù)據(jù)操縱*/ALTERTABLESTUD_2112ADDAGENUMBER(2);UPDATESTUD_2112SETAGE=(SYSDATE-BIRTHDAY)/365;UPDATESTUD_2112SETAGE=AGE+3WHERESNOlike’090908____’;UPDATEDEPT_2112SETDN=’信息科學與工程學院’WHEREDN=’計算機系’;DELETEFROMSTUD_2112WHERESNO<0909070000;selectCOUNT(*)fromSTUD_2112;CREATETABLEST_2112(SNOCHAR(10)PRIMARYKEY,SNAMECHAR(8),AGENUMBER(2));INSERTINTOST_2112(SNO)VALUES('0909080424');INSERTINTOST_2112(SNO)VALUES('0909080464');INSERTINTOST_2112(SNO)VALUES('0909080474');INSERTINTOST_2112(SNO)VALUES('0909080484');UPDATEST_2112SETST_2112.AGE=ST_2112.AGE,ST_2112.BIRTHDAY=ST_2112.BIRTHDAYWHEREST_2112.SNO=ST_2112.SNO;/*視圖權(quán)限修改*/connectsystem/manager;grantcreateviewtoU_2112;connectU_2112/lyx330;CREATEVIEWS_D_2112ASSELECTSNO,SNAME,STUD_2112.DNO,DN,TELFROMSTUD_2112,DEPT_2112WHERESTUD_2112.DNO=DEPT_2112.DNOANDTO_CHAR(BIRTHDAY,'YYYY')>='1991';GRANTSELECTONSTUD_2112TOSCOTT;Select*fromS_D_2112;GRANTINSERTONSTUD_2112TOSCOTT;GRANTUPDATE(BIRTHDAY)ONSTUD_2112TOSCOTT;GRANTDELETEONSTUD_2112TOSCOTT;GRANTSELECTON
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小興安嶺闊葉紅松林根際微生物對氮添加的響應機制探究
- 2025年會計職稱考試《初級會計實務》成本核算與管理歷年真題匯編
- 優(yōu)化急診患者轉(zhuǎn)運流程的研究計劃
- 眾志成城共創(chuàng)輝煌計劃
- 商業(yè)智能的數(shù)字化轉(zhuǎn)型挑戰(zhàn)與風險管理
- 辦公工具在個人品牌塑造中的應用
- 完善倉庫固定資產(chǎn)管理的制度計劃
- 2025年一建《機電工程管理與實務》考試易錯知識點全面解析試題
- 2025年一建《機電工程管理與實務》考試機電工程技術(shù)前沿真題解析
- 醫(yī)療健康領(lǐng)域的智慧防騙技巧解析
- 便攜式小板凳設計方案
- DG-TJ 08-2122-2021 保溫裝飾復合板墻體保溫系統(tǒng)應用技術(shù)標準
- SFR-SE-ARC-0031激光跟蹤設置-作業(yè)指導書
- 錄音棚、攝影棚、直播室設計方案
- 河北工業(yè)大學C++終極題庫
- 安全生產(chǎn)隱患排查概述PPT課件
- CRCC認證目錄
- 稻谷加工畢業(yè)設計日加工秈稻400噸免淘洗大米生產(chǎn)線設計
- 因式分解—完全平方公式
- 社會保險申請表
- (完整版)高速公路拌合站設置規(guī)劃方案
評論
0/150
提交評論