[마지막회] DDL(Data Definition Language) – CREATE VIEW

드디어 DB(오라클 SQL) 입문 강좌 마지막 시간입니다.
‘입문’의 범위가 어디까지인지는 어디까지나 주관적인 판단에 의한 것입니다.

본 입문 과정에서 생략된 것은,
SQL DDL 중에서 CREATE TABLESPACE, ALTER TABLESAPCE, CREATE USER, ALTER USER, DROP USER, GRANT, REVOKE 등 주로 DBA가 담당하는 것들과,
DML 중에서는 다른 DB의 레코드를 검색하는 SELECT(UPDATE, INSERT,DELETE) ∼ FROM 테이블@DB 형식의 문장 등이 있습니다.
그 외에 SUBSELECT에 대해서도 충분한 실습이 없었고, 함수에 대해서도 기본적인 것만 다뤘습니다.
오늘 다루는 VIEW와 관련해서도 CREATE VIEW 외에 DROP, SELECT, UPDATE, INSERT INTO, DELETE 등에 대해서는 다루지 않았습니다.
백업 및 복구와 관련된 내용, SQL 편집 명령 등에 대해서도 다루지 않았습니다.
만약 기회가 된다면 위의 내용들로 오라클(SQL) 중급 강좌를 한번 진행했으면 하는 생각입니다.

그럼 DB 입문 마지막 시간, CREATE VIEW 학습을 시작합니다.

VIEW는 오라클에서 제공하는 가상의 테이블(Virtual Table)입니다. 이미 우린 여러 실습을 통해 실제 테이블을 만들고 검색하는 일들을 해봤습니다. VIEW는 실제 테이블을 바탕으로 만들어진 가상의 테이블이며, 검색 등 기타 사용법은 실제 테이블과 거의 유사합니다.
따라서 이번 시간에는 VIEW를 만드는 방법을 주로 다루기로 하고, 기타 데이터 검색, 삭제, 변경 등은 실제 테이블로 작업하는 것과 거의 동일하므로 따로 설명하지는 않겠습니다.

  1. 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 등 모두 가능합니다.

  2. 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;

  3. VIEW 검색 실습

    위에서 만든 V_EMP_SKILL2 뷰의 내용을 검색하려면 일반 테이블을 검색하듯이 다음과 같이 하면 됩니다.

    SELECT * FROM V_EMP_SKILL2;

이상으로 DB 입문 강좌를 모두 마칩니다.

지금까지 동주 아빠 손병목이었습니다.

위로 스크롤