[MySQL] VIEW
MySQL Table
CREATE VIEW
- 가상의 테이블 만들기
CREATE VIEW
- CREATE VIEW [view_name] AS [table]
- 생성된 View에서는 일반 table처럼 작업(select, join, update, delete, insert 등)을 할 수 있음
- View에서 insert를 한 경우 insert한 데이터는 원래 데이터가 있는 테이블에 추가됨
- 단, View는 View 생성 조건에 따라 데이터가 보여짐
- 만약 View 조건 밖의 데이터가 추가 안되게 하고 싶은 경우,
WITH CHECK OPTION
옵션을 설정
- View에서 수정(delete, update)이 이루어진 경우 수정된 내용은 원래 데이터가 있는 테이블에 적용됨
- 단, View의 범위 밖에 있는 경우에는 적용 안됨
# emp3에서 급여가 2000 이상인 직원들의 사번, 이름, 급여, 부서번호를 View로 생성
CREATE VIEW v1_emp AS
SELECT e.empno, e.ename, e.sal, e.deptno
FROM emp
WHERE e.sal > 2000;
# 직원 추가 (7777, TOM,4000,10), (7788,Jane,1000,20)
INSERT INTO v1_emp VALUES (7777,'TOM',4000,10), # view의 조건인 2000 이상이기에 v1_emp에도 보임
(7788,'Jane',1000,20); # view의 조건인 2000 미만이기에 v1_emp에는 보여지지 않음
# 직원은 v1_emp가 아닌 v1_emp가 derive된 emp에만 추가됨
# Jane의 경우 추가 안 되게 View 생성
ALTER VIEW v2_emp3 AS
SELECT empno, ename, sal, deptno
FROM emp3
WHERE (sal >= 2000)
WITH CHECK OPTION;
# v1_emp에서 사번이 7566인 직원의 부서번호를 30으로 수정하시오
UPDATE v1_emp
SET deptno = 30
WHERE empno = 7566;
# emp에서 empno=7566인 사원의 부서번호는 30으로 수정됨
# v1_emp에서 사번이 7566인 직원을 삭제하시오
DELETE FROM v1_emp
WHERE (empno = 7566);
# emp에서 empno=7566인 사원이 삭제됨
# v1_emp에는 존재하지 않으며 emp에만 존재하는 Jane 삭제
DELETE FROM v1_emp
WHERE (sal = 1000); # Jane 삭제 안됨