PostgreSQL: WITH 구문

calico·2025년 6월 23일

Database

목록 보기
2/7

1. 테이블 옵션에서의 WITH


  • CREATE TABLE이나 ALTER TABLE 같은 명령에서 테이블의 저장 특성(옵션)을 지정할 때 사용합니다.

예시


CREATE TABLE my_table (
  id serial PRIMARY KEY,
  name text
) WITH (fillfactor = 70, autovacuum_enabled = true);



설명


  • WITH (옵션 = 값, ...) 형태로 사용합니다.

  • 테이블의 저장 구조, 활용 방법, 자동화 등의 스토리지 관련 옵션을 지정합니다.

  • 예전에는 OIDS 옵션도 여기서 사용했지만, 최신 버전에서는 fillfactor, autovacuum 등만 설정됩니다.



대표적 옵션


  • fillfactor: 페이지에 레코드를 얼마나 채울지(0~100)

  • autovacuum_enabled: 자동 진공(vacuum) 사용 여부



2. CTE(공통 테이블 식)에서의 WITH


  • 쿼리에서 임시 이름이 붙은 결과 집합을 만들고, 이를 메인 쿼리에서 재사용할 때 사용하는 구문입니다.

예시


WITH recent_orders AS (
  SELECT * FROM orders WHERE order_date > CURRENT_DATE - INTERVAL '7 days'
)
SELECT * FROM recent_orders WHERE customer_id = 1;



설명


  • 쿼리의 시작 부분에 WITH ... AS (...) 형태로 사용합니다.

  • 공통 테이블 식(CTE, Common Table Expression)라고 부릅니다.

  • 복잡한 쿼리를 단계별로 쪼개서 가독성을 높이고, 서브쿼리처럼 재사용할 수 있게 만듭니다.



정리


종류사용 위치주요 용도예시 구문
테이블 옵션용 WITHCREATE/ALTER TABLE 문 등테이블의 저장 특성 설정WITH (fillfactor = 80)
CTE(공통 테이블 식)SELECT, INSERT, UPDATE 등임시 결과 집합 정의WITH temp AS (SELECT ...)



profile
개인 블로그

0개의 댓글