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(뷰)를 적용하여 활용한다면 매우 유용할 것 같습니다!
'DB' 카테고리의 다른 글
[DB] Postgresql 14 간단 설치 및 DBeaver에서 데이터베이스 생성(macOS) (0) | 2025.04.01 |
---|---|
[DB] 트랜잭션(Transaction)매니저 & 프록시 & 트랜잭션 AOP (0) | 2024.08.11 |
[DB] 트랜잭션(Transaction) 개념 및 동작원리 (0) | 2024.08.10 |
[DB] 관계형 데이터베이스(RDBMS) 개념 용어 정리 (0) | 2024.07.29 |
[DB] 데이터베이스 기본개념 용어 정리 (0) | 2024.07.29 |