본문 바로가기
✨ DBMS/MySQL

[SQL] 뷰(VIEW) 활용하기 2 - 수정 (OR REPLACE, ALTER)

by 환풍 2023. 8. 2.
728x90

 

 

[SQL] 뷰(VIEW) 활용하기 , WITH CHECK OPTION 사용법

뷰(VIEW)란? 가상의 테이블로, 한 번 생성해 놓으면 테이블로 생각하고 사용해도 될 만큼 사용자가 볼 때 테이블과 거의 동일한 개체로 여겨진다. Student 테이블, Professor 테이블 Student테이블과 Profes

bright-landscape.tistory.com


EMP 테이블을 기반으로 EMPEX 뷰 테이블을 하나 만들어주었고,

EMPVIEW1 이라는 가상 뷰 테이블을 생성하여, 조건문을 주며 출력해보았다.

 

 

이런식으로 VIEW 를 수정하는 방법에는 두가지가 있다.

첫번째는, ALTER를 이용해서 뷰를 수정하는 방법이고, 두번째는 OR REPLACE를 이용한 것이다.

단, OR REPLACE는 앞에 ALTER가 아니라 CREATE를 써줘야한다.

 

INSERT INTO EMPVIEW1(EMPNO, ENAME, SAL) VALUES (8989, '박주홍', 4000);

이렇게 VIEW 테이블에 데이터를 삽입하고, EMPEX 가상 뷰와 EMPVIEW1 가상 뷰 를 조회해보았다.

 

SELECT * FROM EMPVIEW1과  SELECT * FROM EMPEX 테이블 둘다 박주홍이 들어가있다.

이렇게 훼손될 위험이 있다.


DML 제한

 

WITH CHECK OPTION

하나 예시로, 위 가상 뷰 테이블에 WITH CHECK OPTION을 하나 더 추가해보았다. INSERT 할때, SAL 자리에 2000을 넣어서 오류가 났다. 왜 그런지는 아래 포스팅에서 풀어보았다.

 

[SQL] 뷰(VIEW) 활용하기 , WITH CHECK OPTION 사용법

뷰(VIEW)란? 가상의 테이블로, 한 번 생성해 놓으면 테이블로 생각하고 사용해도 될 만큼 사용자가 볼 때 테이블과 거의 동일한 개체로 여겨진다. Student 테이블, Professor 테이블 Student테이블과 Profes

bright-landscape.tistory.com

 

가상 컬럼 생성

VIEW를 만들 때, 가상으로 GRADE 라는 컬럼을 만들어 주었고,

이 가상 컬럼에 INSERT를 시도해보았다. 결과는 보다시피 에러가났다.

 

따라서, 가상으로 만들어진 컬럼은 DML에 제한이 있는 것을 알 수 있다. 실제 데이터가 아니라, 기존에 존재한 데이터를 갖고 가상으로 만들었기 때문이다.

 

 

반응형

댓글