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 조건절에 사용된 컬럼값을 변경하지 못하게 된다.
특정 조건으로 조회하는 뷰의 결과에 변동을 막아, 뷰를 공유하는 사람들이 혼란없이 볼 수 있도록 하기 위해 사용한다.
728x90
반응형
'✨ DBMS > MySQL' 카테고리의 다른 글
[SQL] 뷰(VIEW) 활용하기 2 - 수정 (OR REPLACE, ALTER) (0) | 2023.08.02 |
---|---|
[MySQL / SQL] - JOIN 조인 (Cross , Equi , Self , Outer , Union ) (0) | 2023.07.29 |
[MySQL / SQL] - 주요 함수 ( 숫자, 문자 , 시간, 날짜) (0) | 2023.07.27 |
[MySQL / SQL] 테이블 구조 생성, 변경, 삭제 (DDL) (0) | 2023.07.26 |
댓글