關於SQL視圖的創建和使用方法


SQL視圖的創建和使用
視圖這個東西在其他的軟件中,我們也經常看得到,例如word中就有視圖,我們不難發現,視圖似乎是一種顯示方式,就像WORD一樣,有幾種顯示版面,這就是視圖,那么SQL中的視圖又該怎么定義呢?今兒我要學習一下,做個筆記。這是在繼 SQL數據庫高級查詢子查詢之后的又一個重要內容。
 
1.什么是視圖?
視圖是一個虛擬的表,是一個表中的數據經過某種篩選后的顯示方式,視圖由一個預定義的查詢select語句組成。
 
2.視圖的特點。
視圖中的數據並不屬於視圖本身,而是屬於基本的表,對視圖可以像表一樣進行insert,update,delete操作。
視圖不能被修改,表修改或者刪除后應該刪除視圖再重建。
視圖的數量沒有限制,但是命名不能和視圖以及表重復,具有唯一性。
視圖可以被嵌套,一個視圖中可以嵌套另一個視圖。
視圖不能索引,不能有相關聯的觸發器和默認值,sql server不能在視圖后使用order by排序。
 
舉例:查詢“心理學”考試成績大於80的學生的“學號”、“姓名”、“所屬院系”。
Student(學號,姓名,性別,所屬院系)
Course(課號,課名,學分)
Score(學號,課號,考試成績,平時成績)
這需要通過聯合查詢來解決問題了,參數不足,只得如此,來寫一條語句試試:
Select st.學號,st.姓名,st.所屬院系 from student as st,course as co,score as sc
Where co.課名=’心理學’ and sc.考試成績>80 and st.學號=sc.學號 and co.課號=sc.課號
這條語句看起來很長,有一點點復雜,如果每次都要先寫這條語句查詢后在對查詢的結果操作,就會顯得復雜,創建一個視圖就能解決這個問題了。
 
創建視圖:
Create view vw1 as
Select st.學號,st.姓名,st.所屬院系 from student as st,course as co,score as sc
Where co.課名=’心理學’ and sc.考試成績>80 and st.學號=sc.學號 and co.課號=sc.課號
這樣就可以世界查看視圖,查看數據了。
 
3.視圖的功能
1.簡化用戶操作
2.能以不同的角度觀察同一個數據庫
3.對重構數據庫提供了邏輯獨立性:
利用視圖將需要的數據合並或者篩選,但是不影響原表的數據和結構
3.對機密數據提供安全保護:
 可以建立不同的視圖對用不同的用戶,以達到安全的目的。
建立一個表如圖所示:
SQL SERVER學生表student
SQL SERVER學生表student
建立一個視圖,實驗一下:
Create view vw1 as
Select 學號,姓名,所屬院系
From student
Where 課名=’軟件工程’ and 所屬院系=’計算機’
運行語句建立視圖:
建立的一個成功的視圖vw1
建立的一個成功的視圖vw1
 
建立視圖的語法:
Create view 視圖名稱[(字段1) (字段2) (字段3)…]
AS
Select 查詢語句
[with  check  option]
參數:[with check  option]可選項,防止用戶對數據插入、刪除、更新是操作了視圖范圍外的基本表的數據。
刪除視圖的語法:
Drop view 視圖名稱


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM