뷰 ?
사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블 또는 뷰를 기반으로 만들어진 가상 테이블(논리 테이블)이다.
뷰는 데이터를 가지고 있지 않으며, 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 뷰테이블명;
'쌍용강북교육센터 > 8월' 카테고리의 다른 글
0817_Oracle : SEQUENCE 시퀀스 (1) | 2021.08.18 |
---|---|
0817_Oracle : VIEW 뷰를 이용한 데이터 추가 및 수정 삭제 (0) | 2021.08.18 |
0817_Oracle : 테이블 변경 (0) | 2021.08.17 |
0817_Oracle : 페이징 처리 방법 (0) | 2021.08.17 |
0817_Oracle : 꼭 알아둬야할 자료형 (1) | 2021.08.17 |