2014-04-17 37 views
0

如果您已經創建了在Oracle SQL視圖像甲骨文指定的其他標準的SQL視圖

create view view_item as 
select * 
from employees 

然後,你可以這樣調用它select * from view_item。然而,我想知道它是否能夠進一步指定一些creteria這不是初始視圖規範如

select * from view_item where name='Mark' 

除非我已指定它到視圖預先這一個將不起作用的一部分。

+0

是的,那是可能的。你試過了嗎? –

+2

爲什麼它不工作?只要員工中有一個名字叫'姓'... – StephaneM

+0

我試過了,但它告訴我ora-00904 employees.name:無效標識符,然後是00904.00000 - 「%s」:無效標識符 – user3017335

回答

1

視圖是被保存在這樣您運行DBMS的查詢:

create view view_item as 
select * 
from employees 

你剛纔的地方保存查詢在DBMS內存。

當您運行:

select * from view_item 

實際運行:

select * 
from employees 

但是 - 這裏的有趣的部分 - 對你來說看起來像一個表,所以你可以用其中追加它:

select * from view_item where name ='Mark' 

將映射到

select * 
from employees where name = 'Mark' 

讓我們把它furthere,假設您創建的視圖與where子句

create view view_item as 
select * 
from employees 
where salary < 10000 

比以前相同的查詢:

select * from view_item where name ='Mark' 

將映射到

select * 
from employees 
where salary < 10000 and name = 'Mark' 

DBMS很酷:)

你應該玩它來準確地瞭解後臺發生了什麼,因爲你可以使用它來獲得權限和其他東西。

+0

是的。我沒有意識到它看起來像一個表格,你可以從中進一步指定標準。但爲什麼我不應該使用select *作爲StephaneM建議? – user3017335

+0

這取決於需求...如果你用一個視圖來縮短你寫的東西 - 你應該把最嚴格的條件,儘管如果你使用它作爲permision,答案會改變(而且你必須查詢來自不同的用戶,只有在視圖上纔有「選擇」權限,而不是在基本表上) – evenro

+0

如果你要描述你的目標是什麼,爲什麼你要使用視圖,我將能夠更有幫助:) – evenro