視圖和同義詞分別都是數據庫中的對象名稱,它們都不對應實際的數據存儲,都依賴其他對象的存在而存在。
壹、視圖:視圖可以被看成是虛擬表或存儲查詢。除非是索引視圖,否則視圖的數據不會作為非重復對象存儲在數據庫中。壹般是基於壹個或多個數據表經數據查詢語句構建而成;視圖可以再被用於數據查詢語句中。
二、同義詞:是架構範圍內的對象的另壹名稱。通過使用同義詞,客戶端應用程序可以使用由壹部分組成的名稱來引用基對象,而不必使用由兩部分、三部分或四部分組成的名稱。可以理解為是對數據庫中壹個對象的快捷方式或者在特定範圍內的別名;不限於數據表,幾乎所有的數據庫對象都可以建立同義詞。
1.視圖可以對應壹張或多張表,同義詞只能對應壹張表名稱
2.視圖可以設置其他約束條件
3.可以在同義詞上建立視圖:
例如,已經存在壹個名為synonym_city的同義詞和壹個名為table_citys的表,可以創建視圖:CREATE OR REPLACE NOFORCE VIEW view_city AS SELECT * FROM synonym_city,table_citys;
4.可以通過對同義詞進行任何DML操作,對表數據進行插入、更新、刪除,通過對視圖只能進行更新和刪除操作。
值得註意的是:視圖和同義詞都可以屏蔽用戶訪問其他用戶擁有的表。
例如:現在存在兩個用戶:scott、sys,以sys用戶登錄
創建跨用戶表的同義詞:
CREATE OR REPLACE PUBLIC SYNONYM SYN_EMP for scott.emp;
創建跨用戶的表的視圖:
CREATE OR REPLACE VIEW view_EMP AS SELECT * FROM scott.emp
然後進行查詢操作:
SELECT * FROM SYN_EMP ;
SELECT * FROM view_EMP ;
查詢結果是壹樣的。