현재 선택한 SQL 과정

SQLP 이론 학습

이론 목록으로 돌아가기

View·Sequence·Synonym: 주요 스키마 객체 구분

View, Materialized View, Sequence, Synonym의 저장 대상·동작·권한·트랜잭션 특성을 구분합니다.

예상 읽기 4

핵심 요약

View는 Query 정의를 저장한 논리 객체, Materialized View는 Query 결과를 물리적으로 저장하는 객체, Sequence는 고유 숫자값을 생성하는 객체, Synonym은 객체 이름의 별칭입니다. 서로 목적이 다르며 Synonym은 권한을 부여하지 않고, Sequence 값은 Transaction Rollback으로 되돌아가지 않습니다.

View

SQL코드 영역 안에서 좌우로 이동할 수 있습니다.
CREATE VIEW active_customer_v AS
SELECT customer_id, customer_name
FROM   customer
WHERE  status = 'ACTIVE';

일반 View는 Query 정의를 저장하고 조회 시 기초 테이블을 읽습니다. 보안을 위해 컬럼·행을 제한하고 복잡한 Query를 재사용할 수 있습니다.

SQL코드 영역 안에서 좌우로 이동할 수 있습니다.
SELECT *
FROM active_customer_v;

View가 존재한다고 결과가 별도 저장되는 것은 아닙니다. 조인·집계·DISTINCT 등이 포함된 View의 DML 가능 여부는 구조에 따라 제한됩니다.

Materialized View와의 차이

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
View                 : Query 정의 저장, 조회 시 기초 데이터 사용
Materialized View    : Query 결과를 물리 저장, Refresh 필요

Materialized View는 Query 결과를 물리적으로 저장하며, 원본 데이터의 변경 내용을 반영하려면 설정한 방식에 따라 Refresh가 필요합니다.

Sequence

SQL코드 영역 안에서 좌우로 이동할 수 있습니다.
CREATE SEQUENCE order_seq
  START WITH 1
  INCREMENT BY 1
  CACHE 100
  NOORDER;
SQL코드 영역 안에서 좌우로 이동할 수 있습니다.
INSERT INTO orders(order_id, customer_id)
VALUES (order_seq.NEXTVAL, :customer_id);
  • NEXTVAL: 다음 값을 생성하고 반환
  • CURRVAL: 현재 Session이 마지막으로 얻은 값
  • 처음 NEXTVAL을 호출하기 전에는 같은 Session에서 CURRVAL을 사용할 수 없음
  • Rollback해도 이미 소비한 값은 되돌아가지 않음
  • Cache·동시성·장애 때문에 번호의 연속성을 보장하지 않음

Sequence는 고유값 생성에 적합하지만 “빈틈 없는 업무 순번”을 보장하는 장치가 아닙니다.

Synonym

SQL코드 영역 안에서 좌우로 이동할 수 있습니다.
CREATE SYNONYM emp FOR hr.employee;
SQL코드 영역 안에서 좌우로 이동할 수 있습니다.
SELECT * FROM emp;

Synonym은 긴 Schema 이름이나 Database Link가 포함된 객체 이름을 짧게 참조하게 합니다.

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
Private Synonym: 특정 Schema 소유
Public Synonym : 모든 사용자 이름 해석 대상

Synonym을 만들거나 사용할 수 있어도 기초 객체의 SELECT 권한이 자동으로 생기지 않습니다. 이름 해석과 접근 권한을 구분합니다.

비교 표

객체무엇을 저장하는가핵심 주의
ViewSELECT 정의결과를 물리 저장하지 않음
Materialized ViewQuery 결과Refresh와 Staleness
Sequence숫자 생성 상태Gap 허용, Rollback으로 복원 안 됨
Synonym객체 별칭권한을 부여하지 않음

문제 적용 순서

  1. 데이터 자체인지 Query 정의인지 이름 별칭인지 구분합니다.
  2. Transaction Rollback이 객체의 생성값에 미치는 영향을 확인합니다.
  3. 객체 이름을 찾는 기능과 접근 권한을 구분합니다.
  4. View가 단순 View인지 집계·조인 View인지 확인합니다.
  5. 물리 결과 저장이 필요하면 Materialized View와 비교합니다.

복습 문제

  1. 일반 View와 Materialized View의 저장 대상 차이는 무엇인가?
  2. Sequence 값에 빈 번호가 생길 수 있는 이유를 두 가지 설명하라.
  3. Synonym이 객체 권한을 대신하지 못하는 이유는 무엇인가?