[데이터베이스] 15. 뷰
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 사용 불가능 |
이 내용은 휴넷사회복지평생교육원의 데이터베이스 강의를 듣고 정리한 것입니다.