Search

VIEW

VIEW

데이터베이스에 존재하는 일종의 가상 테이블을 의미합니다.
실제 테이블처럼 행과 열을 갖고 있지만 실제로 데이터를 저장하고 있지는 않습니다.
다른 테이블이나 다른 뷰에 저장되어 있는 데이터를 테이블처럼 보여주는 역할만 수행합니다.

 특징

뷰의 기반 테이블의 데이터를 수정할 경우 뷰에도 반영됩니다.
뷰의 데이터를 수정할 경우 실제 데이터에도 반영됩니다.
뷰로 생성된 가상 테이블에도 데이터를 삽입할 수 있지만
JOIN, UNION, 서브쿼리 등으로 만들어진 뷰에서는 데이터를 삽입할 수 없습니다.

 장점

특정 사용자에게 테이블 전체가 아닌 필요한 필드만을 보여줄 수 있습니다.
민감한 정보를 제외하고 보여주어 데이터 보안을 제공할 수 있습니다.
복잡한 쿼리를 단순화해서 사용할 수 있습니다.
상황에 따라 적합한 구조로 데이터를 준비 해둘 수 있습니다.
쿼리를 재사용 할 수 있습니다.

 단점

한 번 정의된 뷰는 변경할 수 없습니다.
삽입, 삭제, 갱신 작업에 많은 제한 사항을 가집니다.
자신만의 인덱스를 가질 수 없습니다.

 내용 수정이 가능한 뷰

집계함수가 사용되지 않은 뷰
GROUP BY가 사용되지 않은 뷰
JOIN, UNION, 서브쿼리가 사용되지 않은 뷰 (INNER JOIN은 가능)
DISTINCT가 사용되지 않은 뷰

 VIEW의 생성

VIEW의 별명은 원본 테이블과 같은 이름을 가질 수 없습니다.
-- CREATE문을 사용해 뷰 생성 CREATE VIEW [뷰이름] AS SELECT [컬럼이름] FROM [테이블이름] (WHERE [조건]); -- CREATE OR REPLACE VIEW문을 사용해 기존 뷰를 대체하거나 새로운 뷰 생성 CREATE OR REPLACTE VIEW [뷰이름] AS SELECT [컬럼이름] FROM [테이블이름] (WHERE [조건]);
SQL
복사

 VIEW의 조건 일치

INSERT문을 사용할 때 테이블의 일관성을 유지하기 위해 지정한 조건에 적합한지 확인합니다.
-- 조건 일치를 포함한 VIEW 생성 CREATE VIEW [뷰이름] AS SELECT [컬럼이름] FROM [테이블이름] WHERE [조건] WITH CHECK OPTION; -- 조건이 일치하지 않으면 에러 -- 뷰에 데이터 삽입 INSERT INTO [뷰이름] VALUES ([데이터]);
SQL
복사

 VIEW의 수정

ALTER VIEW [뷰이름] AS SELECT [컬럼이름] FROM [테이블이름];
SQL
복사

VIEW의 삭제

DROP VIEW [뷰이름];
SQL
복사