什麼是視圖?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).
刪除視圖