2014-04-17 1 views
0

당신이오라클 SQL 뷰

create view view_item as 
select * 
from employees 

같은 오라클 SQL에서 뷰를 생성 한 경우 그럼 당신은 select * from view_item처럼 호출 할 수 있습니다. 그러나, 나는 더 내가 미리보기로를 지정하지 않으면이 하나가 작동하지 않습니다 같은

select * from view_item where name='Mark' 

로 초기보기 사양의 일부가 아닌 일부 creteria를 지정할 수 있는지 여부 궁금 해서요. 당신은 단지 DBMS 메모리 어딘가에 쿼리를 저장

create view view_item as 
select * 
from employees 

:

+0

예, 가능합니다. 너 해봤 어? –

+2

왜 작동하지 않습니까? 종업원에게 '이름'이라는 clomun이있는 한 ... – StephaneM

+0

나는 시도했으나 ora-00904 employees.name : 유효하지 않은 식별자와 00904.00000 - "% s": 잘못된 식별자 – user3017335

답변

1

뷰는 사용자가 실행하므로 DBMS에 저장되고있는 쿼리입니다.

당신은 실행하면

select * from view_item 

당신이 실제로 실행

select * 
from employees 

을하지만 - 여기에서 재미있는 부분입니다 - 당신이 어디에 그것을 추가 할 수 있도록 것은, 테이블과 같다 :

select * from view_item where name ='Mark' 

에 매핑합니다 0
select * 
from employees where name = 'Mark' 

의 당신이 가진 뷰를 생성한다고 가정 해 봅시다의이 furthere을 보자 어디 전에에서 동일한 쿼리에 비해 절

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

예. 나는 그것이 당신이 더 자세히 기준을 지정할 수있는 테이블과 같이 생겼다는 것을 깨닫지 못했습니다. 하지만 StephaneM이 제안한대로 select *를 사용하지 않아야하는 이유는 무엇입니까? – user3017335

+0

필요에 따라 다릅니다 ... 예를 들어 작성한 내용을 줄이기 위해보기를 사용하는 경우 가장 제한적인 조건을 지정해야하지만 permision을 위해 사용하면 대답이 변경됩니다 (그리고 쿼리해야합니다. 보기에 대해서만 "선택"권한을 가지며 기본 테이블에는없는 다른 사용자로부터) – evenro

+0

목표가 무엇인지 설명하고 왜보기를 사용해야하는지 설명하면 더 도움이 되십시오 :) – evenro