1 분 소요

뷰(View)는 복잡한 쿼리를 간단하게 관리하고, 사용자별로 데이터 접근을 제한할 수 있는 유용한 기능입니다. 이 글에서는 MySQL에서 뷰를 생성, 대체, 삭제하는 방법과 주의할 점을 정리해 드립니다.


✅ 1. 뷰(View)란?

뷰(View)는 가상 테이블로, 실제 데이터를 저장하지 않고 SELECT 쿼리 결과를 기반으로 작동합니다.

✅ 주요 특징

장점 설명
필드 제한 특정 사용자에게 필요한 컬럼만 제공 가능
쿼리 단순화 복잡한 쿼리를 뷰로 정의해 재사용
보안 민감한 컬럼 숨김 가능
단점 설명
변경 제한 일부 뷰는 데이터 삽입/수정/삭제 불가
인덱스 미지원 뷰 자체에는 인덱스를 적용할 수 없음
성능 부담 실행 시마다 원본 테이블에 접근

🛠️ 2. 뷰 생성 문법 및 예제

📌 문법

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

📌 예제

CREATE VIEW MyView AS
SELECT Name, ReserveDate, ReserveDate - CURDATE() AS Dday
FROM Reservation;

📝 Dday는 예약일까지 남은 날짜를 의미합니다.


🔁 3. 뷰 대체 (REPLACE)

📌 문법

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

📌 예제

CREATE OR REPLACE VIEW MyView AS
SELECT Name, RoomNum, ReserveDate - CURDATE() AS Dday
FROM Reservation;

📝 기존 뷰를 덮어쓰기 하며, 존재하지 않으면 새로 생성됩니다.


🔍 4. 뷰 데이터 확인

SELECT * FROM MyView;

→ 생성된 뷰를 일반 테이블처럼 조회할 수 있습니다.


⚠️ 5. 뷰 사용 시 주의사항

항목 설명
이름 중복 금지 뷰 이름은 테이블 이름과 중복 불가
성능 주의 뷰는 매번 원본 테이블을 참조하므로 성능 저하 가능
데이터 조작 제한 뷰를 통한 INSERT/UPDATE는 제한될 수 있음
연산 포함 뷰 계산식이 많을 경우 성능에 영향

🗑️ 6. 뷰 삭제

📌 문법

DROP VIEW 뷰이름;

📌 예제

DROP VIEW MyView;

→ MyView라는 이름의 뷰를 삭제합니다.


🧾 7. 요약

명령어 설명
CREATE VIEW 새로운 뷰 생성
CREATE OR REPLACE VIEW 기존 뷰를 덮어쓰거나 새로 생성
SELECT 뷰 데이터 조회
DROP VIEW 뷰 삭제

질문 정리

❓ 뷰는 실제 데이터를 저장하나요?

아닙니다. 뷰는 SELECT 쿼리의 결과를 가상으로 보여주는 구조일 뿐, 데이터를 저장하지 않습니다.

❓ 뷰를 통해 데이터를 수정할 수 있나요?

조건을 만족하면 가능합니다. 하지만 JOIN, GROUP BY, 계산식 포함 뷰는 대부분 수정 불가합니다.

❓ 인덱스를 뷰에 적용할 수 있나요?

불가능합니다. 인덱스는 기본 테이블에만 적용됩니다.

카테고리:

업데이트:

댓글남기기