오라클 뷰(VIEW)란?
오라클 뷰(View)는 실제 데이터를 저장하지 않고, 미리 정의된 SQL 쿼리의 결과를 가상의 테이블처럼 사용할 수 있도록 하는 객체이다.
쉽게 말해 특정 SQL 쿼리를 미리 저장해두고 테이블처럼 활용할 수 있는 개념이다.
뷰를 사용하면 복잡한 SQL을 간단하게 정리할 수 있고, 보안 측면에서도 특정 컬럼만 보여주도록 제한할 수 있다.
🔹 뷰의 특징
- 데이터를 별도로 저장하지 않음 → 원본 테이블의 데이터를 그대로 조회
- 읽기 전용(Read-Only) 뷰와 업데이트 가능(View with Check Option) 뷰
- 보안 강화 → 특정 컬럼이나 행만 노출 가능
- 복잡한 쿼리를 단순화 → 반복되는 SQL을 줄이고 유지보수를 쉽게 만듦.
1. 뷰 생성 및 조회
▶ 기본 뷰 생성
CREATE VIEW emp_view AS
SELECT employee_id, name, department_id
FROM employees
WHERE department_id = 10;
위 뷰를 생성하면 emp_view라는 이름으로 employees 테이블에서 department_id = 10인 데이터만 조회할 수 있다.
▶ 뷰 데이터 조회
SELECT * FROM emp_view;
실제 테이블처럼 SELECT 문을 사용하여 데이터를 가져올 수 있다.
▶ 뷰 삭제
DROP VIEW emp_view;
뷰는 테이블과 달리 별도의 데이터 저장이 없으므로 삭제해도 원본 데이터에는 영향을 주지 않는다.
2. 업데이트 가능한 뷰
기본적으로 뷰를 통해 데이터를 수정할 수도 있지만, 몇 가지 조건을 충족해야 한다.
▶ 수정 가능한 뷰 생성
CREATE VIEW emp_edit_view AS
SELECT employee_id, name, salary
FROM employees
WHERE department_id = 20
WITH CHECK OPTION;
- WITH CHECK OPTION을 사용하면 뷰의 WHERE 조건을 벗어난 데이터 수정이 불가능하도록 설정할 수 있다.
▶ 뷰를 통한 데이터 수정
UPDATE emp_edit_view
SET salary = salary + 1000
WHERE employee_id = 101;
뷰를 통해 직접 원본 테이블의 데이터를 수정할 수 있다.
▶ 주의사항
- JOIN, GROUP BY, DISTINCT 등이 포함된 뷰는 데이터 수정이 불가능함
- WITH CHECK OPTION을 사용하면 WHERE 조건에 벗어나는 데이터를 입력할 수 없음
3. 머터리얼라이즈드 뷰 (Materialized View)
머터리얼라이즈드 뷰는 일반 뷰와 달리 실제 데이터를 저장하는 뷰이다. 원본 테이블이 변경되더라도 즉시 반영되지 않으며, 데이터를 주기적으로 갱신해야 한다.
▶ 머터리얼라이즈드 뷰를 사용하는 이유
- 성능 향상 → 복잡한 조인이나 연산이 포함된 쿼리를 미리 계산하여 저장하므로 조회 속도가 빨라짐.
- 네트워크 부하 감소 → 원격 데이터베이스에서 데이터를 반복적으로 조회하지 않고, 로컬에서 관리 가능.
- 데이터 아카이빙 → 특정 시점의 데이터를 저장하여 분석 용도로 활용 가능.
- 비연결 환경에서 활용 가능 → 원격 데이터베이스와 연결되지 않은 상태에서도 데이터를 조회할 수 있음.
즉, 머터리얼라이즈드 뷰는 기존 뷰와 다르게 "조회 시점"이 아니라 "저장된 시점"의 데이터를 사용한다는 차이가 있다. 원본 테이블에서 데이터를 실시간으로 가져오는 것이 아니라, 한 번 저장된 데이터를 활용하는 방식이다.
▶ 머터리얼라이즈드 뷰 생성
CREATE MATERIALIZED VIEW emp_mv
REFRESH COMPLETE ON DEMAND
AS
SELECT employee_id, name, salary FROM employees;
- REFRESH COMPLETE ON DEMAND → 사용자가 직접 갱신 요청해야 데이터가 갱신됨
▶ 머터리얼라이즈드 뷰 갱신 (REFRESH)
EXEC DBMS_MVIEW.REFRESH('emp_mv');
이 명령어를 실행해야 데이터가 최신 상태로 갱신된다.
오라클 시노님(SYNONYM)이란?
시노님(Synonym)은 객체(테이블, 뷰, 시퀀스 등)에 대한 별칭을 생성하는 기능이다. 쉽게 말해, 원래 객체명을 짧거나 기억하기 쉽게 만들 수 있다.
시노님을 사용하면 다음과 같은 장점이 있다:
- 객체명을 짧게 만들어 사용 가능 (긴 테이블명을 간단하게 변경)
- 사용자 간 객체 공유가 가능 (공용 Synonym 사용 가능)
- 데이터베이스 개체 구조 변경 시 기존 코드 유지 가능
▶ 기본 시노님 생성
CREATE SYNONYM emp_syn FOR employees;
이렇게 하면 employees 테이블을 emp_syn이라는 이름으로 사용할 수 있다.
▶ 시노님을 사용한 조회
SELECT * FROM emp_syn;
시노님을 사용하면 원래 테이블명을 몰라도 해당 테이블을 간단히 조회할 수 있다.
▶ 공용 시노님 (Public Synonym)
CREATE PUBLIC SYNONYM emp_public FOR hr.employees;
- PUBLIC 옵션을 사용하면 모든 사용자가 이 시노님을 사용할 수 있다.
▶ 시노님 삭제
DROP SYNONYM emp_syn;
DROP PUBLIC SYNONYM emp_public;
정리
뷰(VIEW) | 가상의 테이블로, SQL 쿼리 결과를 저장하여 쉽게 조회 가능 |
머터리얼라이즈드 뷰 (Materialized View) | 실제 데이터를 저장하고 주기적으로 갱신하는 뷰. 성능 향상 및 데이터 아카이빙 용도로 활용. 기존 뷰와 달리 "조회 시점"이 아니라 "저장된 시점"의 데이터를 사용함. |
시노님(SYNONYM) | 테이블, 뷰 등의 객체에 대한 별칭을 생성하여 쉽게 접근 가능 |
오라클을 사용할 때 뷰와 시노님을 잘 활용하면 쿼리 복잡도를 줄이고 유지보수를 쉽게 할 수 있다.
특히, 시노님을 사용하면 객체명을 단순화하여 개발 편의성을 높일 수 있다.
'프로그래밍 > 데이터베이스' 카테고리의 다른 글
[Oracle] 오라클 RANK / DENSE_RANK / ROW_NUMBER 순위 함수 (0) | 2025.04.24 |
---|---|
[Oracle] 오라클 NVL / NVL2 / COALESCE 함수 차이점 정리 (0) | 2025.04.22 |
[Oracle] 오라클 파티션(PARTITION) 개념 및 종류 (Oracle PARTITION) (0) | 2025.04.10 |
[Oracle] 오라클 인덱스(INDEX) 개념 및 종류 (Oracle INDEX) (0) | 2025.01.31 |
[Oracle] 오라클 DB 링크 (DB Link) 사용 방법 (권한, 생성, 삭제, 조회) (0) | 2024.07.22 |