什麼是視圖呢?《數據庫原理》一書上是這麼定義的:視圖是從一個或者多個基本表或視圖中導出的虛表。為什麼稱為虛表呢,是因為,視圖與表一樣,都有名稱,有結構定義,但是表是實實在在存放了數據;而視圖也名稱,有結構定義,但是所對應的數據是來源於表或其它視圖。說通俗點:如果我們把一張報紙比做是一個表,那現在給你一個木框,你拿著木框在這張報紙上隨意移動時,你通過木框看到的東西都是不一樣,不同的位置就對應了不同的視圖。熟悉VC中的CView類開發人員應該最清楚我表達我所說的內容。說了那麼多的費話,還不如具幾個例子來的實在。
老套路,啟動數據庫系統,登錄需操作的數據庫。下面我們就來先創建一個視圖來看看:
mysql> create view v_score(iExamID,vcName,iScore) as select t_score.score_no,t_userinfo.user_name,t_score.exam_score from t_score,t_userinfo
where t_score.user_id=t_userinfo.user_id;
執行以上語句後,我們就在mydb數據庫中成功的創建了一個名為v_score的視圖了。這個視圖的數據來源於t_score表和t_userinfo表,下面我們查看一下視圖的結構。
mysql> show create v_score;
怎麼用view呢,對了,就跟查詢表操作一樣。
mysql> select * from v_score;
結果如下:
視圖部分最基礎的操作大概就這麼多。初學數據庫或者對視圖概念仍模糊的同學們會問了,那為什麼要用視圖?前輩,專家已經對視圖的作用進行了完美總結,我在這裡只想強調三個作用:
1、視圖可以簡化查詢操作。(這一點上面例子可看出,分散在兩個表的數據,通過這麼一個視圖就用一句select就完成查詢)。
2、視圖可以將同一個數據以不同的面貌展現給不同的用戶。
3、視圖可以對數據表提供完全的保護,使某些用戶無法直接接觸到表。
視圖是一個優化數據庫管理、提高應用開發效率的工具。用好視圖,對你的應用程序開發會大大提高程序的開發效率,並且使你的程序安全性上有了更好的保證。當然,你說是不是一定要有視圖,我告訴你的,你的數據庫中可以不要任何視圖,照樣可以完成你的所有操作。但那不是一個在好的數據庫或軟件開發人員應該身上發生的。