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
All views expressed here are solely my own and do not represent those of any affiliated organization.

0개의 댓글