MySQL/MariaDB의 뷰(View)

유방현·2024년 11월 8일
0

MySQL/MariaDB의 뷰(View) 완벽 가이드

1. 뷰(View)의 기본 개념

뷰는 데이터베이스에서 특정 쿼리의 결과를 가상 테이블로 사용할 수 있게 만든 객체입니다.

주요 특징

  1. 가상 테이블

    • 실제 데이터를 저장하지 않음
    • 쿼리 결과를 테이블처럼 사용
  2. 데이터 접근 제어

    • 특정 사용자에게 필요한 정보만 제공
    • 보안 강화 기능
  3. 쿼리 단순화

    • 복잡한 쿼리를 간단하게 재사용
    • 여러 테이블의 조인 결과를 하나의 뷰로 표현

2. 뷰 생성 및 관리

기본 문법

CREATE VIEW 뷰이름 AS
SELECT1,2, ...
FROM 테이블명
WHERE 조건;

뷰 생성 예제

-- 기본 뷰 생성
CREATE VIEW emp_vu AS
SELECT * FROM emp;

-- 조건부 뷰 생성
CREATE VIEW emp_vu_10 AS
SELECT empno, ename, mgr, job
FROM emp
WHERE deptno = 10;

-- 열 별칭을 사용한 뷰
CREATE VIEW emp_vu_20 AS
SELECT empno AS no, ename AS name, mgr, job
FROM emp
WHERE deptno = 20;

복잡한 뷰 예제

-- 연봉 계산 뷰
CREATE VIEW emp_sal AS
SELECT 
    empno, 
    ename, 
    sal, 
    (sal * 12 + IFNULL(comm, 0)) AS annual_salary
FROM emp;

-- 조인을 사용한 뷰
CREATE VIEW emp_salgrade AS
SELECT 
    e.empno, 
    e.ename, 
    e.job, 
    (e.sal * 12 + IFNULL(e.comm, 0)) AS annsal, 
    s.grade
FROM emp e
INNER JOIN salgrade s ON e.sal BETWEEN s.losal AND s.hisal;

3. 뷰 관리 및 확인

뷰 목록 확인

-- 모든 뷰 조회
SHOW FULL TABLES WHERE Table_type = 'VIEW';

-- 특정 데이터베이스의 뷰 정보
SELECT * 
FROM information_schema.views 
WHERE table_schema = '데이터베이스이름';

뷰 정의 확인

SHOW CREATE VIEW 뷰이름;

4. 인라인 뷰 (Inline View)

개념

  • SQL 쿼리 내에서 일시적으로 사용되는 서브쿼리
  • 데이터베이스에 저장되지 않는 임시 뷰

예시

SELECT e.empno, e.ename, d.deptno, d.dname
FROM (SELECT * FROM emp WHERE deptno IN (10, 20)) e
INNER JOIN dept d
ON e.deptno = d.deptno;

주요 용도

  1. 데이터 그룹화
  2. 집계 함수 활용
  3. 조건부 데이터 생성

5. 뷰 수정 (CREATE OR REPLACE)

문법

CREATE OR REPLACE VIEW emp_sal AS
SELECT empno, ename, job, sal * 12 + IFNULL(comm, 0) AS annsal
FROM emp;

특징

  • 기존 뷰가 있으면 덮어쓰기
  • DROP VIEW 없이 뷰 수정 가능
  • 뷰 구조 변경 시 유용

6. 뷰 사용의 장점

  1. 보안 강화

    • 민감한 데이터 숨기기
    • 접근 권한 제어
  2. 데이터 추상화

    • 복잡한 쿼리 단순화
    • 재사용성 향상
  3. 데이터 일관성

    • 동일한 데이터 형식 유지
    • 업데이트 용이
profile
코딩하는 직장인

0개의 댓글