1. 程式人生 > >oracle 視圖(view)的使用

oracle 視圖(view)的使用

union all then art ase 建表 信息 replace 存在 target

轉自https://blog.csdn.net/weixin_39415084/article/details/76147594

Oracle對象教程:視圖(View)創建使用,視圖(View)實際上是一張或者多張表上的預定義查詢,這些表稱為基表。從視圖中查詢信息與從表中查詢信息的方法完全相同。只需要簡單的SELECT…FROM即可。

視圖具有以下優點:

可以限制用戶只能通過視圖檢索數據。這樣就可以對最終用戶屏蔽建表時底層的基表。

可以將復雜的查詢保存為視圖。可以對最終用戶屏蔽一定的復雜性。

限制某個視圖只能訪問基表中的部分列或者部分行的特定數據。這樣可以實現一定的安全性。

從多張基表中按一定的業務邏輯抽出用戶關心的部分,形成一張虛擬表。

CREATE [OR REPLACE] [{FORCE|NOFORCE}] VIEW view_name

AS

SELECT查詢

[WITH READ ONLY CONSTRAINT]

語法解析:

OR REPLACE:如果視圖已經存在,則替換舊視圖。

FORCE:即使基表不存在,也可以創建該視圖,但是該視圖不能正常使用,當基表創建成功後,視圖才能正常使用。

NOFORCE:如果基表不存在,無法創建視圖,該項是默認選項。

WITH READ ONLY:默認可以通過視圖對基表執行增刪改操作,但是有很多在基表上的限制(比如:基表中某列不能為空,但是該列沒有出現在視圖中,則不能通過視圖執行insert操作),WITH READ ONLY說明視圖是只讀視圖,不能通過該視圖進行增刪改操作。現實開發中,基本上不通過視圖對表中的數據進行增刪改操作。
demo:

create or replace view hr_org_dept_tree_v as
select "ID","NAME","PARENT_ID","STATE","ORG_ID","VALID_FLAG" from (select t.id,t.org_name as name ,t.parent_org_id as parent_id,
‘org‘ as state,t.id as org_id,t.valid_flag from hr_org t union all select d.id,d.dept_name as name, case d.parent_dept_id when ‘-1‘ then d.org_id else d.parent_dept_id end as parent_id,‘dept‘ as state,d.org_id,d.valid_flag from hr_dept d ) s

oracle 視圖(view)的使用