視圖 定義 : 本質就是一張虛擬表 。從一個或多個表中結合查詢出來的結果集, 作用和真實表一樣 。可以使用SELECT 語句查詢數據,也可以使用INSERT,UPDATE,DELETE 來修改數據。 優點 :1) 簡單化 ,數據所見即所得;2) 安全性 ,用戶只能查詢或修改他們所能見到得到的數據;3 ...
視圖
定義:本質就是一張虛擬表。從一個或多個表中結合查詢出來的結果集,作用和真實表一樣。可以使用SELECT 語句查詢數據,也可以使用INSERT,UPDATE,DELETE 來修改數據。
優點:1) 簡單化,數據所見即所得;2) 安全性,用戶只能查詢或修改他們所能見到得到的數據;3) 邏輯獨立性,可以屏蔽真實表結構變化帶來的影響
缺點:1) 性能相對較差,簡單的查詢也會變得稍顯複雜;2) 修改不方便,特別是複雜的聚合視圖基本無法修改
特別強調
- 查看存儲文件,可以發現,視圖只有表結構文件,沒有表數據文件
- 視圖通常是用於查詢,儘量不要修改視圖中的數據
視圖創建示例
-- 1.創建視圖語法
-- 語法:create view view_name as sql語句;
create view v_user as select u.username,d.depname from user as u inner join dep d on u.pid = d.id;
-- 2.使用視圖
-- 查詢 語法:select * from 視圖名;
select * from v_user;
-- 3.刪除視圖
-- 刪除語法:drop view 視圖名;
drop view v_user;
思考:實際開發過程中,視圖的使用頻率高嗎?
在實際開發過程中,一般不會使用視圖。假設我們在項目中使用了大量的視圖,後期我們想要擴展某個功能的時候,這個功能恰巧又需要對視圖進行修改,那麼首先需要在MySQL中將視圖修改,然後再去應用程式中修改對應的sql語句,這就涉及到跨部門溝通問題。
因此,MySQL中雖然有視圖這個功能,但我們通常不會經常使用,幾乎都是通過重新修改應用程式中的sql語句來擴展功能。