Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

SQL 단순 뷰(Simple View)와 복합 뷰(Complex View)의 차이점 완벽 정리

SQL 뷰(View)란 무엇인가?

단순 뷰와 복합 뷰를 비교하기에 앞서, 먼저 뷰(View)의 개념부터 짚고 넘어갈 필요가 있습니다. 뷰란 하나 이상의 테이블을 기반으로 생성되는 논리적 가상 테이블로, 실제 데이터를 저장하지 않으면서도 서로 다른 여러 테이블의 컬럼을 마치 하나의 테이블처럼 한 번에 조회할 수 있게 해주는 데이터베이스 객체입니다.

뷰를 만들 때 참여하는 기본 테이블(Base Table)의 개수에 따라 SQL의 뷰는 크게 단순 뷰(Simple View)복합 뷰(Complex View), 두 가지 유형으로 나눌 수 있습니다.

단순 뷰 vs 복합 뷰: 핵심 차이점 비교표

다음 표는 단순 뷰와 복합 뷰의 주요 차이점을 여섯 가지 기준으로 정리한 것입니다.

번호구분 기준단순 뷰 (Simple View)복합 뷰 (Complex View)
1정의오직 하나의 테이블만을 기반으로 생성된 뷰입니다. 즉, 기본 테이블이 단 하나뿐입니다.두 개 이상의 여러 테이블을 결합하여 생성된 뷰로, 여러 테이블이 함께 프로젝션됩니다.
2조인 및 절대상 테이블이 하나뿐이므로 조인 조건이나 GROUP BY, ORDER BY 같은 추가 절이 필요하지 않습니다.여러 테이블이 관련되어 있으므로 조인 조건, GROUP BY 절, ORDER BY 절 등이 일반적으로 요구됩니다.
3그룹 함수단일 테이블 기반이라 MAX(), COUNT(), SUM()과 같은 그룹 함수를 사용할 수 없습니다.여러 테이블을 다루기 때문에 다양한 그룹 함수를 활용할 수 있습니다.
4DML 연산 허용 여부INSERT, UPDATE, DELETE와 같은 DML 연산을 비교적 쉽게 수행할 수 있습니다.뷰의 구성 방식에 따라 DML 연산이 항상 가능한 것은 아닙니다.
5데이터 변경기본 테이블이 하나이므로 INSERT, DELETE, UPDATE 작업이 직접적으로 가능합니다.반면 복합 뷰에서는 INSERT, DELETE, UPDATE 작업을 적용할 수 없는 경우가 많습니다.
6NOT NULL 컬럼단순 뷰에서는 기본 테이블의 NOT NULL 컬럼을 포함시키기 어렵습니다.반면 복합 뷰에서는 NOT NULL 컬럼을 포함시킬 수 있습니다.

각 차이점 상세 설명

1. 정의와 구성 테이블

단순 뷰는 이름 그대로 하나의 테이블에서 필요한 컬럼만 골라 만든 뷰입니다. 반면 복합 뷰는 두 개 이상의 테이블을 조인하여 마치 하나의 통합된 테이블처럼 보여주는 뷰입니다.

2. 조인 조건과 절의 필요 여부

단순 뷰는 테이블이 하나뿐이라 별도의 조인이나 그룹핑 없이 간단한 SELECT 문으로 정의됩니다. 복합 뷰는 여러 테이블 간의 관계를 명시해야 하므로 JOIN 조건은 물론, 경우에 따라 GROUP BY나 ORDER BY 절이 함께 사용됩니다.

3. 그룹 함수 사용 가능 여부

MAX(), COUNT(), AVG() 같은 그룹 함수는 여러 행을 집계할 때 주로 사용되며, 복합 뷰에서는 이러한 집계 로직을 자유롭게 포함할 수 있습니다. 단순 뷰는 원본 테이블의 행과 컬럼을 그대로 반영하는 구조이기 때문에 그룹 함수를 사용할 수 없습니다.

4~5. DML 연산과 데이터 변경

단순 뷰는 원본 테이블과의 대응 관계가 명확하기 때문에 INSERT, UPDATE, DELETE 같은 DML 연산이 직접적으로 가능합니다. 하지만 복합 뷰는 여러 테이블이 얽혀 있어 어떤 테이블의 데이터를 변경해야 할지 모호해질 수 있으므로, DML 연산이 제한되거나 불가능한 경우가 많습니다.

6. NOT NULL 컬럼 처리

단순 뷰에서는 기본 테이블의 NOT NULL 컬럼을 포함시키기 어려운 반면, 복합 뷰에서는 NOT NULL 컬럼을 포함할 수 있습니다. 다만 실제 DBMS(특히 Oracle) 환경에서는 뷰 정의에 NOT NULL 컬럼이 누락되면 해당 뷰를 통한 INSERT가 실패할 수 있으므로, 사용 중인 DBMS의 특성을 함께 확인하는 것이 좋습니다.

예제 코드로 살펴보기

단순 뷰 생성 예제

CREATE VIEW simple_employee_view AS
SELECT employee_id, name, salary
FROM employees;

복합 뷰 생성 예제

CREATE VIEW complex_employee_view AS
SELECT e.employee_id, e.name, d.department_name
FROM employees e
JOIN departments d
  ON e.department_id = d.department_id;

마무리 정리

결론적으로, 단순 뷰는 하나의 테이블만 사용하므로 구조가 단순하고 데이터 삽입·수정·삭제가 자유로운 반면, 복합 뷰는 여러 테이블을 조인해 복잡한 조회 로직과 그룹 함수를 담을 수 있지만 DML 연산에 제약이 따릅니다. 데이터 변경까지 고려하는 간단한 추상화에는 단순 뷰가, 조회 중심의 복잡한 리포팅에는 복합 뷰가 적합합니다. 프로젝트의 요구 사항에 맞게 적절한 뷰 유형을 선택하시기 바랍니다.