본문 바로가기
DB

[DB] View(뷰) 개념 정리 및 사용예제

by 하부루 2025. 5. 27.

View(뷰)

View(뷰)는 하나 이상의 테이블을 기반으로 만들어지는 가상의 테이블입니다.
즉,실제 데이터를 저장하지 않고, 미리 정의된 SELECT 쿼리를 이름 붙여서 저장한 것이라고 이해 할 수 있습니다.

 

왜? View(뷰)를 사용할까요?

1. 복잡한 쿼리를 재사용 하기 위해

 -> 자주 사용하는 SELECT 쿼리를 View(뷰)로 만들어두면 매우 편리하게 재사용이 가능합니다.

 

2. 보안상의 이유로 일부의 컬럼 노출만 원할 때

 -> 테이블에서의 일부 컬럼은 숨긴채 필요한 컬럼만 보여줍니다.

 

3. 데이터 추상화

 -> 사용자에게는 간단한 형태로 보여주고, 실제 복잡한 구조는 숨깁니다.

 

View(뷰) 예제

View(뷰) 사용 예제를 위해 예시 테이블을 만들어봅시다!

-- car table 생성
CREATE TABLE car (car_name varchar, car_company varchar, car_type varchar,  car_color varchar, car_price int);

-- car smaple data 추가
INSERT INTO car (car_name, car_company, car_type, car_color, car_price) VALUES 
('Model S', 'Tesla', 'Sedan', 'Red', 90000),
('Mustang', 'Ford', 'Coupe', 'Blue', 55000),
('Civic', 'Honda', 'Sedan', 'White', 25000),
('Camry', 'Toyota', 'Sedan', 'Black', 27000),
('A4', 'Audi', 'Sedan', 'Gray', 45000),
('CX-5', 'Mazda', 'SUV', 'Red', 32000),
('Model X', 'Tesla', 'SUV', 'White', 120000),
('F-150', 'Ford', 'Truck', 'Black', 60000),
('Accord', 'Honda', 'Sedan', 'Blue', 28000),
('Corolla', 'Toyota', 'Sedan', 'Silver', 24000),
('Q5', 'Audi', 'SUV', 'White', 52000),
('MX-5', 'Mazda', 'Convertible', 'Red', 35000),
('Model 3', 'Tesla', 'Sedan', 'Blue', 50000),
('Explorer', 'Ford', 'SUV', 'Green', 45000),
('CR-V', 'Honda', 'SUV', 'Gray', 33000),
('RAV4', 'Toyota', 'SUV', 'Black', 35000),
('Q7', 'Audi', 'SUV', 'Blue', 70000),
('CX-30', 'Mazda', 'SUV', 'White', 30000),
('Model Y', 'Tesla', 'SUV', 'Silver', 60000),
('Bronco', 'Ford', 'SUV', 'Orange', 50000);

 

위의 쿼리로 car 테이블이 생성 되었을겁니다.

car 테이블에서 특정 자동차를 가져와봅시다!

-- 특정 car 데이터 조회
SELECT * FROM CAR WHERE CAR_TYPE = 'SUV' AND CAR_PRICE > 50000;

 

SELECT 쿼리를 실행했다면 다음과 같은 데이터가 조회 될 것 입니다.

 

만약 이 SELECT 쿼리가 매우 길고 복잡하다면 중복 쿼리가 많아지고 사용하기에도 불편하겠죠 ?

이 부분을 개선하기 위해 View(뷰)를 만들어봅시다!

-- 가격이 50000원 이상인 suv 자동차를 조회하는 View 생성
CREATE VIEW V_SUV_CAR AS(SELECT * FROM CAR WHERE CAR_TYPE = 'SUV' AND CAR_PRICE > 50000);

 

위의 쿼리로 V_SUV_CAR 라는 이름의 View(뷰)가 생성 되었을거에요!

 

방금 생성한 V_SUV_CAR 라는 View(뷰)를 조회한다면 아래와 같이 테스트 데이터가 조회 되겠죠?

 

간단한 View 활용 예제를 더 만들어봅시다!

CREATE VIEW V_COM_CAR AS(SELECT * FROM CAR WHERE CAR_PRICE > 30000);
CREATE VIEW V_TES_CAR AS(SELECT * FROM CAR WHERE CAR_COMPANY = 'Tesla');

select * from V_COM_CAR;
select * from V_TES_CAR;

 

 

생성했던 테스트용 View(뷰)는 아래와 같이 삭제도 가능합니다!

 

View(뷰) 사용 시 주의할 점!

1. View(뷰)는 실제 데이터를 저장하지 않습니다.

 -> View(뷰)는 가상 테이블이기 때문에, 원본 테이블에서 데이터를 조회합니다.

 

2. View(뷰) 위에 또 다른 View(뷰)를 만들지않아야 합니다.

 -> View(뷰)를 중첩해서 만들면 심각한 성능 저하로 이어질 수 있습니다.

 

3. View(뷰)는 읽기 전용 입니다.

 -> View(뷰)는 기본적으로 읽기 전용이기 때문에, INSERT,UPDATE,DELETE가 불가능합니다.


오늘은 간단한 예제를 통해 데이터베이스 View(뷰)를 공부해보았습니다.

프로젝트내에서 필요한 부분에 View(뷰)를 적용하여 활용한다면 매우 유용할 것 같습니다!