VIEW 생성과 활용 방법

nTels_Tarzan·2025년 4월 23일
post-thumbnail

1. VIEW란?

  • 복잡한 쿼리를 단순화
  • 보안을 강화 (민감한 컬럼 숨김)
  • 여러 쿼리를 재사용 가능하게 함
  • 물리적으로 데이터를 저장하지 않음 (기본적으로)

2. VIEW 생성 방법

기본 구조

CREATE VIEW view_name AS
SELECT column1, column2
FROM table_name
WHERE condition;

예제:

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

이제 active_users는 테이블처럼 쿼리할 수 있어요:

SELECT * FROM active_users;

3. VIEW의 활용 사례

  • 복잡한 쿼리 단순화
-- 복잡한 조인을 VIEW로 만들어두면
CREATE VIEW user_orders AS
SELECT u.id, u.name, o.order_id, o.amount
FROM users u
JOIN orders o ON u.id = o.user_id;

-- 이후에는 단순하게 조회 가능
SELECT * FROM user_orders WHERE amount > 100;
  • 보안용 뷰
CREATE VIEW public_users AS
SELECT id, name
FROM users;
  • 이 뷰만 접근 권한을 부여하여 이메일, 전화번호 등의 정보는 숨김 가능

4. VIEW 갱신 (REPLACE)

CREATE OR REPLACE VIEW view_name AS
SELECT ...
  • 기존 뷰를 덮어씌움
  • DROP 없이 수정 가능

5. VIEW 권한 설정

GRANT SELECT ON public_users TO readonly_user;
  • 원본 테이블 권한을 주지 않아도 뷰에만 부여 가능

6. VIEW 삭제

DROP VIEW view_name;

7. VIEW 사용 시 주의사항

주의점설명
성능복잡한 뷰를 중첩해서 사용하면 성능 저하 가능
비업데이트 가능 뷰대부분의 뷰는 INSERT, UPDATE 불가
수정이 잦은 경우CREATE OR REPLACE VIEW로 덮어쓰기 권장
물리 저장 X뷰 자체는 데이터를 저장하지 않음

8. 실전 팁: 날짜별 사용자 가입 뷰 만들기

CREATE VIEW daily_signups AS
SELECT DATE(created_at) AS signup_date, COUNT(*) AS user_count
FROM users
GROUP BY DATE(created_at);
-- 최근 일주일 가입자 추이 확인
SELECT * FROM daily_signups
WHERE signup_date >= CURRENT_DATE - INTERVAL '7 days';

profile
안녕하세요. 엔텔스 TarzanDB 공식계정입니다.

0개의 댓글