VIEW는 오라클에서 제공하는 가상의 테이블(Virtual Table)입니다. 이미 우린 여러 실습을 통해 실제 테이블을 만들고 검색하는 일들을 해봤습니다. VIEW는 실제 테이블을 바탕으로 만들어진 가상의 테이블이며, 검색 등 기타 사용법은 실제 테이블과 거의 유사합니다.
따라서 이번 시간에는 VIEW를 만드는 방법을 주로 다루기로 하고, 기타 데이터 검색, 삭제, 변경 등은 실제 테이블로 작업하는 것과 거의 동일하므로 따로 설명하지는 않겠습니다.
- VIEW 만들기
CREATE OR REPLACE VIEW view_name
AS query
[WITH CHECK OPTION]
[WITH READ ONLY];
참고로 만들어진 VIEW를 삭제하려면,
DROP VIEW view_name; 라고 하면 됩니다.
뷰를 만들 때 CREATE OR RELPACE VIEW 대신 그냥 CREATE VIEW만 사용해도 됩니다. 그러나 그냥 CREATE VIEW를 통해 만들어진 뷰의 구조를 바꾸려면 뷰를 삭제하고 다시 만들어야 되는 반면, CREATE OR REPLACE VIEW는 새로운 뷰를 만들거나 기존의 뷰를 통해 새로운 구조의 뷰를 만들 수도 있습니다. 그래서 대부분 뷰를 만들 때는 CREATE VIEW 대신 CREATE OR REPLACE VIEW를 사용하는 편입니다.- VIEW에는 VIEW를 생성하는 SELECT 문만 저장됩니다. 즉 실제로 테이블은 존재하지 않으며, VIEW를 SELECT 문으로 검색하는 순간 실제 테이블을 참조하여 보여줍니다.
- VIEW의 query문에는 ORDER BY 절을 사용할 수 없습니다.
- WITH CHECK OPTION을 사용하면, 해당 VIEW를 통해서 볼 수 있는 범위 내에서만 UPDATE 또는 INSERT가 가능하합니다.
예를 들어,
CREATE OR REPLACE VIEW V_EMP_SKILL
AS
SELECT *
FROM EMP_SKILL
WHERE AVAILABLE = 'YES'
WITH CHECK OPTION;
위와 같이 WITH CHECK OPTION을 사용하여 뷰를 만들면, AVAILABLE 컬럼이 'YES'가 아닌 데이터는 VIEW를 통해 입력할 수 없습니다. 즉, 아래와 같이 입력하는 것은 '불가능'하다는 것입니다.
INSERT INTO V_EMP_SKILL
VALUES('10002', 'C101', '01/11/02','NO');- WITH READ ONLY을 사용하면 해당 VIEW를 통해서는 SELECT만 가능하며 INSERT/UPDATE/DELETE를 할 수 없게 됩니다. 만약 이것을 생략한다면, 뷰를 사용하여 Create, Update, Delete 등 모두 가능합니다.
- VIEW에는 VIEW를 생성하는 SELECT 문만 저장됩니다. 즉 실제로 테이블은 존재하지 않으며, VIEW를 SELECT 문으로 검색하는 순간 실제 테이블을 참조하여 보여줍니다.
- VIEW 만들기 실습
EMP_SKILL 테이블과 SKILL 테이블의 EMP_NUM, SKILL_NO, SKILL_NAME 컬럼을 볼 수 있는 뷰(V_EMP_SKILL2) 만들기
CREATE OR REPLACE VIEW V_EMP_SKILL2
AS
SELECT A.EMP_NUM, A.SKILL_NO, B.SKILL_NAME
FROM EMP_SKILL A, SKILL B
WHERE A.SKILL_NO = B.SKILL_NO;- VIEW 검색 실습
위에서 만든 V_EMP_SKILL2 뷰의 내용을 검색하려면 일반 테이블을 검색하듯이 다음과 같이 하면 됩니다.
SELECT * FROM V_EMP_SKILL2;
이상으로 DB 입문 강좌를 모두 마칩니다.
지금까지 동주 아빠 손병목이었습니다.
'oracle' 카테고리의 다른 글
dbms_stats.gather_table_stats에 대하여 (0) | 2016.10.07 |
---|---|
CAST 함수 사용법 (0) | 2016.10.07 |
synonym (0) | 2016.09.30 |
integer vs number (0) | 2016.06.30 |
merge into (0) | 2015.07.03 |