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

SQL 기본 및 활용 · 스키마 객체

이 페이지의 목차

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

핵심 요약

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

View·Sequence·Synonym의 정의와 예시는 Oracle 시험 문맥을 기준으로 한다. Materialized View 갱신 방식, Sequence 옵션과 Synonym 지원 여부는 DBMS·버전별로 확인한다.

본문

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와의 차이

예시·텍스트
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가 포함된 객체 이름을 짧게 참조하게 합니다.

예시·텍스트
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와 비교합니다.

복습 문제

답을 생각한 뒤 정답과 근거를 펼쳐 보세요.

01

일반 View와 Materialized View의 저장 대상 차이는 무엇인가?

정답과 근거

일반 View는 Query 정의를 저장하고 조회 시 실행하지만 Materialized View는 Query 결과를 물리적으로 저장하고 갱신합니다.

02

Sequence 값에 빈 번호가 생길 수 있는 이유를 두 가지 설명하라.

정답과 근거

Sequence Cache 유실이나 여러 Session의 선점, NEXTVAL을 사용한 트랜잭션의 롤백 때문에 빈 번호가 생길 수 있습니다.

03

Synonym이 객체 권한을 대신하지 못하는 이유는 무엇인가?

정답과 근거

Synonym은 이름 해석만 단순화하며 대상 객체의 소유권이나 객체 권한을 바꾸지 않기 때문입니다.