實驗6 視圖的應用.doc_第1頁
實驗6 視圖的應用.doc_第2頁
實驗6 視圖的應用.doc_第3頁
實驗6 視圖的應用.doc_第4頁
免費預覽已結束,剩余1頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

實驗6 視圖的應用實驗目的學會使用MS SQL SERVER 2000企業管理器和SQL語句創建、修改和刪除視圖,掌握通過視圖向基本表插入、刪除、更新數據的方法和步驟。知識點撥:1. 視圖是一張虛表2. 視圖的作用3. 視圖的種類4. 創建視圖的SQL語句5. 更新視圖的SQL語句6. 刪除視圖的SQL語句7. 通過視圖修改數據庫中數據的限制實驗內容1. 行列子視圖的創建2. 基于多個基本表的視圖的創建3. 基于基本表和視圖的視圖的創建4. 帶表達式的視圖的創建5. 分組視圖的創建6. 刪除視圖7. 修改視圖8. 通過視圖修改數據庫數據實驗步驟1. 選擇數據庫JX;注意:以下操作均在查詢分析器定義,在企業管理器中查看和修改,并請驗證結果!2. 創建行列子視圖1) 創建視圖WY_Student,用于查詢外語系學生的基本信息;CREATE VIEW WY_StudentASSELECT *FROM StudentWHERE Sdept=外國語2) 創建視圖SS_Student,用于查詢學生的姓名、學號和總學分信息,要求屬性列中文顯示;CREATE VIEW SS_StudentASSELECT Sname 姓名,SC.Sno 學號,Total 總學分FROM Student3. 創建基于多個基本表的視圖1) 創建視圖XSXK,用于查詢每個同學的選課信息,包括學號、姓名、課程號、課程名和成績;CREATE VIEW XSXKASSELECT SC.Sno,Sname,SC.Cno,Cname,GradeFROM Student,SC,CourseWHERE Student.Sno=SC.Sno AND SC.Cno=Course.CnoGROUP BY SC.Sno,Sname,SC.Cno,Cname,Grade2) 創建視圖JSSK,用于查詢每個教師的任課情況,包括教師號、教師名、職稱、所講授課程的課程號信息,并用中文列出各屬性名;CREATE VIEW JSSKASSELECT Teacher.Tno 教師號,Tname 教師名,Tprof 職稱,SC.Cno 課程號,Cname 課程名FROM Teacher,SC,CourseWHERE Teacher.Tno=SC.Tno AND SC.Cno=Course.CnoGROUP BY Teacher.Tno ,Tname ,Tprof ,SC.Cno ,Cname 3) 基于視圖WY_Student和SC,創建視圖SSS,用于查詢外語系學生的選課情況;CREATE VIEW SSSASSELECT WY_Student.Sno,Sname,CnoFROM WY_Student,SCWHERE SC.Sno=WY_Student.Sno4. 帶表達式的視圖的創建1) 創建視圖XSNL,用于查詢學生的學號、姓名和年齡;CREATE VIEW XSNL(Sno,Sname,Sage)ASSELECT Sno,Sname,year(getdate()-year(Sbirth)FROM Student2) 創建視圖XSZCJ,用于查詢選修了課程的學生的總評成績,包括學號、姓名、課程號,每門課程的總評成績計算公式為:成績*70%+(成績-10)*20%+10;CREATE VIEW XSZCJ(Sno,Sname,Cno,總評成績)ASSELECT Student.Sno,Sname,Cno,Grade*0.7+(Grade-10)*0.2+10FROM Student,SCWHERE Student.Sno=SC.Sno3) 創建視圖JSGZ,用于顯示教師的預發工資,包括教工號、姓名、職稱和按95%預發的工資額;(含有%的列名字可以用【】)CREATE VIEW JSGZ(Tno,Tname,Tprof,預發95%工資)ASSELECT Tno,Tname,Tprof,Tpay*0.95 FROM Teacher5. 分組視圖的創建1) 創建視圖XSPJCJ,用于查詢選修了課程的學生的成績,包括學號、姓名和所選課程的平均成績;CREATE VIEW XSPJCJ(Sno,Sname,平均成績)ASSELECT SC.Sno,Sname,AVG(Grade)FROM SC,StudentWHERE SC.Sno=Student.SnoGROUP BY SC.Sno,Sname2) 創建視圖JSRKMS,用于查詢教師的任課門數,包括教工號、教師名和任課門數;CREATE VIEW JSRKMS(Tno,Tname,任課門數)ASSELECT Teacher.Tno,Tname,COUNT(DISTINCT(Cno)FROM Teacher,SCWHERE Teacher.Tno=SC.TnoGROUP BY Teacher.Tno,Tname3) 創建視圖KCPJCJ,用于查詢各門課程的平均成績,包括課程號、課程名、選課人數、平均成績;CREATE VIEW KCPJCJ(Cno,Cname,選課人數,平均成績)ASSELECT Course.Cno,Cname,COUNT(*),AVG(Grade)FROM Course,SCWHERE Course.Cno=SC.CnoGROUP BY Course.Cno,Cname4) 創建視圖YXXS,用于查詢各門成績和平均成績都在85分以上的學生的學號、姓名及平均成績;CREATE VIEW YXXSASSELECT DISTINCT SC.Sno,Sname,AVG(Grade) 平均成績FROM Student,SCWHERE Student.Sno=SC.Sno AND SC.Sno NOT IN(SELECT SnoFROM SCWHERE Grade85)GROUP BY SC.Sno,Sname6. 刪除視圖1) 刪除視圖XSNL;DROP VIEW XSNL7. 通過視圖修改數據庫數據1) 查詢視圖WY_Student,然后使用INSERTINTO語句更新WY_Student視圖,再次查詢該視圖以及相關基表,檢查執行結果;SELECT *FROM WY_StudentINSERTINTO WY_Student(Sno,Sname)VALUES (06122,王五)SELECT *FROM WY_StudentSELECT *FROM Student再次查詢的結果為,在基本表Student中插入了該記錄,但是在視圖WY_Student中并沒有插入該記錄,因為插入的記錄不滿足視圖WY_Student子查詢的條件。若是改為INSERT INTO WY_Student(Sno,Sname,Sdept)VALUES (06122,王五,外國語)則視圖WY_Student和基本表Student都插入了該記錄。2) 使用UPDATE 更新視圖WY_Student中的某個或某些屬性值,然后再次查詢該視圖以并查詢相關基表檢查更新結果。UPDATE WY_StudentSET Sname=王士武WHERE Sno=06003SELECT *FROM WY_StudentSELECT *FROM Student再次查詢的結果為,視圖WY_Student和基本表Student中的記錄都被修改了,即如果修改視圖中的記錄,那么基本表中的記錄相應的也被修改。同樣的,若是修改了基本表中的記錄,那么由基本表導出的視圖中的記錄相應也會被修改。3) 使用DELETE刪除視圖WY_Student中剛插入的記錄,然后查詢該視圖和相關基本表數據;DELETE FROM WY_StudentWHERE Sname=王五SELECT * FROM WY_StudentSELECT * FROM Student基本表和視圖中的記錄都被刪掉4) 修改視圖JSGZ,把職稱為副教授的預發工資改為該視圖預發工資的90%,查看執行結果;UPDATE

溫馨提示

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

評論

0/150

提交評論