본문 바로가기
✨ DBMS/MySQL

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

by 환풍 2023. 7. 27.
728x90

 

뷰(VIEW)란?

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

 

Student 테이블, Professor 테이블

Student테이블과 Professor 테이블이 있다.

 

STUDENT 테이블과 PROFESSOR 테이블을 합쳐 EMP_VIEW 가상 테이블을 만들어주었다.

뷰 테이블을 만들어줄 때에는 CREATE VIEW 테이블명 AS 를 하고 SELECT를 통해 조회할 컬럼을 입력해주면 된다.

 

*뷰는 기본적으로 읽기 전용이지만, 뷰를 통해 원래 테이블의 수정도 가능하다. 하지만, 이런 방법은 추천하지 않는다.

 

뷰의 장점

  • 보안에 도움이 된다.
  • 복잡한 쿼리를 단순화해준다.

UPDATE 이용하여 VIEW 테이블 수정하기.

UPDATE 테이블 SET 을 이용해 VIEW 테이블에 있는 데이터를 일반적인 테이블과 똑같이 수정해줄 수 있다.

 

이런식으로 INSERT도 가능하고, DELETE도 가능하다.

하지만, 뷰를 통해 데이터를 삽입, 수정, 삭제할 수 없는 경우가 몇가지 있다.

  • SUM() 등 집계 함수를 사용한 뷰
  • UNION ALL, JOIN 등을 사용한 뷰
  • DISTINCT, GROUP BY 등을 사용한 뷰

 

WITH CHECK OPTION 이란?

SQL에서 사용되는 제약조건이다. 주로 뷰(VIEW)를 생성하거나 변경할때 사용하며,
데이터를 필터링하거나 조작할 수 있다.

이렇게 EMP_NOT_CHANGE 뷰를 하나 생성해주었는데, 맨 아래에 WITH CHECK OPTION 을 주었다.

 

CREATE VIEW 당시 조건절로 GRADE를 주었기 때문에,  이를 바꾸게 된다면 CHECK OPTION 이라면서 에러가뜬다.

 

이런 식으로 WITH CHECK OPTION의 경우, 뷰를 생성할 때 WHERE 조건절에 사용된 컬럼에 대해 WITH CHECK OPTION을 적용할 수 있는데, 이 옵션을 사용하게 되면 WHERE 조건절에 사용된 컬럼값을 변경하지 못하게 된다.

 

특정 조건으로 조회하는 뷰의 결과에 변동을 막아, 뷰를 공유하는 사람들이 혼란없이 볼 수 있도록 하기 위해 사용한다.

반응형

댓글