Oracle視圖,oracle視圖建立

來源:互聯網
上載者:User

Oracle視圖,oracle視圖建立
Oracle視圖簡單視圖

視圖一個虛擬表,它同真實表一樣包含一系列帶有名稱的列和行資料。
但是視圖並不在資料庫中儲存真實值,資料庫只在資料字典中儲存了視圖定義本身。

使用者可以在視圖中進行INSERT、UPDATE和DELETE操作。通過視圖修改資料時,實際上是在修改基本表中儲存的資料。

視圖可以建立在關係表上,也可以建立在其他視圖上,或者同時建立在兩者之上。建立視圖,主要是為了將一個或者多個表中經常使用到的資料結合帶一起,方便使用者的資料操作。

一個比較簡單的視圖,只能通過它從基本表中檢索資料,而不能通過它修改基本表中的資料。建立視圖最基本的文法如下:

CRAETE [OR REPLACE] VIEW view_nameAS <SELECT 語句>;[WITH CHECK OPTION]

其中,WITH CHECK OPTION選項用來定義一個規範。

例1:
針對student表建立一個視圖:

CREATE OR REPLACE VIEW stu_viewAS SELECT SID,SNAME,SAGE,SSEX FROM student WHERE SSEX='F'

或者

CREATE OR REPLACE VIEW stu_view(編號,姓名,年齡,性別)AS SELECT SID,SNAME,SAGE,SSEX FROM student WHERE SSEX='F'

可以通過資料字典來查看視圖資訊:

SELECT TEXT FROM user_views WHERE view_name=UPPER('stu_view')

其結果如下:

SELECT SID,SNAME,SAGE,SSEX FROM student WHERE SSEX=’F’

可更新視圖

一個視圖能否更新取決於建立該視圖的語句,一般來說,建立的視圖越複雜,其被更新的可能性就越小。

建立如下視圖:

CREATE OR REPLACE VIEW stu_age_view(SID,SNAME,SAGE,SSEX)AS SELECT SID,SNAME,SAGE+1,SSEX FROM student 

對其進行更新:

UPDATE stu_age_view SET sname='SIEGE' WHERE sname='SAM'

修改成功。

再對其年齡列變更:

UPDATE stu_age_view SET sage=10 WHERE sname='SIEGE'

此時報ORA-01733錯誤(不允許修改虛擬列)

我們可以根據資料字典查看視圖的那些列可以進行修改:

SELECT column_name,UPDATABLE,insertable,deletable FROMuser_updatable_columns WHERE table_name=UPPER('stu_age_view')

其結果如下:

  COLUMN_NAME UPDATABLE   INSERTABLE  DELETABLE      SID                         YES           YES                 YES      SNAME                  YES            YES                 YES      SAGE                      NO            NO                 NO      SSEX                       YES            YES               YES

說明姓名列不可以更改。

若指定WITH CHECK OPTION時:

CREATE OR REPLACE VIEW stu_check_view(SID,SNAME,SAGE,SSEX)AS SELECT SID,SNAME,SAGE,SSEX FROM student  WHERE sname='SIEGE'WITH CHECK OPTION 

此時,若修改視圖:

UPDATE  stu_check_view SET sname='kate'

則會出現ORA-01402錯誤(違反WITH CHECK OPTION子句約束)。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.