sas中的sql(7)建立視圖,更新視圖,刪除視圖

什麼是視圖?sql

視圖是一系列的查詢語句,在使用時被執行,用來從其餘的數據集或視圖中獲取想要的子集(subset)或者超集(superset)。ui

The view contains only the logic for accessing the data, not the data itselfspa

視圖能用在哪些地方?code

幾乎在sas程序中任何真實表用的地方(不能用的地方暫未列出)。blog

使用視圖的好處?ci

1:節約空間,視圖每每比真實表要小不少。it

2:防止用戶常常進行表查詢而忽略默寫列,視圖寫好後每次調用就行,而inline-view需每次重寫編譯

3:保證數據集能進行實時更新。table

4:掩蓋其餘表中的不想展示的列ast

5:對用戶掩蓋複雜的鏈接或查詢

 

使用視圖應該注意什麼問題?

1:查詢子句中儘可能避免order by,使用view的用戶的目的可能不一樣,是否使用order by應由不一樣的用戶決定

2:避免建立基於容易變更的表的視圖

3:若是一樣的data要用不少次,那麼最好不要建立視圖而是直接建立靜態表。

 

 

建立視圖

 

建立視圖時,系統並不會執行select的語句,只會編譯並將其儲存在視圖類型的文件中。

 

 描述視圖

若是創建的視圖基於另外一個視圖上,那要用feedback選項才能描述出內容。

 

管理視圖

若是view後面的視圖指定了庫名,那麼from後的若是不指定庫名則默認爲在sasuser中。

proc sql;
    create view sasuser.payrollv as
        select *
            from payrollmaster;    
quit;

 

更靈活點的方式,using clause

libname airline 'SAS-library one';
proc sql;
create view sasuser.payrollv as
select*
    from airline.payrollmaster
    using libname airline 'SAS-library two';
quit;

sql中的libname語句不會影響外面的,能夠當作局部語句

 

 

更新視圖(語法和table同樣)

1:You can only update a single table through a view. The table can not be joined or linked to another table, nor can it contain a subquery.

2:You can update a column using the column's alias, but you can not update a derived column

3:You can update a view that contains a WHERE clause. The WHERE clause can be,specified in the UPDATE clause or in the view. You cannot update a view that contains any other clause such as an ORDER BY or a HAVING clause.

4:You cannot update a summary view (a view that contains a GROUP BY clause). 

 

刪除視圖

 

相關文章
相關標籤/搜索