뷰 ?

사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블 또는 뷰를 기반으로 만들어진 가상 테이블(논리 테이블)이다.

뷰는 데이터를 가지고 있지 않으며, SQL만 저장되어 있다.

 

뷰 생성 및 삭제

뷰를 생성하거나 삭제하기 위해서는 사용자는 시스템 권한 중의 하나인 CREATE VIEW 권한을 가져야 한다.

- 사용자의 시스템 권한(privilege) 확인

SELECT * FROM user_sys_privs;

- 사용자에게 CREATE VIEW 권한 설정 (system 또는 sys 계정에서 실시)

GRANT CREATE VIEW TO 사용자;

 

여태껏 판매현황을 출력할 때 마다 JOIN을 이용해서 계속 테이블을 했어야 했는데 이것을 VIEW 뷰로 만들면 뷰만 출력하면 된다. 

 

-- 뷰 만들기

CREATE VIEW panmai
AS 
SELECT b.bCode, bName, bPrice, b.pNum, pName, sDate, s.cNum, cName, qty
FROM book b 
JOIN pub p ON b.pNum = p.pNum
JOIN dsale d ON b.bCode = d.bCode
JOIN sale s ON d.sNum = s.sNum
JOIN cus c ON s.cNum = c.cNum;

-- 뷰 SELECT

SELECT * FROM panmai;

이제 판매내역을 위해 일일히 다 JOIN할 필요 없이 뷰 테이블을 선택하면 된다.

 

-- 뷰 수정

CREATE OR REPLACE VIEW panmai
AS 
SELECT b.bCode, bName, bPrice, b.pNum, pName, sDate, s.cNum, cName, qty, qty*bPrice amt
FROM book b 
JOIN pub p ON b.pNum = p.pNum
JOIN dsale d ON b.bCode = d.bCode
JOIN sale s ON d.sNum = s.sNum
JOIN cus c ON s.cNum = c.cNum;

수정 시에는 CREATE OR REPLACE VIEW를 붙여서 없으면 만들고 있으면 수정한다는 명령어를 붙이면 된다.

수정된 결과가 잘 나왔다.

 

-- 뷰 컬럼 확인

SELECT * FROM col WHERE tname = 'PANMAI';
DESC panmai;

일반 테이블의 컬럼을 확인할때와 마찬가지의 방식이다.

 

-- 뷰 소스 확인

뷰는 SQL만 저장되어있는 것이라고 위에 기술했는데, 그렇다면 그 SQL을 보기 위해서 어떻게 해야할까?

SELECT * FROM user_views;

이 쿼리를 통해 계정이 가지고 있는 뷰를 볼 수 있다. 거기서 TEXT 칼럼을 통해 확인할 수 있다.

뷰는 PURGE 없이 삭제해도 휴지통에 가지않고 바로 삭제된다.

DROP VIEW 뷰테이블명;

 

+ Recent posts