database에서 view는 물리적 객체가 아니라 논리적 객체로 가상의 테이블 이다.
view는 저장장치 내에 물리적으로 존재하지 않지만 사용자에게 있는 것처럼 간주된다.
뷰는 데이터 보정작업, 처리작업, 시험 등 임시적인 작업을 위한 용도로 활용된다.
뷰는 조인문의 사용 최소화로 사용상의 편의성을 최대화 한다.
뷰의 의미는 하나의 select 문과 같다고 생각하면 된다.
CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW 뷰 이름
[(COLOMN_ALIASES)]
AS
SELECT 문
[WITH READ ONLY]
[WITH CHECK OPTION [CONSTRAINT 제약조건명]]
※ 대괄호([ ])의 항목은 필요하지 않을 경우 생략이 가능하다.
CREATE OR REPLACE VIEW v_portal
AS
SELECT login_id,
user_name,
org_full_name
from portal_user;
명령의 18 행에서 시작하는 중 오류 발생 -
CREATE OR REPLACE VIEW v_portal
AS
SELECT login_id,
user_name,
org_full_name
from portal_user
오류 보고 -
ORA-01031: 권한이 불충분합니다
01031. 00000 - "insufficient privileges"
*Cause: An attempt was made to perform a database operation without
the necessary privileges.
*Action: Ask your database administrator or designated security
administrator to grant you the necessary privileges
view를 생성하기 위해서는 view 생성 권한을 주어야 한다.
아래 쿼리문을 system 계정에서 실행해보자.
GRANT CREATE VIEW TO portal;
view 가 생성되었습니다.

VIEW 도 UPDATE 가 되는데? 뭐지?
단순 VIEW 는 UPDATE 가 가능하다. 그렇다면.. 정말 단순 VIEW 의 경우 특정 컬럼만 골라서 보이게 하는 용도가 다 인건가?
기본 VIEW 의 경우 udpate가 가능합니다. insert 또한 참고하여 view 를 만들었던 table의 조건(not null 등등), 컬럼이 맞으면 insert 또한 가능하다.
그리고 view 를 사용하는 이유 중 또 하나는 view 를 생성할 때, join이나, 서브쿼리를 사용하여 만들 수 있다는 것이다.
다만, join, 서브쿼리등을 이용하여 view 를 만들 경우, 해당 view는 select만 가능할 수 있습니다.
코딩을 하다보면 여러개의 테이블에서 필요한 정보를 뽑아 사용할때가 많습니다. 이때 좀 더 편리하게 사용할 수 있는 방법중의 하나가 바로 뷰입니다. 뷰를 사용하면 복잡한 질의를 쉽게 만들어 줍니다.. 여러테이블의 JOIN과 GROUP BY 같은 같은 복잡한 쿼리를 view로 저장시켜놓으면 다음부터는 저장한 view의 정보만 가져오면 되므로 쉽게 좀 더 편리하게 사용할 수 있습니다. 일종의 함수라고도 생각하셔도 될듯 합니다. 또한 뷰는 데이터 보안에서도 유리한데요. 뷰를 보면 컬럼과 데이터만 공개되므로 원천 테이블은 알 수 없습니다.
참고 블로그
https://coding-factory.tistory.com/417
https://gent.tistory.com/361