뷰 (View) 란 무엇인가~??
-- Last Update : 2015.03.18
-- 단순 뷰 (Simple View), 복합 뷰 (Complex View), 인라인 뷰 (Inline View) 에 대해서만 기술
-- 구체화된 뷰 (Materialized View) 는 간단한 소개만 (추후 별도 포스팅)
-- 잘못된 내용은 댓글 달아 주시면 수정 하도록 하겠습니다 ^^
간단히 말해서 필요한 내용만 뽑아서 사용하는것을 뷰 (View) 라고 볼 수 있다.
주로 데이터를 조회하는데 가장 많이 사용한다.
그런데 뷰 (View) 는 Read Only 명령을 주지 않을 경우 Insert 도 가능하다~(!!)
(나도 공부하기 전에는 몰랐던 생각하지 않던(?) 단순한 사실;)
■ 문법 (Syntax)
CREATE [ OR REPLACE ] [ FORCE | NOFORCE ] VIEW 뷰이름 [ (alias, alias, .....) ]
AS sub-query
[ WITH CHECK OPTION [CONSTRAINT 제약조건] ]
[ WITH READ ONLY ]
-- OR REPLACE : 같은 이름의 View가 존재하면 새로 만드는 옵션
-- FORCE : 테이블 (Table) 가 없어도 뷰 (View) 를 만드는 옵션
-- NOFORCE : 테이블 (Table) 가 있으면 뷰 (View) 를 만드는 옵션
-- ALIAS : 뷰 (View) 의 컬럼 이름을 정하는 옵션
-- WITH CHECK OPTION : 제약조건에 맞는것만 수정을 할 수 있도록 하는 옵션
-- WITH READ ONLY : SELECT 만 가능하도록 하는 옵션
■ 뷰 (View) 생성 권한 주기 - / as sysdba 로 권한 부여 할 것~!
SQL> GRANT CREATE VIEW TO scott;
■ M 뷰 (M View) 생성 권한 주기 - / as sysdba 로 권한 부여 할 것~!
SQL> GRANT query rewrite TO scott;
SQL> GRANT create materialized view TO scott;
1. 단순 뷰 (Simple View)
테이블 (Table) 에서 필요한 부분만 뽑아온(?)것을 단순 뷰 (Simple View) 라고 한다.
■ 예제 테이블 (Table) 생성
CREATE TABLE a_table ( a1 NUMBER, a2 NUMBER, a3 NUMBER);
INSERT INTO a_table VALUES (1, 1, 1);
INSERT INTO a_table VALUES (2, 2, 2);
INSERT INTO a_table VALUES (3, 3, 3);
■ 단순 뷰 (Simple View) 생성
CREATE OR REPLACE VIEW a_view1
AS
SELECT a1, a2
FROM a_table;
■ 단순 뷰 (Simple View) 조회
SELECT * FROM a_view1;
2. 복합 뷰 (Complex View)
여러 테이블 (Table) 이 조인 (Join) 되어 만든 뷰 (View) 를 복합 뷰 라고한다.
■ 예제 테이블 (Table) 생성
CREATE TABLE b_table(b1 NUMBER, b2 VARCHAR2(10));
INSERT INTO b_table VALUES (1, 'one');
INSERT INTO b_table VALUES (2, 'two');
INSERT INTO b_table VALUES (3, 'three');
■ 복합 뷰 (Complex View) 생성
CREATE OR REPLACE VIEW a_view2
AS
SELECT a.a1, b.b2
FROM a_table a, b_table b
WHERE a.a1 = b.b1;
■ 복합 뷰 (Complex View) 조회
SELECT * FROM a_view2;
3. 인라인 뷰 (Inline View)
일반적으로 가장 많이 사용한다.
쉽게 설명하면 FROM 절 안에 SQL 문장이 들어가는 것을 인라인 뷰 (Inline View) 라고 볼 수 있다.
ps. 실제로 아래처럼 SQL 짜진 않겠지만 인라인 뷰의 예를 위해서 작성하였습니다.
아직 공부하는 학생(?) 입니다~ ㅋ
■ 인라인 뷰 (Inline View) 조회
SELECT a.a1, b.b2
FROM a_table a, (SELECT b1, b2
FROM b_table) b
WHERE a.a1 = b.b1;
4. 구체화된 뷰 (Materialized View) / (M View)
구체화된 뷰는 이번 포스팅에서 간단히 소개만 하겠다. (추후 별도 포스팅~!!)
M View 는 구현보다도 구조적인면의 이해가 필요하다.
대부분의 뷰 (View) 가 원본 테이블 (Table) 에서 정보를 보여준다.
하지만 M 뷰 (M View) 는 하나의 테이블 (Table) 처럼 동작을 한다.
그래서 원본 테이블 (Table) 이 변경되었을 때 M View 는 별도의 공간(?)을 사용하기 때문에 참조하는 테이블 (Table) 과 각각 별도의 정보를 보관하게 되는 것이다.
그렇기 때문에 M 뷰 (M View) 는 참조하는 테이블 (Table) 과 동기화 시키는 것이 관건인(?) 뷰 (View) 이다.
대용량DB (몇 천 or 몇 억 건??) 의 경우에는 M 뷰 (M View) 를 매우 많이 사용한다고 한다.
'Specialty > Oracle' 카테고리의 다른 글
오라클 (Oracle) PL/SQL 에 대해서 알아보자. (0) | 2015.03.25 |
---|---|
오라클 10g RAC 설치를 위한 RHEL4 설정 (Configuring RHEL4 for Installing Oracle 10g RAC) (2) | 2015.03.19 |
오라클 (Oracle) RAC 설치를 위한 리눅스 (Linux) RHEL4 설치 (0) | 2015.03.09 |
오라클 (Oracle) RAC 설치를 위한 VMware 9 구성 (1) | 2015.03.06 |
Create Oracle 10g Database (Silent DB 생성) (0) | 2015.02.25 |