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
복사