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


什么是視圖?

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

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

視圖能用在哪些地方?

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

使用視圖的好處?

1:節約空間,視圖往往比真實表要小很多。

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

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

4:掩蓋其他表中的不想展現的列

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). 

 

刪除視圖

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM