[MySQL] VIEW

1 minute read


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 삭제 안됨

Tags:

Categories:

Updated: