본문 바로가기
Data/MySQL

[MySQL] 가상테이블을 의미하는 뷰(View)를 쓰는 이유와 생성/대체/수정/삭제

by prinha 2021. 1. 6.
728x90
반응형

 

뷰(VIEW)

데이터베이스에 존재하는 일종의 가상 테이블로, 실제 행과 열을 가지고 있지만 데이터를 저장하고 있지는 않다.

즉 테이블처럼 물리적으로 저장되어 있는 것은 아니다. (자주 사용하는 뷰인 경우, 물리적으로 저장되도록 하는 기능도 있긴 있음)

뷰에서는 다른 테이블이나 다른 뷰에 저장되어 있는 데이터를 보여주는 역할만을 수행한다.

 

뷰의 장점

  • 사용자에게 높은 편의성을 제공한다. (한번 저장해두면 계속 재활용할 수 있음)
  • 데이터 수요에 알맞은 다양한 구조의 데이터 분석 기반을 구축할 수 있다. (기존의 테이블 구조를 건드리지 않음)
  • 데이터 보안을 제공한다. (WHERE절로 특정 row들만 보여주는 뷰를 보여주는 등 특정 정보들만 보여준다. DBMS의 사용자별 권한 관리 기능을 통해 데이터 분석가가 테이블에 직접적인 접근을 하지 못하도록 막는다.

뷰의 단점

  • 한번 정의된 뷰는 변경할 수 없다.
  • 삽입, 삭제, 갱신 작업에 많은 제한 사항을 가진다.
  • 자신만의 인덱스를 가질 수 없다.

1) 뷰 생성

뷰는 원본 테이블과 같은 이름을 가질 수 없다. 테이블과 비슷한 이름의 뷰를 생성하는 것이 좋다.

-> 뷰 출력은 테이블 출력과 같음

CREATE VIEW 뷰이름 AS
SELECT 필드이름1, 필드이름2, ...
FROM 테이블이름
WHERE 조건
CREATE VIEW three_tables_joined AS
SELECT i.id, i.name, AVG(star) AS avg_star, COUNT(*) AS count_star
FROM ITEM i LEFT JOIN REVIEW r
	ON i.id=r.item_id
	LEFT JOIN MEMBER m
	ON m.id=r.mem_id
WHERE m.gender='f'
GROUP BY i.id, i.name
HAVING COUNT(*) >=2
ORDER BY AVG(star) DESC, COUNT(*) DESC;

 

2) 뷰 대체

CREATE OR REPLACE VIEW

CREATE OR REPLACE VIEW 뷰이름 AS
SELECT 필드이름1, 필드이름2, ...
FROM 테이블이름
WHERE 조건

 

3) 뷰 수정 - ALTER

ALTER VIEW 뷰이름 AS
SELECT 필드이름1, 필드이름2, ...
FROM 테이블이름

 

4) 뷰 삭제 - DROP

DROP VIEW 뷰이름

 

728x90
반응형