機房重構——視圖,機房重構
視圖、預存程序、觸發器等等早就聽說過,卻沒有真正接觸過,一直處在一個以後再說的狀態中,逃是逃不掉了。
機房重構,重構出了什嗎?留著這個疑問。重構完以後再做總結。
視圖:在SQL中,外模式一級資料結構的基本單位是視圖,就是從若干個基本表和(或)其他視圖構造出來的表。其實就是一張虛表。
注意:在使用視圖的時候,應當提前設定好關聯表的主外鍵。
在機房收費系統裡功能之一,學生查看餘額時,用到了兩張表的內容,Card表裡的狀態和餘額,其他資訊都來自學生表。
視圖的建立和刪除:
方法一:使用SQL語句建立視圖
建立:
'CREATE VIEW<視圖名>(<列表序列>)AS<SELECT查詢語句>Create VIEW V_stuCard (CardNo,StudentNo,StudentName,Department,Grade,Class,Exlpain,Cstatuss,Cash)as Select T_Student.StudentNo ,T_Student .StudentName ,T_Student .Department ,T_Student .Grade ,T_Student .Class ,T_Student .Explain ,T_card.CardNo ,T_card.Cash ,T_Card .CStatus From T_Student ,T_Card Where T_Student .CardNo =T_Card .CardNo
刪除:
'刪除:DROP VIEW<視圖名>DROP VIEW V_stuCard
方法二:直接右鍵視圖,建立視圖,相對比較省事簡單。
1、建立視圖,右鍵視圖建立
2、添加需要的表
3、確定之後選擇欄位,然後在勾選出每個表我們需要的欄位就可以啦。
刪除是也可以之間右擊刪除,很方便。
在D層編寫代碼,查詢語句和查詢表是一樣的,只是把表名稱改為視圖名稱就可以了。如上:"Select * from V_stuCard where CardNo=@CardNo"
為什麼要使用視圖呢?視圖把我們需要的資料有機的結合到了一起,如果我們需要好幾個表裡的資料,還得查好幾個表,讓自己的代碼很沉重,使用視圖,不僅減少代碼,還可以讓我們唯寫一條查詢語句就OK啦。
總結:個人認為,雖然方法二簡單,實現容易,但是還是建議使用SQL語句建立,應該多熟悉一下對SQL語句的使用。
在視圖上不可以完成的操作是( ) A更新視圖資料 B查詢C在視圖上定義新的基本表 D在視圖上定義新視圖
答案是C
視圖是基於資料表的一種查詢時段。怎麼可能在這種查詢時段中再建資料表呢?
就像你可以在房子上開窗,但你不能在窗子上蓋個房子吧?
下面有關表與視圖敘述中錯誤的是可以多選
我覺得應該是ABCD都選
參考:
* 簡單性。看到的就是需要的。視圖不僅可以簡化使用者對資料的理解,也可以簡化他們的操作。那些被經常使用的查詢可以被定義為視圖,從而使得使用者不必為以後的操作每次指定全部的條件。
* 安全性。通過視圖使用者只能查詢和修改他們所能見到的資料。資料庫中的其它資料則既看不見也取不到。資料庫授權命令可以使每個使用者對資料庫的檢索限制到特定的資料庫物件上,但不能授權到資料庫特定行和特定的列上。通過視圖,使用者可以被限制在資料的不同子集上:
使用許可權可被限制在基表的行的子集上。
使用許可權可被限制在基表的列的子集上。
使用許可權可被限制在基表的行和列的子集上。
使用許可權可被限制在多個基表的串連所限定的行上。
使用許可權可被限制在基表中的資料的統計匯總上。
使用許可權可被限制在另一視圖的一個子集上,或是一些視圖和基表合并後的子集上。
* 邏輯資料獨立性。視圖可協助使用者屏蔽真實表結構變化帶來的影響。
二、視圖的優點
(1)視圖能簡化使用者的操作
(2)視圖機制可以使使用者以不同的方式查詢同一資料
(3)視圖對資料庫重構提供了一定程度的邏輯獨立性
(4)視圖可以對機密的資料提供安全保護
三、視圖的安全性
視圖的安全性可以防止未授權使用者查看特定的行或列,是使用者只能看到表中特定行的方法如下:
1 在表中增加一個標誌使用者名稱的列;
2 建立視圖,是使用者只能看到標有自己使用者名稱的行;
3 把視圖授權給其他使用者。
四、邏輯資料獨立性
視圖可以使應用程式和資料庫表在一定程度上獨立。如果沒有視圖,應用一定是建立在表上的。有了視圖之後,程式可以建立在視圖之上,從而程式與資料庫表被視圖分割開來。視圖可以在以下幾個方面使程式與資料獨立:
1 如果應用建立在資料庫表上,當資料庫表發生變化時,可以在表上建立視圖,通過視圖屏蔽表的變化,從而應用程式可以不動。
2 如果應用建立在資料庫表上,當應用發生變化時,可以在表上建立視圖,通過視圖屏蔽應用的變化,從而使資料庫表不動。
3 如果應用建立在視圖上,當資料庫表發生變化時,可以在表上修改視圖,通過視圖屏蔽表的變化,從而應用程式可以不動。
4 如果應用建立在視圖上,當應用發生變化時,可以在表上修改視圖,通過視圖屏蔽應用的變化,從而資料庫可以不動。
五、視圖的書寫格式
CREATE VIEW <視圖名>[(列名組)]
AS <子查詢>
DROP VIEW <索引名>
注意:視圖可以和基本表一樣被查詢,但是利用視圖進行資料增,刪,改操作,會受到一定的限制。
(1)由兩個以上的基本表匯出的視圖
(2)視圖的欄位來自欄位運算式函數
(3)視圖定義中有巢狀查詢
(4)在一個不允許更新的視圖上定義的視圖...餘下全文>>