[DB] VIEW

●VIEW


1) 정의 : 실제 테이블을 여러 관점에서 투영한 가상 테이블

2) 목적 

- 사용자의 편의

- 관리와 보안

3) 문법

CREATE [OR REPLACE] VIEW 뷰이름[(컬럼명, ...)]

AS

SELECT문



VIEW TEST ▼

TEST1) 영업부 직원 중 사번, 이름, 급여, 커미션을 view로 작성


CREATE VIEW vw_30

AS

SELECT empno, ename, sal, comm FROM emp WHERE deptno=30;



GRANT create view TO scott;  -> 보안 때문에 권한이 필요하므로 시스템계정에서 권한 주기


SELECT * from vw_30;


□ VIEW 수정하기( job추가)


CREATE OR REPLACE VIEW vw_30

AS

SELECT empno, ename, sal, comm, job FROM emp WHERE deptno=30;


SELECT * from vw_30;




□ 유저의 뷰속성 확인 


DESC USER_VIEWS;


SELECT view_name, view_type, text FROM USER_VIEWS;



□ DB에 존재하는 오브젝트들의 목록 조회


DESC USER_OBJECTS;


SELECT object_name, object_type FROM USER_OBJECTS;



□ VIEW를 통해 입력되지 않는 컬럼에 대한 설정


CREATE OR REPLACE VIEW vw_test

AS

SELECT ename, deptno, job FROM emp WHERE deptno=30;


SELECT * FROM vw_test;


INSERT INTO vw_test(ename, deptno, job) VALUES('홍길동', 30, 'SALESMAN');


desc emp;

-> EMPNO가 NOT NULL이기 때문에 에러가 난다.


EMPNO를 추가해준다.


CREATE OR REPLACE VIEW vw_test

AS

SELECT empno, ename, deptno, job FROM emp WHERE deptno=30;


INSERT INTO vw_test(empno, ename, deptno, job) VALUES(100,'홍길동', 30, 'SALESMAN');





□ VIEW를 통해 계상된 컬럼이나 파생된 컬럼의 수정


CREATE OR REPLACE VIEW vw_test

AS

SELECT ename, deptno, sal+nvl(comm, 0) as total

FROM emp WHERE deptno=30;


SELECT * FROM vw_test;



UPDATE vw_test

SET total=2000

WHERE ename='홍길동';

-> VIEW에서 만들어진 테이블의 컬럼을 수정할때 Alias로 만들면 오라클에서 오류를 발생한다.




□ VIEW를 통해 여러 테이블을 수정


CREATE OR REPLACE VIEW vw_test

AS

SELECT ename, sal, job, dname, loc

FROM emp, dept WHERE emp.deptno=dept.deptno;


UPDATE vw_test

SET job='aaa', loc='bbb'

WHERE ename='홍길동';





□ 위를 벗어난 수정


CREATE OR REPLACE VIEW vw_test

AS

SELECT empno, ename, deptno, job, sal

FROM emp WHERE sal>=2000 and sal<=5000;


SELECT * FROM vw_test;


UPDATE vw_test

SET sal=5500

WHERE empno=7788;



UPDATE emp

SET sal=3000

WHERE empno=7788;


CREATE OR REPLACE VIEW vw_test

AS

SELECT empno, ename, deptno, job, sal

FROM emp WHERE sal>=2000 and sal<=5000

WITH CHECK OPTION;

-> 처음 조건의 범위안에서 수정 변경이 될수 있게 하는게 wit check option이다.


UPDATE vw_test

SET sal=5500

WHERE empno=7788;




'DB' 카테고리의 다른 글

[Oracle] 오라클11g 다운로드 및 설치  (0) 2017.11.20
[DB] SQL 사용법  (0) 2017.11.20
[DB] 테이블 문제  (0) 2017.11.20
[DB] Data Integrity(데이터 무결성)  (0) 2017.11.17
[DB] Transaction  (0) 2017.11.17

댓글

Designed by JB FACTORY