🧩 뷰 (VIEW): 컴퓨터 바탕화면의 바로가기 아이콘
뷰는 실제 데이터를 저장하지 않는 '가상의 테이블'이다.
마치 컴퓨터 바탕화면의 바로가기 아이콘처럼, 뷰도 실제 테이블이 아니라, 데이터베이스에 저장된 하나의 SELECT 쿼리문이다.
사용자가 뷰를 조회하면, 데이터베이스는 뷰에 저장된 SELECT 쿼리를 실행하여 그 결과를 반환한다.
따라서 뷰의 데이터는 항상 원본 테이블의 최신 상태를 유지하게 된다.
- CREATE VIEW ... AS SELECT ...: 뷰를 생성한다.
- 뷰 이름 앞에는 v_ 나 view_ 같은 접두사를 붙여서 다른 테이블과 쉽게 구분한다.
CREATE VIEW v_view_name AS
SELECT ...
- 뷰를 조회할 때는 일반 테이블을 조회하는 것처럼 SELECT 문을 사용하면 된다.
- 뷰를 수정하거나 삭제할 때는 일반 테이블과 마찬가지로 ALTER VIEW 또는 DROP VIEW를 사용하면 된다.
🧩 뷰의 장점: 뷰를 사용하는 이유
뷰는 단순히 쿼리를 단축하는 것을 넘어, 데이터베이스의 관리 효율성과 보안을 크게 향상시키는 핵심 기능이다.
실무에서 뷰를 사용하는 세 가지 주요 이유는 다음과 같다.
- 편리성과 재사용성:
- 복잡하고 긴 쿼리를 매번 작성할 필요 없이, 뷰를 통해 간단한 쿼리로 재사용할 수 있다.
- 예를 들어, 여러 테이블을 JOIN하고 집계 함수를 사용하는 복잡한 쿼리를 뷰로 저장해두면, 다른 팀원들은 간단한 명령어만으로 동일한 결과를 얻을 수 있다.
- 또한, 뷰의 로직이 변경될 경우, 뷰의 정의만 수정하면 뷰를 사용하는 모든 곳에 즉시 반영되어 유지보수성이 크게 향상된다.
- 보안성 강화:
- 뷰는 민감한 정보를 숨기거나 사용자별 데이터 접근 권한을 세밀하게 제어하는 데 매우 효과적이다.
- 예를 들어, 인사팀 직원에게는 사원의 연봉을 제외한 정보만 보여주는 뷰를 제공하거나, 마케팅팀에게는 특정 캠페인을 통해 발생한 주문 데이터만 보여주는 뷰를 만들어 줄 수 있다.
- 이를 통해 원본 테이블에 대한 직접적인 접근 권한을 주지 않고도 필요한 데이터만 안전하게 노출할 수 있다.
- 논리적 독립성:
- 뷰는 데이터베이스 구조의 변화를 흡수하는 '추상화 계층' 역할을 한다.
- 만약 원본 테이블의 구조가 변경되더라도, 뷰의 정의만 수정하여 이전과 동일한 구조의 뷰를 유지할 수 있다.
- 이렇게 하면 뷰를 사용하던 애플리케이션 코드를 수정할 필요가 없으므로 유지보수 부담을 크게 줄일 수 있다.
🧩 뷰(VIEW)의 단점 및 주의사항
뷰는 매우 유용하지만, 실무에서 사용할 때 반드시 고려해야 할 단점과 주의사항이 있다.
⚠️ 성능 문제:
- 겉보기에는 간단한 뷰 조회 쿼리가 실제로는 시스템에 큰 부하를 줄 수 있다.
- 뷰가 복잡한 JOIN이나 서브쿼리를 포함하고 있을 경우, 데이터베이스는 뷰를 조회할 때마다 해당 쿼리 전체를 실행해야 한다.
- 특히 뷰 위에 또 다른 뷰를 만드는 중첩(Nested) 방식은 쿼리 최적화를 어렵게 만들어 성능 저하의 주요 원인이 될 수 있다.
⚠️ 업데이트 제약:
- 뷰는 기본적으로 '조회용'으로 사용하는 것이 원칙이다.
- JOIN이나 집계 함수(SUM, COUNT 등)를 포함한 복잡한 뷰는 데이터를 추가, 수정, 삭제하는 작업이 불가능하다.
- 이는 데이터베이스가 뷰의 한 행을 변경할 때 원본 테이블의 어떤 데이터를 어떻게 바꿔야 할지 명확하게 판단할 수 없기 때문이다.
- 데이터를 수정해야 한다면, 원본 테이블에 직접 쿼리를 실행해야 한다.
'DB' 카테고리의 다른 글
| [DB] 데이터 무결성 (Data Integrity), 제약 조건 (Constraints) (0) | 2025.09.21 |
|---|---|
| [DB] 인덱스 (Index) (2) | 2025.09.21 |
| [DB] CASE 문 (0) | 2025.09.19 |
| [DB] UNION (0) | 2025.09.19 |
| [DB] 서브쿼리 – 스칼라 서브쿼리, 다중 행/열 서브쿼리, 상관 서브쿼리 (0) | 2025.09.19 |