TIL VIEW(뷰)

정예서·2026년 8월 26일

My_TIL

목록 보기
22/23

📚 수행평가 범위 정리


Ⅰ. VIEW(뷰) ⭐⭐⭐⭐⭐

1. View란?

View = SELECT문의 결과를 테이블처럼 사용할 수 있도록 만든 가상의 테이블

  • 실제 데이터를 저장하지 않음
  • 기존 테이블을 기반으로 만들어짐
  • 실제로는 SELECT문을 저장
  • 기본 테이블의 데이터를 보여주는 창(window) 역할

핵심 암기

View는 실제 테이블이 아니라 SELECT 결과를 테이블처럼 사용하는 가상 테이블이다.


2. View 생성

CREATE VIEW V_커피메뉴 AS
SELECT DRINK_ID AS 음료번호,
       DRINK_NAME AS 음료이름,
       PRICE AS 가격
FROM DRINK
WHERE CATEGORY = '커피';

개념

CREATE VIEW → View 생성
AS → 뒤의 SELECT문을 View의 정의로 사용

3. View 조회

SELECT *
FROM V_커피메뉴;

View를 만든 뒤에는 일반 테이블처럼 SELECT할 수 있음.

SELECT *
FROM V_커피메뉴
WHERE 가격 <= 3000;

Ⅱ. View의 특징 ⭐⭐⭐⭐⭐

PDF에서 강조하는 부분.

① 실제 데이터를 저장하지 않음

View에는 데이터를 복사해서 저장하는 것이 아니라 SELECT문이 저장됨.

② SELECT 결과를 테이블처럼 사용

SELECT *
FROM V_커피메뉴;

③ 기본 테이블이 변경되면 View 결과도 변경

View가 DRINK를 기반으로 만들어졌다면 DRINK의 데이터가 바뀔 경우 View의 결과도 바뀜.

④ 기본 테이블 대신 View를 통해 조회 가능

필요한 데이터만 View로 만들어 사용자에게 제공할 수 있음.

⑤ 데이터 보안

기본 테이블의 모든 정보를 보여주지 않고 원하는 컬럼이나 데이터만 View로 제공할 수 있음.

PDF에서는 View를 데이터 보안 측면에서 활용하고, 원하는 내용만 보여줄 수 있다고 설명함.


Ⅲ. View의 장점 ⭐⭐⭐⭐⭐

① 복잡한 질의를 단순하게 표현

복잡한 SQL을 View로 미리 만들어두면:

SELECT *
FROM V_주문영수증;

처럼 간단하게 사용할 수 있음.

PDF에서도 복잡한 SQL을 미리 정의하고 이후 간단한 SQL문으로 조회할 수 있다고 설명함.


② 특정 데이터만 사용자에게 보여줌

예:

CREATE VIEW V_커피메뉴 AS
SELECT DRINK_ID, DRINK_NAME, PRICE
FROM DRINK
WHERE CATEGORY = '커피';

DRINK의 모든 정보를 보여주지 않고 커피 메뉴만 제공


③ 데이터 독립성

프로그램에서 복잡한 원본 테이블 구조를 직접 다루지 않고 View를 사용할 수 있음.

즉,

기본 테이블
↓
View
↓
프로그램

형태로 사용할 수 있음.

PDF에서도 View의 장점으로 데이터 독립성을 제시함.


Ⅳ. View의 단점 ⭐⭐⭐

PDF에서 나오는 핵심:

① 모든 View가 갱신 가능한 것은 아님

② 기본 테이블보다 성능이 떨어질 수 있음

View를 사용할 때 DBMS가 View의 정의를 확인하고 기본 테이블을 조회하는 과정이 필요함.


Ⅴ. 갱신 불가능한 View ⭐⭐⭐⭐⭐

어떤 View든 UPDATE가 되는 것은 아님.

PDF에서 제시한 대표적인 갱신 불가능 조건:

