●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 |