hanker

SQL - 뷰(View)를 알아보자 (뷰 테이블, View Table) 본문

DATABASE/SQL

SQL - 뷰(View)를 알아보자 (뷰 테이블, View Table)

hanker 2025. 1. 9. 00:00
반응형

SQL에서 뷰(View)는 복잡한 쿼리를 단순화하고 데이터의 보안을 강화하는 데 유용하다.

뷰는 테이블처럼 동작하지만, 실제 데이터를 저장하지 않는 가상 테이블이다.

 

이번 글에서 뷰의 개념과 생성 법 등 다양한 뷰 기능들에 대해서 알아보자!

 


1. 뷰(View) 란?

 

영어로 View는 "보다", Page에서 View는 사용자가 보는 페이지를 뜻하는데,

SQL에서의 뷰는 하나 이상의 테이블에서 가져온 데이터를 기반으로 정의된 가상 테이블이다.

특징으로는

- 뷰는 SQL 쿼리를 저장해서, 테이블처럼 사용할 수 있다.

- 뷰 자체는 데이터를 저장하지 않고, 정의된 쿼리를 실행하여 데이터를 반환해 준다.

 


 

2. 뷰의 장점

 

2-1. 복잡한 쿼리 단순화

- 복잡한 쿼리를 뷰로 저장하면 사용자는 간단한 SELECT 문으로 데이터를 조회할 수 있다.

 

2-2. 데이터 보안 강화

- 민감한 데이터를 숨기고, 필요한 열만 노출한다.

 

2-3. 데이터 일관성 유지

- 뷰를 사용하면 복잡한 로직이 일관되게 적용된다.

 

2-4. 유지보수 용이성

- 애플리케이션 코드를 수정하지 않고도 뷰를 변경하여 데이터 처리 방식을 조정할 수 있다.

 


3. 뷰 생성과 관리

 

3-1. 뷰 생성 방법

CREATE VIEW view_name AS -- View Table Name 지정
SELECT column1, column2  -- View Table 컬럼 지정
FROM table_name          -- 기준이 되는 테이블
WHERE condition;         -- Where 조건
CREATE VIEW employee_view AS
SELECT employee_id, name, department_id, salary
FROM employees
WHERE salary > 5000;

# 급여 테이블에서 급여가 5000 이상인 직원의 정보를 employee_view 라는 명칭의 뷰 테이블을 만든다.
# 이때 employee_view의 컬럼은 employee_id, name, department_id, salary 이다.

 

 

3-2. 뷰 조회

뷰는 테이블처럼 SELECT 문으로 조회할 수 있다.

SELECT * FROM employee_view;

 

 

3-3. 뷰 갱신 (CREATE OR REPLACE)

기존에 만든 뷰를 수정하려면 CREATE OR REPLACE를 사용해야 한다.

CREATE OR REPLACE VIEW employee_view AS
SELECT employee_id, name, salary
FROM employees
WHERE salary > 6000;

 

 

3-4. 뷰 삭제

뷰가 더 이상 필요하지 않다면 DROP 문으로 삭제한다.

DROP VIEW view_name;

4. 뷰의 종류

 

4-1. 단순 뷰(Simple View)

단일 테이블에서 데이터를 가져오며, 집계 함수가 포함되지 않는다.

CREATE VIEW department_view AS
SELECT department_id, department_name
FROM departments;

 

 

4-2. 복합 뷰(Complex View)

여러 테이블을 JOIN하거나, 집계 함수를 포함한다.

CREATE VIEW sales_summary AS
SELECT product_id, SUM(amount) AS total_sales
FROM sales
GROUP BY product_id;

 

 


5. 뷰 활용 사례

 

5-1. 민감한 데이터 보호

사용자에게 민감한 열을 숨기고 필요한 데이터만 제공할 수 있다.

CREATE VIEW user_view AS
SELECT name, age
FROM user;
# 민감정보(주민번호, 핸드폰번호 등)를 제외하고 조회

 

 

5-2. 복잡한 쿼리 단순화

CREATE VIEW sales_performance AS
SELECT s.salesperson_id, s.product_id, SUM(s.amount) AS total_sales
FROM sales s
JOIN employees e ON s.salesperson_id = e.employee_id
WHERE e.department_id = 10
GROUP BY s.salesperson_id, s.product_id;

# id 값이 10번인 부서의 매출 성과를 뷰테이블로 만들어서 사용

 

 

5-3. 보고서 생성

CREATE VIEW monthly_report AS
SELECT TO_CHAR(sale_date, 'YYYY-MM') AS month, SUM(amount) AS total_sales
FROM sales
GROUP BY TO_CHAR(sale_date, 'YYYY-MM');
# 월별 매출 보고서를 생성

 


6. 뷰 사용 시 주의사항

 

6-1. 퍼포먼스 고려

- 뷰는 데이터를 저장하지 않으므로, 뷰를 조회할 때마다 정의된 쿼리가 실행된다.

- 복잡한 뷰를 자주 조회하면 성능 부하가 발생할 수 있다.

 

6-2. 뷰의 제약사항

- 일부 데이터베이스는 복합 뷰를 업데이트할 수 없다

- 특정 데이터베이스에서는 ORDER BY가 뷰 정의에 포함되지 않을 수 있다.

 

6-3. 데이터 변경 시 동기화

- 뷰는 기본 테이블 데이터를 반영하므로, 테이블 구조가 변경되면 뷰가 깨질 수 있다.

 


7. 뷰와 테이블의 차이점
특징 뷰(View) 테이블(Table)
데이터 저장 저장하지 않음 데이터를 물리적으로 저장
데이터 업데이트 업데이트 가능 (단, simple view 에서만 가능) 자유롭게 업데이트 가능
성능 데이터가 많을 경우 성능 저하 가능 물리적 데이터 저장으로 성능 우수
사용 목적 복잡한 쿼리 단순화, 보안 강화 데이터 저장 및 관리 목적

 

SQL 뷰는 데이터 관리와 보안 측면에서 매우 유용하다.

 

적절한 뷰 활용은 데이터베이스 운영을 단순화하고 효율성을 극대화 시켜준다!

 

끝.

반응형