본문 바로가기
자격증/SQLD

[SQLD] 4-2: 뷰 (View)

by rnasterofmysea 2025. 2. 17.
반응형

이전 포스트:

2025.02.16 - [자격증/SQLD] - [SQLD] 4-1: 서브쿼리 (Subquery)

 


SQLD Chapter 4-2: 뷰 (View)


1. 뷰(View)란?

뷰(View)는 SQL에서 사용하는 가상의 테이블로, 하나 이상의 테이블을 기반으로 생성됩니다. 실제 데이터를 저장하지 않으며, 쿼리를 통해 동적으로 데이터를 가져오는 방식으로 작동합니다.

1.1 뷰의 특징

  • 가상 테이블: 실제 데이터를 저장하지 않고, 원본 테이블을 참조하여 동적으로 데이터를 조회
  • 보안성 향상: 특정 컬럼이나 행만 포함하도록 제한하여 민감한 데이터 접근을 제어 가능
  • SQL 재사용 가능: 복잡한 쿼리를 뷰로 정의하면 여러 번 재사용할 수 있어 코드의 가독성이 증가
  • 독립성 유지: 원본 테이블의 구조가 변경되더라도, 뷰를 사용하면 애플리케이션에 영향을 최소화할 수 있음

2. 뷰 생성 및 사용

뷰를 생성하는 기본적인 SQL 문법은 다음과 같습니다.

CREATE VIEW 뷰이름 AS
SELECT 열1, 열2, ... FROM 원본테이블
WHERE 조건;

예제: 직원 정보 뷰 생성

EMPLOYEES 테이블

EMPLOYEE_ID  EMPLOYEE_NAME  DEPARTMENT_ID  SALARY
1 홍길동 10 3000
2 김철수 20 4500
3 이영희 10 6000
4 박민수 30 7000
CREATE VIEW IT_EMPLOYEES AS
SELECT EMPLOYEE_ID, EMPLOYEE_NAME, SALARY
FROM EMPLOYEES
WHERE DEPARTMENT_ID = 10;

뷰를 활용한 데이터 조회

SELECT * FROM IT_EMPLOYEES;

결과

EMPLOYEE_ID  EMPLOYEE_NAME  SALARY
1 홍길동 3000
3 이영희 6000

 

설명

  • IT_EMPLOYEES 뷰를 생성하여 DEPARTMENT_ID가 10인 직원들만 포함
  • 실제 EMPLOYEES 테이블을 직접 조회하지 않고, 뷰를 통해 필터링된 데이터를 간편하게 조회

3. 뷰의 활용

뷰는 다양한 방식으로 활용될 수 있습니다.

3.1 특정 컬럼 제한

뷰를 사용하면 테이블의 특정 컬럼만 노출할 수 있습니다.

 

EMPLOYEES 테이블

EMPLOYEE_ID  EMPLOYEE_NAME  DEPARTMENT_ID  SALARY
1 홍길동 10 3000
2 김철수 20 4500
3 이영희 10 6000
4 박민수 30 7000
CREATE VIEW EMPLOYEE_NAMES AS
SELECT EMPLOYEE_ID, EMPLOYEE_NAME FROM EMPLOYEES;

뷰를 활용한 데이터 조회

SELECT * FROM EMPLOYEE_NAMES;

결과

EMPLOYEE_ID  EMPLOYEE_NAME
1 홍길동
2 김철수
3 이영희
4 박민수

 

설명

  • EMPLOYEE_NAMES 뷰를 생성하여 EMPLOYEES 테이블의 EMPLOYEE_ID와 EMPLOYEE_NAME 컬럼만 포함

 

3.2 복잡한 쿼리 단순화

뷰는 복잡한 SQL 쿼리를 단순화하는 데 유용합니다.

CREATE VIEW HIGH_SALARY_EMPLOYEES AS
SELECT EMPLOYEE_ID, EMPLOYEE_NAME, SALARY
FROM EMPLOYEES
WHERE SALARY > 5000;

뷰를 활용한 데이터 조회

SELECT * FROM HIGH_SALARY_EMPLOYEES;

결과

EMPLOYEE_ID  EMPLOYEE_NAME  SALARY
3 이영희 6000
4 박민수 7000

 

설명

  • HIGH_SALARY_EMPLOYEES 뷰를 사용하여 급여가 5000 이상인 직원만 조회
  • 복잡한 WHERE 조건을 매번 작성할 필요 없이, 뷰를 사용하여 간편하게 조회 가능

4. 뷰 수정 및 삭제

뷰는 필요에 따라 수정 및 삭제할 수 있습니다.

4.1 뷰 수정 (ALTER VIEW)

CREATE OR REPLACE VIEW IT_EMPLOYEES AS
SELECT EMPLOYEE_ID, EMPLOYEE_NAME, SALARY, DEPARTMENT_ID
FROM EMPLOYEES
WHERE DEPARTMENT_ID = 10;

✅ CREATE OR REPLACE VIEW를 사용하면 기존 뷰를 덮어쓸 수 있습니다.

4.2 뷰 삭제 (DROP VIEW)

DROP VIEW IT_EMPLOYEES;

✅ DROP VIEW를 사용하면 뷰가 삭제됩니다.


5. Materialized View (머티리얼라이즈드 뷰)

일반적인 뷰는 데이터를 실시간으로 조회하지만, 머티리얼라이즈드 뷰(Materialized View)는 실제 데이터를 저장하여 성능을 향상시킵니다.

CREATE MATERIALIZED VIEW HIGH_SALARY_EMPLOYEES AS
SELECT * FROM EMPLOYEES WHERE SALARY > 5000;

✅ 머티리얼라이즈드 뷰는 미리 결과를 저장하여 성능을 최적화할 수 있음


6. 마무리

이번 장에서는 뷰(View)의 개념, 생성, 활용 및 수정 방법을 학습했습니다.

뷰는 데이터 접근을 단순화하고 보안을 강화하는 데 유용하지만, 성능을 고려하여 적절히 활용하는 것이 중요합니다.

다음 장에서는 집합 연산자(Set Operators)에 대해 다룰 예정입니다!

 

 


 

💡 도움이 되셨다면 댓글과 공감 부탁드립니다! 😊
📌 더 많은 알고리즘 풀이와 프로그래밍 자료는 블로그에서 확인하세요!
✉️ 문의나 피드백은 댓글이나 이메일로 남겨주세요.

 

반응형