실시간으로 select 결과물을 테이블처럼 가장해서 보여주는 테이블입니다.(가상 테이블)
객체로써 저장됩니다.
즉, 이름을 가지고 저장됩니다.
뷰도 테이블이므로 select 대상이 됩니다.
뷰의 근원이 되는 실존 테이블의 데이터가 변경된 후 뷰를 검색하면 뷰에 그대로 반영됩니다.
실존 테이블과 view는 항상 동기화(synchroization) 됩니다.
뷰를 가지고 또 다른 뷰를 만들 수 있습니다.
join, 서브쿼리 등과 같은 길고 복잡한 SQL 문장을 뷰로 만들어 쿼리문을 단순화시켜 편의성을 제공합니다.
view를 통해 특정 컬럼 데이터만 보게 하여 실존 테이블에 대한 제한적인 권한을 부여하여 보안성을 부여합니다.
CREATE [OR REPLACE] [FORCE | NOFORCE] VIEW
뷰이름
AS
SELECT문장
[WITH READ ONLY]
[WITH CHECK OPTION];
· OR REPLACE
동일한 뷰가 있으면 덮어씁니다.(미사용 시 뷰 생성 불가능)
즉, 기존의 뷰가 갱신됩니다.
· FORCE
존재하지 않는 테이블로부터 뷰를 만들 경우라도 뷰를 만듭니다.
FORCE에 의해 생성된 뷰는 select로 검색하면 에러가 발생합니다.
즉, 이름만 존재하고 검색이 불가능한 뷰가 됩니다.
뷰 생성 시 거론한 존재하지 않는 테이블을 나중에 만들고 나면 뷰도 select로 검색이 가능합니다.
· NOFORCE
존재하지 않는 테이블에서 뷰를 만들 경우 뷰를 만들지 못합니다.
FORCE, NOFORCE 모두 생략 시 NOFORCE 설정과 같습니다.
· WITH READ ONLY
뷰에 대해 입력, 수정, 삭제 작업이 불가능합니다.
생략 시 특정 조건하에 하나의 테이블에서 만들어진 뷰에 대해서는 입력, 수정, 삭제 작업을 할 수 있고, 실존 테이블에 입력, 수정, 삭제가 됩니다.
· WITH CHECK OPTION – View의 목적을 지키기 위해 사용
뷰의 where 구문 조건에 위배되는 방향으로, insert, update 작업은 불가능합니다.
삭제는 가능합니다.
· 생성한 뷰의 정보를 검색하는 방법
select
view_name
, text
from
user_views;
SYS / SYSTEM / 동일한 권한을 가지는 계정만 가능합니다.
· select 문에서 실존 테이블에 존재하지 않는 컬럼은 반드시 별칭을 써야 함
아래 조건하에 하나의 테이블에서 만들어진 뷰에 대해 입력, 수정, 삭제 작업을 하면 실존 테이블에 입력, 수정, 삭제됩니다.
· create view 구문의 select 구문 속에 다음 구문이 없어야 합니다.
select 절에 서브 쿼리가 포함
select 절에 의사컬럼(ROWNUM, ROWID등)을 사용
집계 및 분석함수(SUM, AVG 등)
GROUP BY, ORDER BY, MODEL, CONNECT BY, START WITH 절
UNION, UNION ALL, DISTINCT
수식 컬럼
WITH READ ONLY 구문
insert 시 view에서 없는 실존 테이블의 컬럼은 null이나 defalut 속성이어야 합니다.
뷰에 없는 데이터를 update, delete 하면 원본 테이블에 데이터가 있어도 전혀 update, delete 되지 않습니다.(에러도 없음)
select, insert, update, delete 구문 안에서 테이블명 자리에 삽입된 select 구문을 말합니다.
이름을 가지고 저장되지 않고, 실행 순간에만 생성되어 사용되고 사라지는 가상 테이블입니다.
· 형식
- select문 안의 인라인뷰
select
컬럼명1
, 컬럼명2
, ~
from
(select문);
- insert문 안의 인라인뷰
insert into
(select문)
values(
데이터1
,
~
);
- update문 안의 인라인뷰
update
(select문)
set
컬럼명1=수정데이터1
,
~
where
~;
- delete문 안의 인라인뷰
delete from
(select문)
where
~;
인라인뷰에 지정한 별칭은 인라인뷰 밖에서는 컬럼명이 됩니다.(영문을 별칭을 주고, 중복되지 않도록 주의)
인라인뷰도 뷰의 일종이므로 위의 inline 뷰를 통한 데이터의 입력, 수정, 삭제의 규칙 하에 입력, 수정, 삭제가 가능합니다.
View 예제 - Oracle (0) | 2021.04.11 |
---|---|
DML(Data Manipulation Language) 예제2 - Oracle (0) | 2021.04.06 |
DML(Data Manipulation Language) 예제 - Oracle (0) | 2021.04.04 |
DML(Data Manipulation Language) - Oracle (0) | 2021.04.04 |
GROUP BY 예제2 - Oracle (0) | 2021.04.02 |
댓글 영역