① 집계 함수 SUM, AVG
② GROUP BY
③ JOIN
④ 기본키 없음

예시

CREATE VIEW V_지점별매출 AS
SELECT C.CAFE_LOCATION,
       SUM(D.PRICE * O.QTY) AS 총매출
FROM CAFE C
JOIN DRINK D
ON C.CAFE_ID = D.CAFE_ID
JOIN ORDERS O
ON D.DRINK_ID = O.DRINK_ID
GROUP BY C.CAFE_LOCATION;

이 View에는

SUM
JOIN
GROUP BY

가 있기 때문에 갱신하기 어려움.


Ⅵ. View 삭제 ⭐⭐

DROP VIEW V_커피메뉴;

중요

View를 삭제해도 기본 테이블에는 영향을 주지 않음.

즉,

DROP VIEW
↓
View만 삭제
↓
DRINK 테이블은 그대로

Ⅶ. 시스템 카탈로그 ⭐⭐⭐⭐⭐

1. 시스템 카탈로그란?

데이터베이스의 구조와 객체 정보를 저장하는 메타데이터

메타데이터

데이터에 대한 데이터

예를 들어 실제 데이터가:

메가커피
메가리카노
2000원

이라면 메타데이터는:

DRINK라는 테이블이 존재한다.
DRINK_ID라는 컬럼이 있다.
DRINK_ID의 자료형은 NUMBER다.

같은 데이터베이스의 구조 정보임.


Ⅷ. 시스템 카탈로그에 저장되는 정보 ⭐⭐⭐

PDF 기준으로:

  • 테이블 정보
  • 컬럼 정보
  • 데이터 타입
  • 인덱스
  • 사용자 정보
  • 접근 권한

등을 저장함.


Ⅸ. 시스템 카탈로그의 역할 ⭐⭐⭐⭐

① 데이터베이스 구조 관리

테이블, 컬럼, 데이터 타입 등의 구조 정보를 저장.

② 사용자 권한 관리

사용자마다 어떤 테이블을 조회하거나 수정할 수 있는지 관리.

③ 질의 최적화 지원

DBMS가 SQL을 실행할 때 테이블 구조나 인덱스 정보를 확인해서 질의 처리에 활용.

④ 데이터베이스 검색 지원

테이블 등의 정보를 조회할 수 있음.


Ⅹ. 시스템 카탈로그의 특징 ⭐⭐⭐⭐

① DB 내부에 존재하는 특수한 테이블

② DBMS가 자동으로 관리

테이블을 만들거나 삭제하면 시스템 카탈로그도 자동으로 변경됨.

③ 사용자가 직접 수정할 수 없음

데이터베이스 구조를 관리하는 중요한 정보이기 때문에 직접 수정할 수 없음.


Ⅺ. 시스템 카탈로그 조회 쿼리 ⭐⭐⭐⭐⭐

① 내가 만든 테이블 목록

SELECT TABLE_NAME
FROM USER_TABLES;

개념

USER_TABLES

사용자가 만든 테이블 정보


② 특정 테이블의 컬럼 정보

SELECT COLUMN_NAME,
       DATA_TYPE,
       DATA_LENGTH,
       NULLABLE
FROM USER_TAB_COLUMNS
WHERE TABLE_NAME = 'DRINK';

개념

USER_TAB_COLUMNS

테이블의 컬럼 구조 확인

컬럼의미
COLUMN_NAME컬럼 이름
DATA_TYPE데이터 타입
DATA_LENGTH데이터 길이
NULLABLENULL 허용 여부

⚠️ TABLE_NAME = 'DRINK'처럼 테이블 이름은 대문자로 작성.


③ 제약조건 목록

SELECT TABLE_NAME,
       CONSTRAINT_NAME,
       CONSTRAINT_TYPE
FROM USER_CONSTRAINTS
ORDER BY TABLE_NAME;

개념

