반응형
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;
반응형
'Database > MySQL' 카테고리의 다른 글
[MySQL] WITH ROLLUP으로 집계 나타내기 (0) | 2024.10.18 |
---|---|
[MySQL] CTE 활용하기 - WITH / RECURSIVE WITH (0) | 2024.10.17 |
[MySQL] 집합 연산자 - UNION / UNION ALL / INTERSECT / EXCEPT (0) | 2024.10.16 |
[MySQL] 인덱스(Index): 종류, 설정 방법 (0) | 2024.10.15 |
[MySQL] 서브쿼리(Subquery) 이용하기 (0) | 2024.10.14 |