基本概念
視圖是虛擬的表,不包含數據,其將有用的查詢的結果包裝成一個虛擬的表,方便之后的使用。
使用視圖可以簡化復雜的SQL操作,不需要訪問整個表只需要訪問特定部分,從而可以保護數據,可以給用戶設定特定部分的訪問權限
視圖使用的規則
- 創建的視圖數目沒有限制
- 視圖可以嵌套,與真實表的使用基本一致
- order by可以使用在視圖中,但如果從該視圖檢索數據的select中也含有order by,那么該視圖中的order by 會被覆蓋
使用視圖
- 創建視圖
create view view_name as select...
創建名叫productcustomers的視圖 ,它聯結了三個表
create view productcustomers as
select cust_name,cust_contact,prod_id
from customers,orders,orderitems
where customers.cust_id =orders.cust_id
and orderitems.order_num=orders.order_num;
- 使用視圖查詢
select cust_name,cust_contact
from productcustomers
where prod_id='TNT2';
- 更新視圖
視圖是可更新的,和表一樣,可以對其使用insert,update和delete。更新一個視圖將更新其基表,對視圖增加或刪除行,實際上是對其基表增加或刪除行。
不是所有的視圖都可以更新,如果視圖定義中存在分組、聯結、子查詢、并、聚集函數、DISTINCT以及導出列等操作,則其不能更新。
一般,我們將視圖用于檢索而不是更新。