cmod.ify

가상 테이블 본문

BASIC/DATABASE

가상 테이블

modifyC 2025. 12. 30. 18:21
728x90
반응형

가상의 테이블: VIEW, CTE, 임시 테이블

1. 인라인 뷰 (Inline View)

  • 정의: FROM 절 안에 직접 작성된 서브쿼리임.
  • 특징: 쿼리가 실행되는 동안만 잠깐 메모리에 생성되었다가 사라지는 임시 테이블임.
  • 사용 예: 복잡한 필터링을 미리 해두고, 그 결과에서 다시 조회하고 싶을 때 사용함.
SELECT * FROM (SELECT * FROM tCity) A; -- 'A'라는 별명을 붙여 인스턴스처럼 사용

2. 뷰 (VIEW)

  • 정의: SELECT 구문 자체를 데이터베이스에 저장해두고, 마치 테이블처럼 부르는 가상 테이블임.
  • 장점:
    1. 속도: 주기억장치(메모리)에 저장되어 실행 속도가 빠름.
    2. 보안: 사용자에게 실제 테이블의 모든 컬럼을 보여주지 않고 필요한 것만 보여줌.
    3. 편의성: 쿼리가 길어지는 것을 방지함.
  • 주의: 뷰에 INSERT를 하면 원본 테이블에도 반영될 수 있음 (읽기 전용 옵션이 없다면).
create [or replace] view 뷰이름 [별명나열]
as
select [distinct] 구문
[with check option]

3. CTE (Common Table Expression)

  • 정의: WITH 절을 사용하여 만드는 일시적인 결과 세트임.
  • 특징: 인라인 뷰와 비슷하지만, 코드 가독성이 훨씬 좋고 같은 쿼리 내에서 재사용이 가능함.
  • 수명: 해당 트랜잭션/쿼리 문장이 끝나면 바로 사라짐.
WITH temp(이름, 급여) AS (
    SELECT name, salary FROM tStaff WHERE depart = '영업부'
)
SELECT * FROM temp WHERE 급여 > 300;

4. 임시 테이블 (Temporary Table)

  • 정의: CREATE TEMPORARY TABLE로 생성하며, 물리적으로 존재하지만 현재 세션에서만 보임.
  • 특징: 내 로컬 접속(세션)이 끊기면 자동으로 삭제됨. 다른 사람(세션)은 내가 만든 임시 테이블을 볼 수 없음.

📊 가상 테이블 종류

종류 수명 주기 (Life Cycle) 비고
INLINE VIEW 해당 SELECT 구문이 실행되는 동안만 모든 DB에서 지원, 일회용
CTE 하나의 쿼리/트랜잭션 내에서만 인라인 뷰의 세련된 버전, 가독성 좋음
임시 테이블 현재 세션(접속)이 유지되는 동안 세션 종료 시 자동 삭제, 나만 보임
VIEW 삭제(DROP)하기 전까지 영구 보관 DB에 SELECT 문을 저장해둔 가상 테이블

 

  1. 휘발성: 뷰를 제외한 나머지는 특정 시점이 지나면 메모리에서 사라지는 휘발성 데이터임.
  2. 보안성: 실제 테이블 구조를 숨기고 싶을 땐 VIEW를 만들어 제공하는 것이 관례임.
  3. 가독성: 서브쿼리가 너무 중첩되어 복잡할 땐 CTE(WITH 절)를 써서 코드를 분리하면 훨씬 보기 좋음.
728x90
반응형

'BASIC > DATABASE' 카테고리의 다른 글

파이썬 & MariaDB 연동  (1) 2025.12.30
트리거, 인덱스, 백업, 프로시저  (0) 2025.12.30
DML & TCL  (0) 2025.12.29
DB SET Operator & Sub Query & Join  (0) 2025.12.29
MariaDB DDL 실습  (0) 2025.12.26