[Oracle] 오라클 뷰(View) 사용법 총정리 (생성,조회,수정,삭제)

     

    뷰(View)란 무엇인가?

    뷰(View)는 하나 이상의 테이블이나 다른 뷰의 데이터를 볼 수 있게 하는 데이터베이스 객체입니다. 실제 데이터는 뷰를 구성하는 테이블에 담겨 있지만 마치 테이블처럼 사용할 수 있습니다. 또한 테이블 뿐만 아니라 다른 뷰를 참조해 새로운 뷰를 만들어 사용할 수 있습니다.

     

    뷰(View)의 사용 목적

    코딩을 하다보면 여러개의 테이블에서 필요한 정보를 뽑아 사용할때가 많습니다. 이때 좀 더 편리하게 사용할 수 있는 방법중의 하나가 바로 뷰입니다. 뷰를 사용하면 복잡한 질의를 쉽게 만들어 줍니다.. 여러테이블의 JOIN과 GROUP BY 같은 같은 복잡한 쿼리를 view로 저장시켜놓으면 다음부터는 저장한 view의 정보만 가져오면 되므로 쉽게 좀 더 편리하게 사용할 수 있습니다. 일종의 함수라고도 생각하셔도 될듯 합니다. 또한 뷰는 데이터 보안에서도 유리한데요. 뷰를 보면 컬럼과 데이터만 공개되므로 원천 테이블은 알 수 없습니다.

     

     뷰(View) 사용 예시 

    조회쿼리 준비

    SELECT
    CUS.NAME,
    CUS.ADDRESS,
    CON.EMAIL,
    CON.PHONE
    FROM CUSTOMERS CUS
    LEFT OUTER JOIN CONTACTS CON ON CUS.CUSTOMER_ID = CON.CUSTOMER_ID 
    WHERE CON.CONTACT_ID IS NOT NULL
    ORDER BY NAME

    뷰 조회1

    예를들어 위와같은 조회 쿼리문이 있습니다. 하지만 위 쿼리문을 여러번 자주 사용해야한다면 사용할때마다 SQL문을 매번작성하기 보다는 위 조회 쿼리문을 뷰로 만들어놓고 이 뷰를 참조하면 매우 편리합니다.

     

    뷰(View) 생성

    --문법
    CREATE OR REPLACE VIEW [스키마.][뷰 NAME] AS
    SELECT문;
    
    --예제
    CREATE OR REPLACE VIEW V1 AS
    SELECT
    CUS.NAME,
    CUS.ADDRESS,
    CON.EMAIL,
    CON.PHONE
    FROM CUSTOMERS CUS
    LEFT OUTER JOIN CONTACTS CON ON CUS.CUSTOMER_ID = CON.CUSTOMER_ID 
    WHERE CON.CONTACT_ID IS NOT NULL
    ORDER BY NAME;

    뷰 생성 메시지

     

    이렇게 V1이라는 뷰를 하나 만들어 둔 뒤 뷰를 SELECT하면 

    SELECT * FROM V1
    

    뷰 조회2

    만들어둔 뷰에 설정해뒀던 SELECT문이 잘 실행되는것을 보실 수 있습니다.

     

     

    뷰(View) 수정

    --문법
    CREATE OR REPLACE VIEW [스키마.][뷰 NAME] AS
    SELECT문;
    --예제
    CREATE OR REPLACE VIEW V1 AS
    SELECT
    CUS.NAME
    FROM CUSTOMERS CUS
    LEFT OUTER JOIN CONTACTS CON ON CUS.CUSTOMER_ID = CON.CUSTOMER_ID 
    WHERE CON.CONTACT_ID IS NOT NULL
    ORDER BY NAME;

    뷰 수정

    뷰 생성 및 수정은 CREATE OR REPLACE VIEW라고 기억해두시면 됩니다. CREATE는 생성, REPLACE는 수정인데 CREATE OR REPLACE라고 명시해줬을경우 타겟 뷰이름이 없을경우 CREATE를 하고 있을경우 REPLACE를 합니다.

     

    뷰(View) 삭제

    --문법
    DROP VIEW [스키마.][뷰 NAME]
    
    --예제
    DROP VIEW V1;
    

    뷰 삭제 메시지

    뷰 삭제 쿼리는 위와 같습니다. 뷰는 다른 테이블을 참조만 하고 있을 뿐이므로 뷰를 삭제하더라도 실제 뷰가 참조하고있는 테이블에 있는 데이터는 삭제되지 않습니다. 

     

    뷰(View) 구조 확인

    --문법
    desc [스키마.][뷰 NAME];
    --예제
    desc V1;

    뷰 구조확인

     

    [DB기초] 뷰(View)란 무엇인가? + 간단한 예제

     

    댓글

    Designed by JB FACTORY