Oracle(二)之視圖的使用

##概述

##什麼是視圖

視圖可以理解爲一張虛擬表,它是由固定的sql查詢語句操作真實表得到的一個臨時表。視圖中的數據就是查詢sql語句的結果。得到視圖之後,我們可以使用sql操作視圖,但只能是查詢操作。查詢視圖與查詢真實表的sql語法完全相同。

##視圖的作用

首先看下面一個sql語句:

select count(1) from (select age from person group by age) temp

在上面這個sql中首先使用select age from person group by age得到一個臨時表,然後使用select count(1) from temp操作臨時表。

此時我們就可以根據select age from person group by age創建一個視圖,起名爲temp,然後使用select count(1) from temp查詢數量,得到的結果與select count(1) from (select age from person group by age) temp完全相同。

視圖比臨時sql的優點:

  1. sql是寫在項目中,視圖是寫在數據庫中,當視圖有變化時直接操作數據庫即可,避免重啓項目。
  2. 視圖更直觀,在調試時我們可以查看視圖中的數據是不是我們想要的數據。

爲什麼使用視圖而不創建真是表:

  1. 視圖是臨時表,會隨着真實表的數據變化而自動變化。如果創建一個真實表還需要維護該表的數據。
  2. 視圖不存儲數據,之存儲sql語句,每次操作視圖都是臨時執行sql後得到的數據。減少存儲空間。

##視圖的分類

視圖分爲view和materialized view,view稱爲視圖,materialized view稱爲物化視圖。

視圖與物化視圖的區別:

  1. 視圖不保存數據,每次操作視圖都臨時查詢數據。
  2. 物化視圖保存數據,操作物化視圖不執行視圖的生成sql。物化視圖可以設置自己的數據刷新機制。

視圖的優缺點:不保存數據,不佔用空間。但每次都執行生成視圖的sql語句,故效率低。

物化視圖的優缺點:保存數據,故佔用空間。操作物化視圖不執行視圖的生成sql,故效率高。但需要設置數據刷新機制。

視圖和物化視圖的選擇:在選擇時首先考慮的是數據是否需要及時刷新,如果需要及時刷新則選擇視圖,如果不需要及時刷新則選擇物化視圖。

##視圖的使用

##視圖的創建

創建視圖非常簡單,語法如下:

CREATE VIEW 視圖名稱 AS sql語句;

示例如下:

CREATE VIEW USER_INFO AS SELECT USERNAME,MOBILEPHONE FROM HY_SIMPLE_USER WHERE TICKET_TYPE = 1;

##查看數據庫中的所有視圖

查看所有視圖的sql如下:

select * from user_views;

結果如下:

##查詢視圖中的數據

SELECT * from USER_INFO where USERNAME = 'xiagz';

結果如下:

說明:視圖中的字段名爲生成sql語句時的字段名。

##使用NavicatePreminu操作視圖

使用NavicatePreminu操作視圖非常方便。如下:

說明:圖中的“Views”即表示視圖,右擊“Views”,然後選擇“New View”即可創建視圖。

 

創建一個視圖之後,還提供了很多操作功能,如下:

##物化視圖的使用

##物化視圖的創建

創建物化視圖非常簡單,語法如下:

CREATE MATERIALIZED VIEW 視圖名稱 AS sql語句;

示例如下:

CREATE MATERIALIZED VIEW USER_INFO AS SELECT USERNAME,MOBILEPHONE FROM HY_SIMPLE_USER WHERE TICKET_TYPE = 1;

 

##查看數據庫中的所有視圖

select * from user_mviews;

 

##使用NavicatePreminu操作物化視圖

使用NavicatePreminu操作視圖非常方便。新建物化視圖如下:

此時會打開一個新的頁面,可以設置sql語句,設置刷新機制。

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章