視圖是從一個或多個表(或視圖)導出的表,例如,對於一個學校,其學生的狀況存於數據庫的一個或多個學生表中,而做爲學校的不一樣職能部門,所關心的學生數據的內容不一樣(如體育老師只能查看或添加體育課的分數)。及時是一樣的數據,有可能有不一樣的操做要求,因而就能夠根據他們的不一樣需求,在物理的數據庫上定義他們對數據庫所要求的數據結構,這種根據用戶觀點所定義的數據結構就是視圖數據庫
通常咱們稱表爲基表,視圖是一個虛表安全
視圖一經定義,就能夠像表同樣被查詢,修改,刪除和更新數據結構
視圖的優勢:函數
1.爲用戶集中數據,簡化用戶的數據查詢和處理。有時,用戶所須要的數據分散在多個表中,定義視圖能夠將他們集中在一塊兒,從而方便用戶的數據查詢和處理spa
2.屏蔽數據庫的複雜性。用戶沒必要了解複雜的數據庫中的表結構,並數據庫表的更改也不影響用戶對數據庫的使用。3d
3.簡化用戶權限的管理。只需授予用戶使用視圖的權限,而沒必要指定用戶只能使用表的特定列,同時也增長了安全性。blog
4.便於數據共享。各個用戶對於本身所需的數據沒必要都進行定義和存儲,可共享數據庫的數據,這樣一樣的數據只需存儲一次it
5.能夠從新組織數據,以便輸出到其餘應用程序中。io
建立視圖:select
界面建立視圖:在SQL Developer中建立視圖
命令建立視圖
語法格式:create [or replace] [force | noforce] [<用戶名方案名>.] 視圖名稱
[<列名...>]
as
<selcet 查詢語句>
[with check option[constraint<約束名>]]
[with read only]
說明:
1.or replace:表示在建立視圖時,若是已經存在同名的視圖,則要從新建立,否則把已存在的視圖刪除後才能建立
2.force:表示強制建立一個視圖,不管視圖的基表是否存在或擁有者是否有權限,但建立視圖的語句必須是正確的。noforce則相反
3.用戶名:指定將建立的視圖所屬用戶方案,默認爲當前登入帳號
4.列名:能夠定義視圖中包含的列,若使用與源表或視圖中相同的列名是,則必給出列名
5.select查詢語句:查詢鎖哥表或視圖,以代表新建立的視圖所參照的表或視圖
6.with check option:指定限制條件
7.constraint:約束名稱
8.with read only:規定視圖不能執行刪除,插入,更改操做,只能檢索數據
更新視圖
要經過視圖更新基表數據,必須保證視圖是可更新視圖。一個可更新視圖知足如下條件:
(1) 沒有使用鏈接函數、集合運算函數和組函數;
(2) 建立視圖的SELECT語句中沒有聚合函數且沒有GROUP BY、ONNECT BY、START WITH子句及DISTINCT關鍵字;
(3) 建立視圖的SELECT語句中不包含從基表列經過計算所得的列;
(4) 建立視圖沒有包含只讀屬性。
插入數據
使用INSERT語句經過視圖向基本表插入數據
修改數據
使用UPDATE語句能夠經過視圖修改基本表的數據。
刪除數據
使用DELETE語句能夠經過視圖刪除基本表的數據。
在界面上視圖也能夠進行更新,刪除,插入和修改