Database/MySQL

[MySQL] 뷰(VIEW) 개념과 사용 방법

루루23 2024. 10. 17. 10:40
반응형

 

1. 뷰(View)란?

  • 뷰(View)는 실제 데이터를 저장하지 않고, 테이블로부터 데이터를 조회하는 가상의 테이블
  • 미리 정의된 SELECT 쿼리의 결과를 하나의 테이블처럼 사용할 수 있음

실제로 존재하는 테이블은 아니고, 저장된 SELECT 문이라고 할 수 있다.

 

 

2. View를 언제 사용하나요 ?

  • 복잡한 쿼리를 자주 실행해야 한다면 그 쿼리를 뷰로 만들어두고 호출 가능
  • 민감한 정보를 숨기거나, 사용자가 특정 데이터만 볼 수 있도록 할 수 있음
  • 테이블 구조가 변경될 경우, 이를 뷰를 통해 감싸서 기존 쿼리 등이 변경되지 않도록 할 수 있음. (값 대신 변수 사용하는 것처럼.,?)

 

3. View 특징

  • 물리적으로 저장되어 있지 않음
  • 삽입/삭제/갱신에는 제약이 있음
  • 특정 뷰에 접근할 수 있는 사용자를 분리하여 외부 스키마 구성할 수 있음
  • 뷰를 참조하여 또다른 뷰 생성할 수 있음
  • 뷰가 참조하던 기존 테이블이 삭제되면 뷰도 삭제됨
  • 뷰와 테이블의 데이터는 공유됨 (예를 들어, 한쪽에서 변경하면 같이 변경됨)

 

4. View의 장단점

 

장점

  • 테이블 구조가 변경되어도 뷰를 이용한 쿼리는 영향을 받지 않음 (논리적 독립성)
  • 사용자가 볼 수 있는 데이터의 범위를 제어할 수 있음 
  • 긴 쿼리를 짧고 읽기 쉽게 만들 수 있음 (WITH 처럼)

단점

  • 독자적인 인덱스 사용 불가
  • 변경 불가 : 삭제 후 다시 생성해야 함
  • 삽입, 삭제, 갱신 어려움
  • 조회 성능 저하될 수 있음

 

5. View 사용하기

5.1. 뷰 생성 - CREATE VIEW 

CREATE VIEW view_hero_power AS
SELECT name, power
FROM myheros;

# 같은 이름이 존재하는 경우 기존의 뷰를 대체, 없으면 생성
CREATE OR REPLACE VIEW view_hero_power AS
SELECT name, power
FROM myheros;

 

5.2. 뷰 조회 - 테이블처럼 SELECT 문을 사용하여 조회 가능

SELECT * FROM view_hero_power;

 

4.3. 뷰 삭제 - DROP VIEW

DROP VIEW view_hero_power;

 

반응형