CS/데이터베이스

[데이터베이스] 15. 뷰

JIN-JJS 2025. 4. 17. 19:56

1. 뷰(View)란?

하나 이상의 테이블이나 다른 뷰의 데이터를 볼 수 있도록 하는 데이터베이스 객체로, 사용자에게 접근이 허용된 자료만을 제한적으로 보여주는 가상 테이블이다.

• 저장장치 내에 물리적으로 존재하지 않지만, 사용자에게는 존재하는 것처럼 간주됨

• 데이터 보정 작업, 처리 과정 시험 등의 임시 작업에 활용됨

• 조인문 사용을 최소화하여 사용상의 편의성을 극대화함

 

 

2. 뷰의 사용 목적

• 데이터 가시성: 필요한 정보만을 추출하여 제공

• 데이터 보안: 특정 컬럼과 데이터만 공개하여 원천 테이블 정보를 보호

• 데이터 가공: 특정 부분에 대한 계산 및 집계를 수행

• 간소화된 쿼리: 복잡한 데이터베이스 구조를 단순화

• 데이터 일관성 유지: 정규화 및 중복 데이터 제거 가능

 

 

3. 뷰의 특징

• 기본 테이블과 같은 구조로 사용되며 조작도 유사함

• 가상 테이블이므로 물리적으로 저장되지 않음

• 데이터의 논리적 독립성을 제공

• 필요한 데이터만 뷰로 정의하여 관리가 용이하고 명령문이 간단함

• 보안을 강화할 수 있는 효율적인 기법으로 활용 가능

• 기본키를 포함한 속성 집합으로 뷰를 구성해야 삽입, 삭제, 갱신 연산이 가능함

• 정의된 뷰는 다른 뷰의 기반이 될 수 있음

• 기본 테이블이나 뷰 삭제 시, 이를 기반으로 한 다른 뷰도 자동 삭제됨

 

 

4. 뷰의 장단점

장점

• 논리적 데이터 독립성 제공

• 여러 사용자의 다양한 응용 요구 지원

• 데이터 관리 단순화

• 접근 제어를 통한 자동 보안 제공

 

단점

• 독립적인 인덱스 생성 불가

• ALTER VIEW로 뷰의 정의 변경 불가

• 삽입, 삭제, 갱신 연산에 제약 존재

 

 

5. 뷰 생성, 활용, 삭제

1) 뷰 생성

• 실제 데이터를 변경하지 않고 데이터에 편리하게 접근 가능

 

기본 형식

CREATE VIEW 뷰이름 AS
SELECT 문
FROM 테이블명;
CREATE VIEW v_emp_sample AS
SELECT first_name, last_name
FROM employees
WHERE gender = 'F';

 

기존 뷰를 대체하는 형식

CREATE OR REPLACE VIEW 뷰이름 AS
SELECT 문
FROM 테이블명;
CREATE OR REPLACE VIEW v_emp_sample AS
SELECT first_name, last_name
FROM employees
WHERE gender = 'M';

 

기존에 없을 경우만 생성하는 형식

CREATE VIEW IF NOT EXISTS 뷰이름 AS
SELECT 문
FROM 테이블명;

 

2) 뷰 데이터 수정 및 입력

• ALTER 뷰이름 SET 수정내용 WHERE 조건

• INSERT INTO 뷰이름(열이름) VALUES(값)

• 데이터 입력 시 NOT NULL 열 포함 여부에 따라 처리 필요

• WITH CHECK OPTION을 통해 특정 조건을 만족하는 데이터만 입력 가능

• 집계 함수, UNION, GROUP BY, DISTINCT, JOIN이 포함된 뷰에서는 기존 테이블 수정 불가

 

3) 뷰 조회

SELECT * FROM 뷰이름;

테이블이 아닌 뷰를 사용하는 이유

• 데이터 보안 및 접근 제어 강화

• 데이터 가공 및 정리로 일관된 인터페이스 제공

• 성능 최적화 (반복적인 계산 회피)

• 애플리케이션 논리 분리로 유지보수 향상

• 데이터 분석 및 보고에 유용

 

4) 뷰 삭제

DROP VIEW 뷰이름;

 

 

6. 복합 뷰 생성

1) 복합 뷰 개요

• 두 개 이상의 테이블에서 데이터를 결합하여 하나의 가상 테이블로 제공

• 데이터베이스 복잡성을 감소시키고 쿼리를 단순화하는 역할 수행

 

2) 복합 뷰 생성 형식

CREATE VIEW 복합뷰이름 AS
SELECT 테이블1.컬럼1, 테이블1.컬럼2, 테이블2.컬럼3
FROM 테이블1
JOIN 테이블2 ON 테이블1.공통컬럼 = 테이블2.공통컬럼;

 

3) 복합 뷰 생성 예제

EMP 테이블과 DEPT 테이블을 조인하여 복합 뷰 생성

CREATE OR REPLACE VIEW V_EMP10 AS
SELECT EMPNO, ENAME, JOB, DNAME
FROM EMP, DEPT
WHERE EMP.DEPTNO = 10
AND EMP.DEPTNO = DEPT.DEPTNO;

 

집계 함수를 이용한 복합 뷰 생성

CREATE OR REPLACE VIEW V_EMP_SUM_AVG AS
SELECT DEPTNO, AVG(SAL) AS AVG_SAL, SUM(SAL) AS SUM_SAL
FROM EMP
GROUP BY DEPTNO;

 

 

7. 복합 뷰와 단순 뷰 비교

단순 뷰(Simple View) 복합 뷰(Complex View)

하나의 테이블로 생성 여러 개의 테이블로 생성
그룹 함수 사용 불가능 그룹 함수 사용 가능
DISTINCT 사용 불가능 DISTINCT 사용 가능
DML 사용 가능 DML 사용 불가능

 


이 내용은 휴넷사회복지평생교육원의 데이터베이스 강의를 듣고 정리한 것입니다.