資料庫視圖的創建
A. 怎麼用SQL語句創建視圖
create view v_infomation(請假申請編號,員工姓名,提交時間,請假原因,狀態,拒絕原因)
as select QJ_BIAO.請假申請編號,employee.員工姓名,QJ_BIAO.提交時間,QJ_BIAO.請假原因,QJ_BIAO.狀態,QJ_BIAO.拒絕申請的理由
from QJ_BIAO,employee
B. 資料庫如何創建視圖
一般來說,視圖創建可以分為五步走:
第一步:先考慮select語句的編寫。我們知道,視圖其實就是一個select語句的集合,所以,我們建立視圖的第一步,就是考慮這個select語句 的如何編寫。這個select語句編寫的是否合理,執行效率的高低直接影響著這個視圖的性能,在Select語句中,可能還會有格式的控制、內容的編排等 等。如在Select語句中,可以把一些欄位合並成一個欄位;也可以把相關的內容進行倒置等等。這些功能都是Select語句完成的。所以可以這么 說,Select語句的編寫是視圖建立的基礎。
第二步:對這個Select語句進行測試。當我們編寫好Select語句之後,就需要在資料庫中執行這條語句,看其能否查詢到我們想要的值。在對 Select語句進行測試的時候,需要注意一個問題,有時候Select查詢語句可以查到准確的數據,但是在以這條語句建立視圖的時候,可能就會通不過。 如在一些表之間的連接查詢的時候,如果兩個表中有個欄位名相同,是可以的。因為他們除了欄位名字之外,還有表名一起來定義這個欄位。如A.name與 B.name。這是不算重名的。但是,若在建立視圖的時候,這就會被認為是重復的列明,需要對其中的一個列名進行重定義。這一點在資料庫視圖建立的時候, 要特別的注意。
第三步:考慮查詢結果的准確性。通過查詢語句把我們想要的結果查詢出來後,我們就需要看看這個結果是否滿足我們的需要。在這個過程中,我們主要注意兩 點。一是形式欄位是否齊全。在一些應用系統中,若資料庫的視圖要能夠被前台的應用程序調用的話,則必須包含一些形式欄位。如筆者以前在設計一個 ERP系統的時候,若前台系統要調用資料庫中的視圖的時候,必須包含記錄更新時間、更新者、記錄創建時間、創建者等相關信息。若缺乏這些信息的話,則前台 調用這張視圖的時候,就會出現錯誤。故在考慮查詢結果准確性的問題的時候,就要考慮到前台應用程序的需要,看看這些形式欄位是否齊全。二是實體內容的完整 性。我們到底需要顯示表中的哪些欄位呢,這個我們在這里要確認清楚。若顯示內容太多的話,則會影響視圖的執行效率,而且也會降低視圖的安全性作用;但是, 若欄位內容顯示不足的話,則以後要添加欄位的話,會比較麻煩,有一定的工作量。所以在這個檢驗的時候,需要根據視圖的實際功用,確定視圖需要顯示的內容。
第四步:視圖的修飾。有時候,為了閱讀的方便,我們需要對查詢結果進行一些修飾。如現在有兩張表,一張是員工基本信息表,這表中有員工姓名、員工職位編號 等等;另一張表是職位基本信息表,在這表中有職位編號、職位名稱。我們希望在視圖中能夠如下顯示:「職位:員工名字」,如資料庫工程師:Victor。也 就是說,把兩個欄位合並起來,並且在中間加入一個冒號。這些格式性的內容都是在查詢的時候實現的。所以,我們確認查詢的結果沒有錯誤之後,接下來就要確認 格式問題。若能夠在視圖中規范這些格式問題,則前台的程序設計就會相對來說比較簡單
第五步:建立視圖。等到上面四步都確認無誤後,我們就要根據上面的查詢語句來建立視圖了。不過在這一步過程中,也有一些問題需要注意。一是視圖名字的命 名規格。我們除了遵循資料庫的強制命名格式之外,如不能以數字開頭等等,還需要遵循一些軟規則。如視圖最好能夠以V開頭,跟基礎表進行隔開;另外在視圖命 名中,能夠根據應用模塊的不同,來進行分類,並體現在視圖的名字中。這對於我們後續視圖的查找都具有非常現實的意義。二是雖然可以在視圖中直接更新基礎 表,不過,為了安全與數據統一的考慮,我們這些過來人一般都不建議通過視圖來直接更新基礎表中的數據。雖然資料庫提供了類似的功能。若要更改相關數據的 話,則直接去更改基礎表的內容為好。在建立視圖的時候,默認情況下是不能夠通過視圖直接更新基礎表。