SQL學習(4)視圖

視圖就是嚮導出一個關係,這個關係是根據我們的一些條件導出來的,是一個虛表,對其是無法建立索引的,也無法對其執行一些操作,這樣保證了數據的安全性,同時也很方便的便於我們查看一些數據。

定義視圖:CREATE VIEW

基本語句格式

<span style="font-size:18px;">CREATE VIEW<視圖名>[列名清單]
AS <子查詢>
[WITH CHECK OPTION];</span>

子查詢就是通過select選擇出來符合要求的數據,將查詢出來的數據已視圖的形式直觀的展現出來,後面的WITH CHECK OPTION 是我們在對視圖中的數據進行刪除和修改操作的時候,其會自動執行,判斷修改後的數據是否和之前的符合,如果不符合將會將其在視圖中刪除掉。

代碼實例:

<span style="font-size:18px;">CREATE VIEW STUDENT_2
AS 
SELECT *
FROM STUDENT
WHERE CNO = 2
WITH CHECK OPTION;</span>
上面是來挑選出二班的學生,並將其創建一個視圖,當一個學生的班級號,改變之後,學生的視圖就會自動被修改。同時在視圖中也可以添加一些之前沒有的屬性,派生屬性

代碼實例

<span style="font-size:18px;">CREATE VIEW STUDENT_2(NAME,IN_AGE)
AS 
SELECT NAME,AGE-10
FROM STUDENT
WHERE CNO = 2
WITH CHECK OPTION;
</span>

將學生的年齡減去10表示入學年齡。

刪除視圖 DELETE VIEW

基本語句格式

DROP VIEW <視圖名>;

視圖的查詢

DBMS對視圖查詢操作的處理

1.從數據字典中取出對於當前視圖的定義

2.將對當前視圖的查詢和視圖的子查詢相結合然後在基本表中進行查詢

3..執行基本表的查詢,然後將其顯示出來

寫到這不由得要思考,視圖在我們平常的應用中看到的是哪一個部分,對基本表的查詢又存在哪裏,如何對其進行調用,視圖又是怎樣進行顯現的????(待解決)之前的問題還沒解決。

視圖的更新

對於視圖的更新操作和查詢其實都是將其轉化爲對基本表的修改和查詢,因爲視圖是一個虛表,其本身是不存在數據的存儲的,

對於視圖的操作和對基本表的數據操作是一樣的,語法基本格式,所以不在這裏寫了。

視圖的可更新性

並不是所有的視圖,在這裏有幾種不可以更新的情況:

1.視圖中的列是由表達式或者常數表示的。

2.視圖中的列是用集函數定義的

3.視圖定義中有distinct選項(?)

4.視圖定義中有嵌套查詢,且內外來源於一個表(?)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章