"복잡한 SQL문, 매번 쓰기 귀찮지 않나요?
VIEW로 깔끔하게 재사용해보세요."

 


✅ 뷰(View)란?

**뷰(View)**는 마치 가상 테이블입니다.
SELECT 쿼리의 결과를 마치 진짜 테이블처럼 저장해놓고 필요할 때마다 사용할 수 있도록 만든 것이에요.

  • 📌 뷰는 물리적으로 데이터를 저장하지 않고, SQL문을 저장해두는 논리적 객체입니다.
  • 뷰는 필요할 때마다 쿼리를 실행해서 결과를 보여주는 창문(view) 같은 역할을 해요.

 

🧾 기본 문법: CREATE VIEW

CREATE VIEW 뷰이름 AS
SELECT문;

 

📌 예시:

CREATE VIEW active_users AS
SELECT id, name, email
FROM users
WHERE is_active = 1;

 

이제부터는 아래처럼 간단하게 사용할 수 있어요.

SELECT * FROM active_users;

 


 

👶 초보자를 위한 설명: 왜 써야 하나요?

  1. 복잡한 SQL 반복 피하기
    • 매번 긴 JOIN, WHERE 조건 쓰기 귀찮을 때 딱!
  2. 가독성 향상
    • 쿼리를 간결하게 만들어 줘서 실수도 줄어들어요.
  3. 보안적 이유
    • 중요한 테이블 전체를 직접 노출하지 않고, 필요한 컬럼만 보여줄 수 있어요.
  4. 재사용성
    • 한 번 만들어 놓으면 다른 쿼리에서 계속 재사용 가능!

 

👨‍💻 실력자를 위한 팁: 실무에서 뷰 활용 고급 팁

1. ✅ WITH CHECK OPTION으로 수정 제한

CREATE VIEW vip_users AS
SELECT * FROM users
WHERE grade = 'VIP'
WITH CHECK OPTION;

 

 

  • 이렇게 만들면, 이 뷰를 통해 grade = 'VIP'가 아닌 값으로는 업데이트/삽입이 불가능합니다.
  • 데이터 일관성 유지에 유리하죠!

2. ✅ 뷰 위에 뷰도 가능 (Nested View)

CREATE VIEW korea_users AS
SELECT * FROM users WHERE country = 'Korea';

CREATE VIEW korea_vip_users AS
SELECT * FROM korea_users WHERE grade = 'VIP';

 

 

  • 뷰를 조합해서 더 복잡한 뷰를 만들 수 있습니다.
  • 단, 너무 깊게 중첩되면 유지보수가 어려워질 수 있으니 주의!

3. ❗주의: 뷰는 성능에 영향을 줄 수 있어요

  • 뷰는 실제 테이블이 아니기 때문에, 매번 원본 테이블에 접근해서 데이터를 뽑습니다.
  • 특히 JOIN이 많은 복잡한 뷰를 중첩하거나, 뷰 위에서 또 무거운 쿼리를 날릴 경우 성능 저하 발생 가능.
  • 복잡한 뷰는 인덱스와 함께 성능을 반드시 테스트하세요.

 

🧹 뷰 관리하기

1. 뷰 확인

SHOW FULL TABLES IN database_name WHERE TABLE_TYPE LIKE 'VIEW';

 

2. 뷰 삭제

DROP VIEW view_name;

 

3. 뷰 수정

CREATE OR REPLACE VIEW view_name AS
SELECT ...

 


 


🧠 마무리 한 줄 요약

뷰는 '가상 테이블'이다.
복잡한 쿼리를 이름으로 저장해두고, 쉽게 재사용할 수 있는 훌륭한 도구다!
단, 뷰도 성능과 관리 측면에서 전략적으로 활용하자.

 

 

 

 

 

 

+ Recent posts