일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 오블완
- network
- java
- SQL
- git
- DBMS
- API
- IntelliJ
- Linux
- 티스토리챌린지
- 명령어
- top
- group by
- mssql
- PostgreSQL
- Javascript
- MongoDB
- 자바
- MariaDB
- spring
- rsync
- oracle
- 차이점
- analytics4
- docker
- 트랜잭션
- mysql
- Python
- JPA
- 리눅스
- Today
- Total
hanker
SQL - 뷰(View)를 알아보자 (뷰 테이블, View Table) 본문
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 뷰는 데이터 관리와 보안 측면에서 매우 유용하다.
적절한 뷰 활용은 데이터베이스 운영을 단순화하고 효율성을 극대화 시켜준다!
끝.
'DATABASE > SQL' 카테고리의 다른 글
SQL - 각 데이터베이스 별 버전 확인 방법 ( MySQL / MSSQL / PostgreSQL / Oracle / MariaDB / MongoDB) (0) | 2025.01.11 |
---|---|
SQL - 테이블 파티셔닝(Table Partitioning) (0) | 2025.01.10 |
SQL - 트랜잭션(Transaction) 가이드 (커밋과 롤백 활용 방법) (0) | 2025.01.06 |
SQL - 인덱스(index) 사용법, 종류, 정의 (0) | 2025.01.05 |
SQL - Window Functions 의 모든 것 (윈도우 함수) (1) | 2025.01.04 |