새소식

반응형
DataBase/Oracle SQL

[Oracle SQL] 오라클 VIEW 에 대하여 알아보기.

  • -
반응형

2021-03-12


Photo by Olga Kysliuk on Unsplash

VIEW란 기존의 존재하는 테이블로 만들어진 가상의 테이블이라고 정의할 수 있다. VIEW를 통해 필요한 데이터만 정의해서 관리할 수 있으며, VIEW에 정의되지 않은 데이터들은 사용자에게 보이지 않기 때문에, 데이터를 비교적 안전하게 관리할 수 있다. 추가적으로 VIEW를 통해 쿼리를 간단히 할 수 있다는 장점도 있다.


- 예제 테이블 ( SEE_INFO )

 

아래는 뷰가 참고할 원본 테이블 SEE_INFO의 데이터이다. 

 


- VIEW 생성

 

SEE_INFO 테이블에서 나이가 25세보다 많은 사람의 NAME과 GRADE의 정보 추출 -> VIEW 생성

 

CREATE VIEW SEE_TEST1 
AS SELECT NAME, GRADE
FROM SEE_INFO
WHERE AGE > 25;

 

CREATE를 통해 VIEW를 생성하며, 이후 AS SELECT 문을 통해 자신이 원하는 형태의 데이터만 추출하여, 나타낼 수 있습니다.


- VLEW 실행

 

기존의 SELECT 문으로 일일이 조건을 부여해야 했던 쿼리문이 아래와 같이 간단하게 요약된 형태로 사용된다.

 

SELECT * FROM SEE_TEST1;

 


- VIEW 수정

 

SEE_INFO 테이블에서 나이가 '25'세보다 많은 사람의 NAME과 GRADE의 정보 추출 -> VIEW 생성

 

위의 내용을 아래와 같이 수정하고자 원한다면

 

SEE_INFO 테이블에서 나이가 '30'세보다 많은 사람의 NAME과 GRADE의 정보 추출 -> VIEW 생성

 

CREATE OR REPLACE VIEW SEE_TEST1 
AS SELECT NAME, GRADE
FROM SEE_INFO
WHERE AGE > 30;

 

간단히 CREATE에서 CREATE OR REPLACE로 바꾸어주고 이후 수정하고 싶은 VIEW 이름과 다시 AS SELECT 문으로 VIEW를 재정의 해주면 된다. 이후 SELECT * FROM SEE_TEST 1;으로 다시 실행시켜 보면 아래와 같이 30세 이상의 사람의 데이터로 변경되어 정상 출력되는 것을 확인할 수 있다. 

 


- VIEW 옵션

 

WITH CHECK OPTION : 테이블을 DML로 CRUD 수행 시 VIEW의 범주 내에서만 실행되도록 하는 옵션

 

CREATE OR REPLACE VIEW SEE_TEST1 
AS SELECT SEENUM, NAME, AGE
FROM SEE_INFO
WHERE AGE > 30
WITH CHECK OPTION;

 

조건은 30세 이상 번호 / 이름 / 나이를 추출 -> SEE_TEST 1 테이블 수정

 

-- 범주 30세 이상이 아니기 때문에 INSERT 되지 않음
INSERT INTO SEE_TEST VALUES(99, 'HI_YOU', 25);

-- 범주 30세 이상이기 때문에 INSERT됨
INSERT INTO SEE_TEST1 VALUES(99, 'HI_YOU', 35);

 

VIEW를 수정한 후 INSERT 문을 수행하면 30세 이상의 조건을 충족하지 않는 첫 번째 25세 INSERT 문은 삽입되지 않으며, 35세를 입력한 두 번째 INSERT 구문이 테이블에 삽입된다.

 


WITH READ ONLY :  VIEW에 대한 DML 작업이 불가하며, 데이터 확인만 가능한 옵션이다.

 

CREATE OR REPLACE VIEW SEE_TEST1 
AS SELECT SEENUM, NAME, AGE
FROM SEE_INFO
WHERE AGE > 30
WITH READ ONLY;

메인 이미지 출처: Photo by Olga Kysliuk on Unsplash  

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.