USER_CONSTRAINTS

제약조건 정보 확인

예:

PRIMARY KEY
FOREIGN KEY
CHECK

④ View 목록

SELECT VIEW_NAME
FROM USER_VIEWS;

개념

USER_VIEWS

내가 만든 View 목록 확인


⑤ View의 실제 정의

SELECT VIEW_NAME, TEXT
FROM USER_VIEWS
WHERE VIEW_NAME = 'V_지점별매출';

개념

TEXT

→ 해당 View를 만들 때 사용한 SELECT문 확인


Ⅻ. 실습 SQL에서 같이 나오는 기본 개념

PDF가 직접적으로 다루는 핵심은 View와 시스템 카탈로그지만, 네 수행평가 실습에서는 그걸 만들기 위해 아래 SQL 개념도 사용하고 있음.

SELECT

SELECT DRINK_NAME, CATEGORY, PRICE
FROM DRINK;

→ 데이터 조회

WHERE

WHERE PRICE >= 4000

→ 조건에 맞는 데이터 조회

LIKE

WHERE DRINK_NAME LIKE '%라떼%'

→ 특정 문자열 검색

ORDER BY

ORDER BY PRICE DESC;

→ 결과 정렬

JOIN

JOIN DRINK D
ON C.CAFE_ID = D.CAFE_ID

→ 여러 테이블 연결

집계함수

SUM()
AVG()
MAX()
MIN()
COUNT()

→ 여러 데이터를 하나의 값으로 계산

GROUP BY

GROUP BY C.CAFE_LOCATION

→ 특정 기준으로 데이터를 그룹화

HAVING

HAVING SUM(D.PRICE * O.QTY) >= 5000

→ 그룹화된 결과에 조건 적용

서브쿼리

WHERE PRICE = (
    SELECT MAX(PRICE)
    FROM DRINK
);

→ SQL 안에 SQL을 넣어서 결과를 이용


🎯 진짜 수행평가용 핵심 구조

시험 전에 이 구조로 머릿속에 넣으면 돼.

[VIEW]
│
├─ 정의
│  └─ SELECT 결과를 테이블처럼 사용하는 가상 테이블
│
├─ 특징
│  ├─ 실제 데이터 저장 X
│  ├─ SELECT문 저장
│  ├─ 기본 테이블 변경 → View 결과 변경
│  └─ 필요한 데이터만 보여줄 수 있음
│
├─ 장점
│  ├─ 복잡한 질의 단순화
│  ├─ 데이터 보안
│  └─ 데이터 독립성
│
├─ 단점
│  ├─ 모든 View 갱신 가능 X
│  └─ 성능 저하 가능
│
├─ 갱신 불가능
│  ├─ SUM / AVG
│  ├─ GROUP BY
│  ├─ JOIN
│  └─ 기본키 없음
│
└─ SQL
   ├─ CREATE VIEW
   ├─ SELECT FROM VIEW
   └─ DROP VIEW


[시스템 카탈로그]
│
├─ 정의
│  └─ DB 구조와 객체 정보를 저장하는 메타데이터
│
├─ 저장 정보
│  ├─ 테이블
│  ├─ 컬럼
│  ├─ 데이터 타입
│  ├─ 인덱스
│  ├─ 사용자
│  └─ 권한
│
├─ 특징
│  ├─ DBMS가 자동 관리
│  └─ 사용자가 직접 수정 X
│
└─ SQL
   ├─ USER_TABLES
   ├─ USER_TAB_COLUMNS
   ├─ USER_CONSTRAINTS
   └─ USER_VIEWS
profile
미림마이스터고 재학중인 고3 개발자 정예서입니다.

4개의 댓글

comment-user-thumbnail
2026년 8월 26일

와 엄청 기네여.. 별이 엄청 많아서 놀랐어욤ㅋㅋㅋㅋ
수행평가 보시는 구나...🤮

1개의 답글