第一篇:數據庫原理實驗學期總結
2012-2013學年第1學期《數據庫原理實驗》學期論文
數據庫原理實驗學期總結
班級: 學號:
姓名:
摘要:
學習數據庫已經一個學期了,經過這一個學期對SQL Server 2005課程的學習,使我受益匪淺。課堂上老師講課細致入微,內容詳細、層次鮮明、易于記憶和理解的教學課件,都使我學會了很多,從數據庫的創建,到數據庫的一些操作,如:表的更新與修改,還有相關的一些查詢,數據庫的維護等等。SQL Server 2005是一個關系數據庫管理系統,它是Microsoft 公司推出的SQL Server 數據庫管理系統的一個版本,具有使用方便,可伸縮性好與相關軟件集成程度高等優點。
關鍵字:實驗原理
實驗目的查詢
連接
一. 數據庫實驗的主要意義的目的
數據庫是數據管理的最新技術,是計算機科學的重要分支。目前,對數據庫各種模型的研究以及理論上的探討都還在蓬勃開展,其應用也從一般管理擴大到計算機輔助設計,人工智能以及科技計算等領域。數據庫實驗有利于同學理解書中復雜抽象的理論,讓同學建立直觀印象,加強實踐操作技能,加深對理論的理解。
二.概述本學期的實驗內容,目的及原理
本學期總共做了八個實驗:1.安裝SQL Server; 2.創建數據庫及基本表; 3.數據庫的基本操作; 4.根據數據模型建立數據庫; 5.SQL交互式查詢—單表查詢; 6.SQL交互式查詢---連接和嵌套; 7.創建存儲過程與觸發器; 8.綜合設計
實驗一 安裝SQL Server
目的是通過安裝SQL Server來初步了解應用工具相關的信息,以及掌握相關的操作 巧,通過安裝過程相應的問題來掌握一定解決方案,為以后的操作做相應的指導。
原理是通過掌握相關軟件所需要計算機系統的基本配置,了解安裝的具體步驟,然后 照步驟,安裝完成。
實驗二 創建數據庫及基本表
實驗主要讓我們掌握如何建表和數據庫,以及如何對表中屬性進行約束項的設置。其中創建數據庫和基本表都有兩種方法:一種是新建查詢用create命令創建新數據庫和基本表;另一種是直接設置法創建。在寫屬性約束時也如此,通常我們用CHECK命令來對屬性列進行約束。此外創建表時,每一個實體有多個屬性但表中需要一個主碼來唯一表示該實體,且該項不能為空。此外其他屬性若有基本約束如性別(男或女)、日期(不大于當前系統日期)等需要進行近一步約束,用戶根據需要定義一些約束性條件。
實驗三 數據庫的基本操作
實驗三是數據庫的基本操作對數據庫進行分離和附加、備份和恢復、導入導出的操作。其中分離和附加的目的是對數據庫的進行分離附加可以將自己所創建的數據庫的數據轉移 到U盤中隨身攜帶以便下次使用;備份和恢復的目的是對數據庫進行備份以及恢復以防數據 丟失可以再次回復繼續使用;導入和導出的作用是對數據進行導入到處可以將表內數據與其 他格式的軟件外數據相互共用。本次實驗主要是對數據庫本身進行基本操作,并未涉及數據
/ 3
2012-2013學年第1學期《數據庫原理實驗》學期論文
庫中表的操作,實驗中最主要是數據庫的導入導出操作。
實驗四 根據數據模型建立數據庫
實驗目的是學習如何為數據庫的表建立關系,并用E-R圖表示。
實驗原理:數據模型是一種模型,它是對現實世界數據特征的抽象,即數據模型是用來描述數據、組織數據和對數據進行操作的。數據模型是數據庫系統的核心和基礎,根據模型應用的目的可分為有兩大類:概念模型、邏輯模型和物理模型。它通常由數據結構,數據操作和完整形約束三部分組成。其中數據結構描述數據庫的組成對象以及對象之間的聯系;數據操作主要有查詢和更新兩大類操作;數據模型應該反映和規定本數據庫必須遵守的基本的通用的完整性約束,例如關系模型中必須滿足實體完整性和參照完整性約束。而實體完整性規則是指主碼非空且唯一;參照完整性規則是指外碼或者取空值,或者等于基本關系中某個元組的主碼值等等。
實驗五.SQL交互式查詢—單表查詢
實驗主要目的是掌握基本的單表查詢操作包括查詢、刪除、更新等,掌握一定的更新語句語句,以及相應的約束條件,對于刪除需要注意設置的一些約束,采取一定的措施,不然實驗中可能會出現一定的錯誤。
實驗六 SQL交互式查詢---連接和嵌套
實驗主要涉及多表連接查詢,實驗中應注意表連接的條件以及各表之間的關系,例如刪除時需先刪除關系表再刪除基本表;插入時亦如此。連接查詢中有等值連接(含自然連接)、外連接(左外連接和右外連接)。值得注意的是一般連接是從行角度出發,但自然連接需取消重復列,所以需從行和列的角度同時考慮;把舍棄的元組也保存在結果關系中,而其他屬性填空值的連接即外連接。
實驗七 創建存儲過程與觸發器 實驗原理:觸發器是用戶定義在關系表上的一類由事件驅動的特殊過程,它的功能非常 強,不僅可以用于數據庫完整性的檢查,還可以實現數據庫系統的其他功能,包括數據庫安全性積極更加廣泛的應用系統的一些業務流程和控制流程基于規則的數據和業務控制功能。一旦定義,任何用戶對表的的更新操作均有服務器自動激活相應的觸發器,在DBMS核心層進行集中的完整性控制,可以完成存儲過程的功能同時還具有自己的特點。
實驗八 綜合設計
本實驗是個綜合題,利用開發工具創建學生選課系統,使二者融合,將學生表、課程表及選課表建立關系,通過對數據庫的調用實現選課操作,這個實驗同時體現了SQL語言的嵌入式語言的特點,可在一些高級語言中實現相應的查詢以及其他一些功能等。
三.小結
1.我的實驗完成情況
通過一個學期的實驗課程,使我學會了很多的東西,可能是因為喜歡的原因,學的很認真,實驗課上聽老師的講解之后,課后實驗報告自己差不多都能夠完成,遇到一些小的問題自己上網查找以及通過一些資料都能夠把不會的問題搞懂,從這個過程學會了很多東西,通過實驗把一些理論抽象的東西能夠直觀的展現出來,使得自己更加有興趣去學習了。實驗過程中遇到不太懂的地方,上網搜過,書籍查過,當然老師也是問過的,課本中的東西不太懂的許多都是看許多遍,或者是看書上面的例子,許多知識就是在鉆研之后懂得的,實驗報告都是學會后自己做出來的,所以收獲還是很大的。
2.實驗中遇到的問題及解決方案
/ 3
2012-2013學年第1學期《數據庫原理實驗》學期論文
實驗中遇到的問題還是挺多的,下面舉兩個例子來說一下吧
問題 1:實驗六中有兩個實驗,第一個實驗做的查詢還是比較簡單的,第二個實驗的數據量比較大,表也特別的多,建立視圖中的查詢特別復雜,錯誤很多,做起來特別困難。
方案:通過查找書上所講到的知識點,把上面的各種連接查詢都看了幾遍,充分理解其中的應用,然后又按照最基本的方法,逐個表的查看其中涉及到的屬性,然后建立多表連接,最終成功執行。
問題 2:實驗中涉及到一些小的知識點,包括一些根據出生日期查詢年齡,還有就是通過SQL查詢語句創建自動編號的功能等。
方案:通過網上查找到的資料知道了相關的操作,求年齡:datediff(year,出生日期,getyear())或者是year(getdate())-year(出生日期);對于自動編號的設置,identity(1,1),從1開始逐個加1,數據類型為int。
四.附錄
1.實驗成果中較優秀的部分
實驗中實驗六的第二個實驗,通過眾多復雜的表,視圖的創建以及相關的查詢,使得對查詢語句的實用性更加的了解,對多表連接查詢更加透徹的了解,感覺還不錯。
2.參考資料
a.Information on IMS is available from IMB Corporation, Armonk,New York 10504 b.[美]David M.Kroenke.數據庫處理—基礎、設計與實現(第七版).北京:電子工業出版社,2001 c.周緒等編著.SQL server 2000 入門與提高.北京:清華大學出版社 ,2001 d.Ryan K.stephens,Ronald R.Plew著,何玉潔,武欣,鄧一凡等譯.數據庫設計.北京:機械工業出版社
e.薩思煊,王珊.數據庫系統概論.北京:高等教育出版社,1999
/ 3
第二篇:數據庫原理實驗學期總結
2010-2011學年第1學期《數據庫原理實驗》學期論文
數據庫原理實驗學期總結
我的題目:
班級:_______________學號:_______________姓名:_______________ 摘要
不少于100字
關鍵字:(至少4個)
一、數據庫實驗的主要意義的目的二、概述本學期的實驗內容和目的三、實驗中涉及的主要實驗原理
四、總結
1.我的實驗完成的實際情況
2.我在實驗中遇到的主要問題及解決方案/
22010-2011學年第1學期《數據庫原理實驗》學期論文
3.我對實驗的難度的看法和建議
4.我希望增加或減少什么實驗
5.我對數據庫原理實驗課程的建議
五、附錄/ 2
第三篇:數據庫原理實驗指導書
《數據庫原理實驗指導書》
河南科技大學電子信息工程學院目錄
實驗規則..................................................................................................................................0 實驗報告要求..........................................................................................................................2 基本實驗方法..........................................................................................................................2 實驗環境..................................................................................................................................2 實驗一:數據定義及更新語句練習......................................................................................3 實驗二:簡單查詢和連接查詢..............................................................................................5 實驗三:分組查詢和嵌套查詢..............................................................................................7 實驗四:視圖操作和數據控制..............................................................................................9 實驗五:觸發器和存儲過程................................................................................................11 選作題目................................................................................................................................13
實驗規則
為了順利完成實驗教學任務,確保人身設備安全,培養嚴謹、踏實、實事求是的科學作風和愛護國家財產的優良品質,特制定以下實驗規則:
1、實驗紀律
(1)在實驗室不得做和實驗無關的事情。(2)遵守紀律,不遲到,不曠課。
(3)不能拆卸硬件,更不能拿走實驗設備或儀器。(4)保持實驗室安靜、整潔,愛護公物。
2、實驗過程
(1)預習實驗內容。自行設計SQL語句。
(2)上機操作。每執行一句記錄執行情況,主要是錯誤信息和錯誤原因。(3)檢查操作結果是否正確。
(4)根據實驗過程的記錄書寫實驗報告。
實驗報告要求
1、報告用紙 采用統一的河南科技大學實驗報告用紙,不得用別的紙張代替。
2、實驗報告封面內容
實驗名稱:(如實驗一 數據庫創建)班級名稱:(如計科101班)學生學號: 學生姓名: 實驗時間:
3、實驗報告內容
見各具體實驗項目的要求。
基本實驗方法
本實驗要求熟悉SQL Server環境和數據庫的相關知識。
實驗環境
Microsoft SQL Server2012 2 實驗一:數據定義及更新語句練習一、二、實驗目的:熟練掌握用SQL語句實現數據庫和基本表的創建、數據的更新。預習要求:實驗前復習講授過的有關創建數據庫、基本表的SQL語句,預習SQL Server2000環境,特別是資源管理器和查詢分析器的相關用法。
三、實驗內容:
(一)用SQL語句建立如下mySPJ數據庫,包括S,P,J,和SPJ四個基本表(教材第二章習題5中的四個表),要求實現關系的三類完整性。
S(SNO,SNAME,STATUS,CITY);P(PNO,PNAME,COLOR,WEIGHT);J(JNO,JNAME,CITY);SPJ(SNO,PNO,JNO,QTY)供應商表S由供應商代碼(SNO)、供應商姓名(SNAME)、供應商狀態(STATUS)、供應商所在城市(CITY)組成。
零件表P由零件代碼(PNO)、零件名(PNAME)、顏色(COLOR)、重量(WEIGHT)組成。
工程項目表J由工程項目代碼(JNO)、工程項目名(JNAME)、工程項目所在城市(CITY)組成。
供應情況表SPJ由供應商代碼(SNO)、零件代碼(PNO)、工程項目代碼(JNO)、供應數量(QTY)組成,表示某供應商 供應某種零件 給某工程項目的數量為QTY。
(二)分別使用插入、刪除、修改的方式更新基本表中的數據。
四、實驗方法和步驟:
(一)使用Microsoft SQL Server企業管理器和查詢分析器建立數據庫mySPJ: 1.打開“開始->程序->Microsoft SQL Server->企業管理器”;
2.在企業管理器左邊的樹標簽中依次打開“Microsoft SQL Server-> SQL Server組->(local)(Windows NT)->數據庫”,(local)(Windows NT)前的紅色標記轉化為綠色標記表明NT服務已啟動;
3.從企業管理器的“工具”菜單中選擇“SQL 查詢分析器”,打開查詢分析器后,在其窗口書寫創建數據庫mySPJ的SQL語句,點擊執行按鈕(或F5鍵)執行該SQL 3 語句;
4.在企業管理器左邊的樹標簽中查看數據庫是否建立成功。
(二)在數據庫mySPJ中建立S,P,J,和SPJ四個基本表:
按照實驗內容給出的基本表結構在查詢分析器窗口中書寫SQL語句分別建立各表,并設置主鍵和外鍵約束;
(三)更新表數據:
1.利用Insert 語句將習題中給出的示例記錄插入各表。2.利用Update更新表中的記錄:
①將p表中的所有紅色零件的重量增加5。
②將spj表中所有天津供應商的QTY屬性值減少10。用子查詢。
3.利用Delete語句刪除p表中的所有紅色零件的記錄。
4.SQL語句執行后返回基本表查看更新后的結果,如果與期望不符,分析原因并記錄在實驗報告中。
五、思考題:
(一)在為各表設定關鍵字時彈出的頁面中有關鍵字和索引選項,試通過給基本表設定這兩個項目并說明二者的區別。
(二)在基本表中輸入數據時,注意數據與字段的數據類型和長度以及能否為空的屬性是否一致,保存時如有錯誤分析錯誤原因,及時改正并將錯誤報告寫在實驗報告中。
六、實驗報告要求:
(一)實驗目的:(二)實驗內容:
(三)完成情況(附上設計的SQL語句)。
(四)實驗結果:如果是查詢語句,將查詢結果記錄列出來,其它可以不寫。(五)問題及解決:首先寫出執行語句不成功的時候系統報告的錯誤信息。然后分析錯誤原因,并給出解決辦法。(六)回答思考題提出的問題,(七)實驗總結:心得體會,建議等。
實驗二:簡單查詢和連接查詢
一、實驗目的:熟練掌握用SQL語句實現的簡單查詢和多個數據表連接查詢。
二、預習要求:實驗前復習講授過的有關簡單查詢與多表查詢的知識,編寫相應的SQL語句。
三、實驗內容:
(一)完成下面的簡單查詢:
①查詢所有“天津”的供應商明細; ②查詢所有“紅色”的14公斤以上的零件。③查詢工程名稱中含有“廠”字的工程明細。(二)完成下面的連接查詢:
①等值連接:求s表和j表的相同城市的等值連接。
②自然連接:查詢所有的供應明細,要求顯示供應商、零件和工程的名稱,并按照供應、工程、零件排序。
③笛卡爾積:求s和p表的笛卡爾積 ④左連接:求j表和spj表的左連接。⑤右連接:求spj表和j表的右連接。
四、實驗方法和步驟:
參照實驗一中給出的使用Microsoft SQL Server企業管理器和SQL查詢分析器的方法,將實驗內容中所要求的查詢項目依次用SQL語句實現,并記錄下執行結果。
五、思考題:
查看實驗內容2中左連接和右連接的執行結果是否一致,為什么?
六、實驗報告要求:(一)實驗目的:(二)實驗內容:
5(三)完成情況(附上設計的SQL語句)。
(四)實驗結果:如果是查詢語句,將查詢結果記錄列出來,其它可以不寫。(五)問題及解決:首先寫出執行語句不成功的時候系統報告的錯誤信息。然后分析錯誤原因,并給出解決辦法。(六)回答思考題提出的問題,(七)實驗總結:心得體會,建議等。實驗三:分組查詢和嵌套查詢
一、實驗目的:熟練掌握用SQL語句實現多個數據表的分組查詢和嵌套查詢。
二、預習要求:實驗前復習講授過的有關分組查詢和嵌套查詢的知識,編寫相應的SQL語句。
三、實驗內容:(一)分組查詢:
1.求各種顏色零件的平均重量。2.求北京供應商和天津供應商的總個數。3.求各供應商供應的零件總數。4.求各供應商供應給各工程的零件總數。5.求使用了100個以上P1零件的工程名稱。6.求各工程使用的各城市供應的零件總數。
(二)嵌套查詢:
1.in連接謂詞查詢:
① 查詢沒有使用天津供應商供應的紅色零件的工程名稱。② 查詢供應了1000個以上零件的供應商名稱。(having)2.比較運算符:求重量大于所有零件平均重量的零件名稱。3.Exists連接謂詞:
① 查詢供應J1的所有的零件都是紅色的供應商名稱。② 至少用了供應商S1所供應的全部零件的工程號JNO。
四、實驗方法和步驟:
參照實驗一中給出的使用Microsoft SQL Server企業管理器和SQL查詢分析器的方法,將實驗內容中所要求的查詢項目依次用SQL語句實現,并記錄下執行結果。
五、思考題:
(一)嵌套查詢中的in連接謂詞查詢,關鍵字in可以直接用any代替么?什么情況下in和any可以互相代替?
(二)嵌套查詢中的內查詢為外查詢返回的內容是什么?是表達式?視圖?還是物理數據集合?
六、實驗報告要求:(一)實驗目的:(二)實驗內容:
(三)完成情況(附上設計的SQL語句)。
(四)實驗結果:如果是查詢語句,將查詢結果記錄列出來,其它可以不寫。(五)問題及解決:首先寫出執行語句不成功的時候系統報告的錯誤信息。然后分析錯誤原因,并給出解決辦法。(六)回答思考題提出的問題,(七)實驗總結:心得體會,建議等。
實驗四:視圖操作和數據控制
一、實驗目的:熟練掌握用SQL語句實現視圖操作和數據控制。
二、預習要求:實驗前復習講授過的有關視圖操作和數據控制的知識,編寫相應的SQL語句。
三、實驗內容:
(一)定義如下視圖:
①查詢北京的供應商的編號、名稱和城市。②查詢S1供應商的所有供應明細。
③查詢各工程名稱使用的各種顏色零件的個數。查詢上面定義的視圖。
(二)數據控制:
①使用GRANT把對S表查詢的權利授予WangLi。
②使用GRANT把對P表查詢、插入、修改、刪除的權利授予LiMing。
③使用REVOKE把LiMing對P表插入、刪除的權利回收。
四、實驗方法和步驟:
參照實驗一中給出的使用Microsoft SQL Server企業管理器和SQL查詢分析器的方法,將實驗內容中所要求的查詢項目依次用SQL語句實現,并記錄下執行結果。
五、思考題:
實驗內容中的哪些視圖可以用來更新記錄?
六、實驗報告要求:(一)實驗目的:(二)實驗內容:
(三)完成情況(附上設計的SQL語句)。
(四)實驗結果:如果是查詢語句,將查詢結果記錄列出來,其它可以不寫。(五)問題及解決:首先寫出執行語句不成功的時候系統報告的錯誤信息。然后 9 分析錯誤原因,并給出解決辦法。(六)回答思考題提出的問題,(七)實驗總結:心得體會,建議等。
實驗五:觸發器和存儲過程
一、實驗目的:理解觸發器和存儲過程的含義,掌握用SQL語句實現觸發器和存儲過程的編寫,并初步掌握什么情況下使用事務。
二、預習要求:存儲過程和觸發器的相關概念,事務的相關概念,編寫相應的SQL語句。
三、實驗內容:
有一個小型的圖書管理數據庫,包含的表為:
bookstore(bookid,bookname,bookauthor,purchasedate,state);--圖書庫存表
borrowcard(cardid,ownername);--借書證表
borrowlog(cardid,bookid,borrowdate,returndate);--借書記錄表 寫一個存儲過程,實現借書操作,要求有事務處理。(1)讀者借書,要先設置書籍不在庫標志state(借出),然后增加借書記錄,在同一事務中完成。(2)要求在事務執行過程中引入錯誤觸發事件,以此體會事務的錯誤保護機制和事務編程的作用。(3)要求用觸發器實現表的完整性控制。
四、實驗方法和步驟:
(一)在查詢分析器中創建包含以上三張表的數據庫。
(二)參考CREATE PROCEDURE語句和Create Trigger語句。在事務執行過程中引入錯誤觸發事件,可以考慮在增加借書記錄時違反實體完整性或參照完整性,以此體會事務的錯誤保護機制,并用觸發器實現表的完整性控制。
五、思考題:
如何通過系統的設置實現類似的功能,而不需觸發器?
六、實驗報告要求:(一)實驗目的:(二)實驗內容:
(三)完成情況(附上設計的SQL語句)。
11(四)實驗結果:如果是查詢語句,將查詢結果記錄列出來,其它可以不寫。(五)問題及解決:首先寫出執行語句不成功的時候系統報告的錯誤信息。然后分析錯誤原因,并給出解決辦法。(六)回答思考題提出的問題,實驗總結:心得體會,建議等。
選作題目
選作題目1:用vb,delphi或者c++builder設計一個數據庫應用程序,實現一個簡單的成績管理,建立三個表:學生表S,課程表C和成績表SC。要求實現的功能:(1)維護學生信息;(2)維護課程信息;(3)錄入成績;(4)查詢一個學生的所有課程成績;(5)查詢每門課程的平均成績。(6)打印學生成績報表;(7)打印每門課程的平均成績報表。
選作題目2:自由結合以(5-6)人為小組完成一個數據庫系統設計的小課題。要求用ERWIN工具對數據庫進行建模。
第四篇:數據庫原理實驗教案
《數據庫原理》課程實驗
實驗1 創建數據庫和數據表
一、實驗目的
熟悉SQL Server Management Studio界面;掌握通過圖形化向導和執行Transact-SQL語句創建數據庫的方法。
二、實驗環境
Windows XP操作系統,SQL Server 2005軟件。
三、實驗課時
2課時。
四、實驗內容
SQL Server中的一個數據庫必須至少包含一個數據文件和一個事務日志文件,所以創建數據庫就是建立主數據文件和日志文件。
在SQL Server 2005中創建數據庫的方法主要有兩種:一是在SQL Server Management Studio窗口中使用可視化界面,通過方便的圖形化向導創建,二是通過執行Transact-SQL語句創建。
(一)向導方式創建
1、從“開始”菜單選擇“所有程序”→“Microsoft SQL Server 2005”,打開“SQL Server Management Studio”窗口,使用Windows或SQL Server身份驗證建立連接。
2、在“對象資源管理器”窗格中展開服務器,選擇“數據庫”節點右擊,從彈出的快捷菜單中選擇“新建數據庫”命令,打開“新建數據庫”窗口。
3、該窗口中有3個頁,分別是“常規”、“選項”和“文件組”,完成這3個頁的內容即可完成數據庫的創建。這里,我們僅設置“常規”的相應內容,其他2個頁的內容按照默認設置即可。
(1)“數據庫名稱”文本框中輸入數據庫的名稱,如“sample_st”,再輸入該數據庫的所有者,這里使用默認值即可。(也可以通過單擊文本框右邊的“瀏覽”按鈕選擇所有者。
(2)“數據庫文件”列表中包括兩行,一個是數據文件,一個是日志文件。通過單擊下面相應的按鈕可以添加或刪除相應的數據文件。
? 邏輯名稱:指定該文件的文件名。
? 文件類型:用于區別當前文件是數據文件還是日志文件。? 文件組:顯示當前數據庫文件所屬的文件組。
? 初始大小:指定該文件的初始容量。在SQL Server 2005中數據文件的默認值為3MB,日志文件的默認值為1MB。? 自動增長:用于設置在文件容量不夠用時,文件根據何種增長方式自動增長。
? 路徑:指定存放在文件的目錄。默認情況下,SQL Server 2005將存放路徑設置為其安裝目錄下的data子目錄,單擊該列中的按鈕可以在打開的“定位文件夾”對話框中更改數據庫的存儲路徑。
完成上述操作后,單擊“確定”按鈕關閉“新建數據庫”窗口,即完成了數據庫的創建,可以在“對象資源管理器”窗格中看到新建的數據庫。
(二)語言方式創建
SQL Server 2005使用的Transact-SQL語言是標準SQL的增強版本,使用它提供的Create Database語句同樣可以完成對數據庫的建立(參考內容見附錄)。
1、單擊“新建查詢”按鈕,創建一個查詢輸入窗口將附錄中的語句復制到該窗口。選擇創建數據庫的命令,單擊工具欄中的“分析”按鈕,可以檢查語法錯誤;單擊“執行”按鈕即可執行語句,在查詢窗口內的“查詢”窗格中可以看到“命令已成功完成”的提示消息。在“對象資源管理器”窗格中刷新,即可看到新建的數據庫。
2、繼續執行Create Database之后的語句,在“sample_st”數據庫中用Create Table命令依次建立Student、Course和SC這三個數據表,利用Insert命令為各數據表添加數據。(參考內容見教材P84)
(三)知識鞏固
仿照附錄內容,用SQL-DDL語言創建“產品訂購”數據庫,包含四個數據表S、P、J和SPJ,表結構及內容見教材P122。
實驗2 數據庫的簡單查詢
一、實驗目的
掌握單表查詢中各個子句(Select、From、Where、Group、Having、Order)的用法,特別要掌握比較運算符和邏輯運算符的使用。
二、實驗環境
Windows XP操作系統,SQL Server 2005軟件。
三、實驗課時
2課時。
四、實驗內容
在已建立的數據庫和數據表的基礎上,用Select語句完成下列查詢操作。
1、查詢全體學生的學號和姓名。
select sn,sno from s
2、查詢全體學生的所有基本信息(僅針對Student表)。
select * from s
3、對SC表查詢全體學生的選課記錄,在顯示結果中為“Grade”列增加5分。select score+5 from sc
4、查詢全體學生的學號和姓名,將原來的英文列名設置中文別名。select sn as 姓名,sno as 學號 from s
5、顯示所有選課學生的學號,去掉重復結果。
select distinct sno from sc
6、查詢成績在80分以上的學生選課記錄
select * from sc where score>80
7、查詢經濟系所有學生的學號和姓名。
select sn,sno from s where dept='經濟系'
8、查詢成績在80~90分的學生選課記錄。
select * from sc where score between 80 and 90
9、查詢年齡不在22~25的學生記錄。
select * from s where age not between 22 and 25
10、查詢所有姓“劉”的學生記錄。
select * from s where sn like'劉%'
11、查詢無考試成績(成績為空值)的學號、課程號。5
select sno ,cno from sc where score is null
12、查詢考試成績非空值的學號、課程號。
select sno ,cno from sc where score is null
13、查詢數學系年齡小于20歲的學生記錄。
select * from s where dept ='數學系'and age <28
14、查詢選修了“101”或“102”課程的選課記錄。select * from c where cno ='101' or cno ='102'
15、查詢學生總人數。
select count(sno)from s
16、查詢選修了課程的學生人數。
select count(distinct sno)from sc
17、查詢選修了“101”課程的學生的平均成績。
select AVG(score)from sc
where cno='101'
18、查詢學號為“01003”的學生的考試總成績。
select sum(score)from sc
where sno=01003
19、查詢“101”課程的最高分和最低分。
select max(score),MIN(score)from sc
where cno='101'
20、查詢每門課程的選課人數。
select cno,COUNT(sno)from sc
group by cno
21、查詢每個學生的學號、選課數、平均成績和總成績。
select sno,COUNT(cno)/*,AVG(score),sum(score)*/ from sc group by sno
22、查詢選課數超過2的學生學號及其選課數。
select sno,COUNT(cno)from sc
group by sno
having COUNT(*)>2
23、查詢所有學生信息,查詢結果按年齡降序排列。(針對Student表操作)
select * from s order by AGE desc
24、查詢所有學生信息,查詢結果按系名升序,同系學生按年齡降序排列。
select * from s order by dept,AGE desc
25、查詢選課數超過2的學生學號及其選課數,查詢結果按選課數降序排列。
select sno,COUNT(cno)from sc group by sno having COUNT(*)>2 order by count(cno)desc
實驗3 數據庫的多表查詢
一、實驗目的
繼續熟練SQL-SELECT語句的使用;理解多表查詢的概念;掌握多表連接查詢中各個子句的用法,特別要比較內連接和外連接的結果。掌握非相關子查詢、相關子查詢的用法,理解它們的執行過程;學會在SQL Server中用Exists實現交運算,用Not Exists實現差運算。
二、實驗環境
Windows XP操作系統,SQL Server 2005軟件。
三、實驗課時
2課時。
四、實驗內容
(一)、在已建立的數據庫和數據表的基礎上,用Select語句的連接查詢完成下列操作。
1、查詢每個學生的基本信息及其選課情況。
2、查詢選修“101”課程的學生學號、姓名和成績。
3、查詢與“李平”在同一個系學習的學生記錄。
4、查詢與“李平”年齡相同的學生記錄。
5、查詢選修課程名為“數據庫原理”的選課記錄。
6、查詢選修課程名為“數據庫原理”的學生記錄。
7、查詢選修“101”課程且成績≥90的學號、姓名和成績。
8、查詢“李平”的所有選課記錄。
9、查詢數學系學生選修的課程號,要求結果中去掉重復記錄。
10、查詢計算機系選修課程數≥2的學號、姓名及平均成績,查詢結果按平均成績降序。
11、查詢每個學生的學號、選修課程號、課程名及成績。
12、查詢所有學生的選修情況(包括選課和未選課的學生),要求顯示學號、姓名、課程號和成績。
(二)、在已建立的數據庫和數據表的基礎上,用Select語句的嵌套查詢完成下列操作。
1、查詢選修“101”課程且成績≥90的學號、姓名。
2、查詢“李平”的所有選課記錄。
3、查詢與“李平”在同一個系學習的學生記錄。
4、查詢與“李平”年齡相同的學生記錄。
5、查詢選修課程名為“數據庫原理”的選課記錄,輸出結果包括學號和成績。
6、查詢選修課程名為“數據庫原理”的學生記錄,輸出結果包括學號、姓名和所在系。
7、查詢學號為“01003”學生的選修課程號和課程名。
8、查詢沒有選修“101”課程的學生學號和姓名。
9、查詢選修“101”課程或“102”課程的學生姓名。
10、查詢選修“101”課程和“102”課程的學生學號。
11、查詢選修“101”課程但沒選修“102”課程的學生學號。
12、查詢沒有選修任何課程的學生記錄,輸出結果包括學號、姓名和所在系。
13、查詢數學系學生選修的課程號,要求結果中去掉重復記錄。
14、查詢選修課程至少包含“01003”選修課程的學生學號。實驗4 數據庫更新、視圖定義及使用
一、實驗目的
掌握Insert、Update、Delete語句的使用;對于Insert語句,要求理解默認值約束、空值約束在插入記錄時所起的作用。理解視圖的概念,掌握Create View、Drop View語句的使用;掌握基于視圖的查詢語句的使用。
二、實驗環境
Windows XP操作系統,SQL Server 2005軟件。
三、實驗課時
2課時。
四、實驗內容
(一)、在已建立的數據庫和數據表的基礎上,向數據庫中添加一個臨時表ST,其結構比Student表結構多一個score字段。用Insert語句向臨時表輸入數據,輸入有誤時用Update語句進行修改。再用三個更新語句完成下列操作。
1、向Student表添加若干新記錄,內容自定。(觀察已定義的表的約束情況)
2、向SC表添加新記錄,內容自定,不低于10條(注意不能違反參照完整性)。
3、為臨時表ST添加記錄。
4、把Student表的所有行一次性地加到臨時表ST中。
5、在ST表中把所有學生的成績加2分。
6、在ST表中把所有學生的年齡增加1。
7、在ST表中把“李平”的所在系改為“計算機”。
8、在ST表中將選修課程“數據庫原理”的學生成績加2分。
9、在SC表中刪除所有成績為空值的選修記錄。
10、刪除計算機系選修成績不及格的選課記錄。
(二)、在已建立的數據庫和數據表的基礎上,完成下列操作。
1、建立數學系學生的視圖MAST。
2、建立計算機系選修課程名為“數據庫原理”的學生視圖,視圖名:CSTVIEW,該視圖中應包括屬性列:學號、姓名、成績。
3、創建一個名為STSUMVIEW的視圖,包括所有學生的學號和總成績。
4、建立學生選課視圖SCVIEW,包括所有學生的學號、姓名、課程號、課程名和成績。
5、通過MAST視圖查詢學生基本信息。
6、通過SCVIEW查詢成績大于90分的學生的學號和成績。
7、查詢計算機系選修課程名為“數據庫原理”并且成績大于85分的學生的學號和成績。
8、通過MAST視圖將學號為“01008”學生的年齡修改為21歲。
9、通過MAST視圖將學號為“01009”學生所在系改為“經濟”,是否能成功執行?若不能成功請說明理由;若修改成功,請再次通過MAST視圖查詢學生基本信息,是否能查詢到該生?若不能查詢請說明理由。
10、通過SCVIEW視圖將學號為“01004”學生的總成績修改為380分,是否能成功執行?若不能成功請說明理由。
實驗5 數據庫的安全與保護
一、實驗目的
理解SQL Server的用戶與權限管理機制,掌握用對象資源管理器創建服務器登錄帳號,并同時建立用戶。掌握如何為給定的用戶分配權限。
二、實驗環境
Windows XP操作系統,SQL Server 2005軟件。
三、實驗課時
2課時。
四、實驗內容
用戶與權限管理
(1)打開“SQL Server Management Studio”窗口,使用對象資源管理器創建兩個服務器登錄帳號Test1和Test2,并在“sample_st”數據庫中創建兩個對應的同名用戶。設置Test1用戶和Test2用戶的默認架構為guest。
(2)使用Test1身份登錄,并為Test2分配創建數據表的權限;用Test2身份登錄來驗證權限分配成功。
(3)使用Test1身份登錄,收回剛剛分配給Test2的創建數據表的權限;用Test2身份登錄來驗證權限回收成功。
五、實驗步驟
1、使用對象資源管理器創建兩個服務器登錄帳號。以系統管理員身份登錄SQL Server。打開“SQL Server Management Studio”窗口,在對象資源管理器列表中,打開展開“安全性”文件夾,選擇“登錄名”圖標,單擊鼠標右鍵,在彈出的菜單中選擇“新建登錄名”。在打開的對話框中依次建立Test1和Test2,選擇“SQL Server身份驗證”,同時還要輸入密碼,默認數據庫為“sample_st”。
(2)在“用戶映射”中列出了當前登錄帳號可以選擇訪問的數據庫如“sample_st”,在其左側的復選框中打勾,表示當前登錄帳號可以訪問對應的數據庫,默認用戶名與登錄帳號相同。
(3)單擊“確定”按鈕完成創建。
2、創建新的數據庫用戶。
在對象資源管理器中選中要訪問操作的數據庫,展開“安全性”文件夾,在“用戶”文件夾中查找是否已建立與登錄名Test1和Test2同名的數據庫用戶,若已建立,則在屬性中修改其默認架構為guest;否則右擊鼠標在菜單中選擇“新建用戶”選項,出現“數據庫用戶-新建”對話框,建立相應的用戶。最后,在sample_st數據庫的“安全性?架構?guest?屬性?權限”中,為test1和test2用戶分配相應權限。
3、用Grant、Revoke命令實現對用戶的授權和收權。
4、用Create命令創建數據表驗證授權和收權是否成功。
5、以系統管理員身份登錄SQL Server。使用:“GRANT SELECT ON SC TO Test1 WITH GRANT OPTION”命令,再分別以Test1和Test2身份登錄,進行授權及查詢數據表,驗證“WITH GRANT OPTION”能否成功執行。
6、以系統管理員身份使用“REVOKE”命令回收上述授權。
實驗6 數據庫的完整性
一、實驗目的
通過實驗掌握數據庫完整性概念,掌握利用SQL Server 2005實現數據庫完整性的基本方法和步驟。
二、實驗環境
Windows XP操作系統,SQL Server 2005軟件。
三、實驗課時
2課時。
四、實驗內容
1、建立關系模式。
完成教材P164第6題,用SQL語言定義“職工”和“部門”兩個關系模式: 職工(職工號,姓名,年齡,職務,工資,部門號),職工號為主碼 部門(部門號,名稱,經理名,電話), 部門號為主碼 要求在模式中完成以下完整性約束條件的定義:(1)定義每個模式的主碼;(2)定義參照完整性;
(3)定義職工年齡不得超過60歲;(4)定義部門名稱必須取值唯一。
2、驗證完整性約束。
使用Insert Values語句向兩個表中各插入5~10條記錄,對下列內容進行驗證。(1)驗證主鍵約束:“職工”和“部門”兩個表中是否能接受主碼值相同的記錄,通過實例驗證。
(2)驗證唯一約束:“部門”表中是否能接受名稱相同的兩個不同記錄?為什么?
(3)驗證檢查約束:“職工”表中能否接受年齡不滿足條件的記錄?為什么?
(4)驗證參照完整性:若“部門”表中不存在部門號為“008”的記錄,是否能在“職工”表中插入部門號為“008”的職工記錄?若刪除“001”部門的所有信息,正確的操作步驟是什么?
實驗7 數據庫設計實驗
一、實驗目的
通過實驗掌握數據庫設計的基本方法和步驟。
二、實驗環境
Windows XP操作系統,SQL Server 2005軟件。
三、實驗課時
2課時。
四、實驗內容
1、選定實驗題目,為某個單位或部門設計數據庫應用系統,比如:學生成績管理、機房上機管理、職工檔案管理、商品庫存管理、圖書管理、工資管理等。
2、根據選定的題目進行需求分析,重點分析數據需求和功能需求。
3、概念結構設計:畫出E-R圖。
4、邏輯結構設計:設計數據庫和數據表的具體結構,指出各表的屬性名稱、數據類型;說明各表的主碼及表之間的關聯情況;說明本設計是否已達到3NF要求。
5、簡要評價系統設計的優點和不足。
五、實驗要求
1、提交設計報告,涵蓋實驗內容的全部信息,不低于1000字。
2、提交建立應用系統數據庫的代碼,所有數據表中的記錄總數不低于50條。(請參照實驗2的附錄建立數據庫)
實驗8 存儲過程實驗
一、實驗目的
通過實驗熟悉使用存儲過程進行數據庫應用程序設計的方法
二、實驗環境
Windows XP操作系統,SQL Server 2005軟件。
三、實驗課時
2課時。
四、實驗內容
對sample_st數據庫,編寫存儲過程,完成下面功能
1、統計任意一門課程的平均成績
2、統計所有課程的平均成績
3、統計任意一門課程的成績分布情況,即按照分數段統計人數(即<60、60-69、70-79、80-89、90以上)
第五篇:數據庫原理實驗五
數據庫原理及應用實驗報告
實驗名稱:數據庫備份與恢復、數據庫的安全性 實驗類型:驗證型 實驗環境:oracle 11g 指導教師:陳 駿 專業班級:信安班 姓
名: 學
號:
聯系電話:*** 電子郵件: 實驗地點:東6E501 實 驗 日 期: 2017年5月16日 實驗報告日期:2017年 5月 18日
成績:__________________________ 實驗五 數據庫備份與恢復
一、實驗目的
? ? ? ? ? ? ? ? 了解數據庫恢復技術的原理
了解oracle各類故障的數據恢復方法 了解oracle的物理備份
掌握oracle數據庫邏輯備份方法 掌握oracle數據庫恢復的方法
學會使用exp備份數據庫、使用imp恢復數據庫 了解flashback 的使用
學會使用PLSQL/developer工具完成導入導出
二、實驗平臺
Oracle 11g
三、實驗步驟、出現的問題及解決方案(不能解決的將問題列出)(1)實驗步驟
1、邏輯備份
(1)導出自己用戶中的“預約”表在運行中輸入:exp 用戶名/密碼@orcl 按照提示進行導出
(2)刪除自己用戶中的“預約”表
1(3)進行導入數據庫操作,在運行中輸入:IMP 用戶名/密碼@orcl按照提示進行導入
(4)查詢導入的“預約”表中的信息。
(5)導出數據庫(以全庫方式導出)。必須是DBA才能執行完整數據庫或表空間導出操作。
2、使用Flashback(1)設置行可移動SQL>ALTER TABLE 讀者 ENABLE ROW MOVEMENT
(2)在讀者表中添加多條記錄(或者刪除沒有借書的讀者記錄)。
(3)閃回到改變前(TO_ TIMESTAMP函數完成對非時間戳類型數據的轉換)SQL>FLASHBACK TABLE 讀者 TO TIMESTAMP TO_ TIMESTAMP(?.)2
3、使用PLSQL/developer 來完成SQL導出
(1)打開PLSQL/developer,選擇菜單“工具“導出表(2)點擊你要導出的表,然后選擇標簽SQL 插入
(3)選中復選框創建表,瀏覽或者輸入輸出文件,然后點擊導出
(4)在你輸入的目錄下找到你的導出文件(SQL 文件)
(5)依次導出你賬戶下所有用戶自定義表。
(6)刪除自己表空間中的“預約”表(7)通過“工具“導入表,利用SQL插入導入數據庫預約表。
(8)查詢導入的預約表,檢查導出是否正確。
4、使用PLSQL/developer 來完成PLSQL/developer方式導出(1)打開PLSQL/developer,選擇菜單“工具“導出表(2)點擊你要導出的表,然后選擇標簽PLSQL/developer(3)瀏覽或者輸入輸出文件,然后點擊導出。
4(4)在你輸入的目錄下找到你的導出文件。(5)依次導出你賬戶下所有用戶自定義表。(6)刪除自己表空間中的“預約”表
(7)通過“工具“導出表,PLSQL/developer方式導入數據庫預約表。
(8)查詢導入的預約表,檢查導出是否正確。
(2)問題及解決方案
-問題①:在命令行內輸入登錄命令“sqlplus S5120155364/123@orcl by sysdba”時無法正確連接
原因:使用了錯誤的連接詞“by”
解決方案:將其改為“sqlplus S5120155364/123@orcl as sysdba”-問題②:點擊“Enter”鍵,命令不執行 原因:命令語句后遺漏分號或使用了中文分號 解決方案:改為以英文分號結尾的命令語句-問題③:無法以全庫方式導出數據庫(未解決)
實驗六 數據庫的安全性
一、實驗目的
? ? ? ? ? ? ? 理解數據庫的安全性保護
掌握ORACLE中有關用戶創建的方法 理解數據庫存取控制機制
熟練掌握PL-SQL的數據控制語言,能通過自主存取控制進行權限管理 熟悉用戶資源文件的使用 熟悉ORACLE中角色管理
熟悉視圖機制在自主存取控制上的應用
四、實驗平臺
Oracle 11g
五、實驗步驟、出現的問題及解決方案(不能解決的將問題列出)(1)實驗步驟
1、同學之間相互授權訪問對方“讀者”表并能進行查詢。
2、以SYSTEM登錄數據庫為你的帳號增加系統角色DBA.3、重新以自己的帳號登錄,創建一個數據庫用戶:帳號_USER1(注:帳號即學生登錄數據庫帳號,如:S20101206),該用戶擁有所有CONNECT, resource,DBA系統角色權限。
4、建立角色:帳號_OPER,該角色擁有調用存儲過程借書、還書、預約的權限,以及CONNECT系統角色權限。(注:執行存儲過程的授權語句Grant execute on procedure_name to user/role)
5、創建一個數據庫用戶:帳號_USER2(注:帳號如:S20101206)為該用戶授權角色:帳號_OPER。以該用戶登錄,完成借書功能。
6、以自己的帳號登錄,如:S20101206,建立視圖VIEW_READER, 該視圖包含書目(ISBN, 書名,作者,出版單位,圖書分類名稱)(注:所有屬性來自關系書目和圖書分類)
7、創建一個數據庫用戶:帳號_USER3(注:帳號如:S20101206)該用戶具有對視圖VIEW_READER查詢的權限。創建一個概要文件,如果 帳號_USER3連續3次登錄失敗,則鎖定該賬戶,10天后該賬戶自動解鎖。以該用戶登錄進行權限測試。
(2)問題及解決方案
-問題①:在命令行內輸入登錄命令“sqlplus S5120155364/123@orcl by sysdba”時無法正確連接
原因:使用了錯誤的連接詞“by”
解決方案:將其改為“sqlplus S5120155364/123@orcl as sysdba”-問題②:點擊“Enter”鍵,命令不執行 原因:命令語句后遺漏分號或使用了中文分號 解決方案:改為以英文分號結尾的命令語句