728x90
반응형
SMALL
- 가상의 테이블: 실제 데이터를 저장하지 않고, SELECT 정의만 가진 논리적 객체.
- 목적: 보안(민감 정보 숨김), 단순화(복잡 쿼리 캡슐화), 편의성, 논리적 독립성 제공.
- 특징
- 뷰 자체로는 인덱스 없음 (단, DBMS에 따라 물질화 뷰는 인덱스 가능).
- 논리적 독립성 제공 → 내부 테이블 구조가 바뀌어도, 뷰를 통해 사용자 쿼리는 안정적으로 동작.
- 사용자별 맞춤 데이터 제공 → 데이터 관리 용이.
- 뷰 위에 또 다른 뷰 정의 가능
- 뷰에 따른 조작에서 삽입, 갱시, 삭제 연산은 제약이 따름
DDL 관점에서의 제약
- ALTER 불가
- 뷰는 직접 ALTER로 수정할 수 없음.
- 대신 `CREATE OR REPLACE VIEW` 또는 `DROP + CREATE` 방식 사용.
-- 뷰 수정은 ALTER 불가 ALTER VIEW UserNameView RENAME TO NewView; -- ❌ (DB마다 일부 제한적 지원만) -- 일반적으로는 CREATE OR REPLACE VIEW UserNameView AS SELECT id, name FROM "User"; - DROP 가능
- 필요 시 뷰는 테이블처럼 삭제 가능.
DROP VIEW UserNameView;
뷰 예시들
단순 뷰 (컬럼 제한)
CREATE VIEW UserNameView AS
SELECT name FROM "User";
조건 포함 뷰
CREATE VIEW Sales_KR AS
SELECT * FROM Sales
WHERE region = 'KR'
WITH CHECK OPTION;
- `WITH CHECK OPTION`: 이 뷰를 통해 입력/수정 시 조건 위배 불가.
삭제
DROP VIEW Sales_KR;
728x90
반응형
LIST