
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) 사용 여부
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)라고 부릅니다.
복잡한 쿼리를 단계별로 쪼개서 가독성을 높이고, 서브쿼리처럼 재사용할 수 있게 만듭니다.
| 종류 | 사용 위치 | 주요 용도 | 예시 구문 |
|---|---|---|---|
| 테이블 옵션용 WITH | CREATE/ALTER TABLE 문 등 | 테이블의 저장 특성 설정 | WITH (fillfactor = 80) |
| CTE(공통 테이블 식) | SELECT, INSERT, UPDATE 등 | 임시 결과 집합 정의 | WITH temp AS (SELECT ...) |