SQL 개발이나 데이터 분석에서 자주 쓰이는 뷰(View)는 복잡한 쿼리를 단순화하고, 데이터 보안을 강화하며, 재사용성을 높이는 강력한 도구입니다. 본 글에서는 Oracle과 Tibero에서 뷰를 생성하고 활용하는 방법을 비교해보며, 실무에서 효과적으로 적용할 수 있는 팁까지 정리했습니다.
Oracle에서 뷰 생성과 활용
뷰 생성 기본 예제
-- 직원 테이블에서 부서별 인원만 보는 뷰 생성
CREATE VIEW dept_emp_view AS
SELECT department_id, COUNT(*) AS emp_count
FROM employees
GROUP BY department_id;
SQL뷰 조회
SELECT * FROM dept_emp_view WHERE department_id = 10;
SQL뷰 수정 (CREATE OR REPLACE)
CREATE OR REPLACE VIEW dept_emp_view AS
SELECT department_id, AVG(salary) AS avg_salary
FROM employees
GROUP BY department_id;
SQL뷰 삭제
DROP VIEW dept_emp_view;
SQL📌 실무 포인트
- 복잡한 리포트용 SQL을 뷰로 정의해두면 재사용성이 크게 향상됨
- 보안 목적: 특정 컬럼만 공개하여 민감한 데이터 노출 방지
WITH CHECK OPTION
활용 시, 뷰 조건을 위반하는 데이터 수정 방지 가능
Tibero에서 뷰 생성과 활용
Tibero는 Oracle과 호환성 높은 SQL 문법을 제공하므로, 뷰 사용법도 거의 동일합니다.
뷰 생성
CREATE VIEW dept_emp_view AS
SELECT department_id, COUNT(*) AS emp_count
FROM employees
GROUP BY department_id;
SQL뷰 조회
SELECT * FROM dept_emp_view WHERE department_id = 20;
SQL뷰 수정
CREATE OR REPLACE VIEW dept_emp_view AS
SELECT department_id, MAX(salary) AS max_salary
FROM employees
GROUP BY department_id;
SQL뷰 삭제
DROP VIEW dept_emp_view;
SQL📌 Tibero 특징
- Oracle 호환성을 중시하기 때문에 문법 차이가 거의 없음
- 대규모 DB 마이그레이션 시, 뷰 정의를 그대로 옮겨도 무리 없이 동작하는 경우가 많음
- 권한 제어(
GRANT SELECT ON view_name
)도 Oracle과 동일
실무 활용 팁
- 리포트 쿼리 단순화
- 월간 매출, 일자별 클릭 수 같은 리포트성 데이터를 뷰로 정의해두면 BI 툴 연동 시 유용
- 보안 관리
- 고객 개인정보 테이블에서 이름, 연락처는 제외하고 필요한 컬럼만 뷰로 제공
- 성능 관리
- 뷰 자체는 데이터를 저장하지 않으므로 성능에 큰 영향이 없음
- 다만, 복잡한 조인 포함 시 뷰를 여러 번 중첩하면 실행 속도가 저하될 수 있음 → Materialized View 고려
마무리
뷰(View)는 Oracle과 Tibero 모두에서 복잡한 SQL을 단순화하고, 보안과 성능 관리에 도움을 주는 중요한 객체입니다. 특히 데이터 분석, 리포트 자동화, 권한 제어 등 다양한 실무 상황에서 효과적으로 활용할 수 있습니다.