IT Log

[PostgreSQL] CREATE TABLE AS 본문

SQL/PostgreSQL

[PostgreSQL] CREATE TABLE AS

newly0513 2021. 5. 14. 01:05
728x90
반응형

구문

CREATE [ { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ] table_name
    [ (column_name [, ...] ) ]
    [ WITH ( storage_parameter [= value] [, ... ] ) | WITH OIDS | WITHOUT OIDS ]
    [ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]
    [ TABLESPACE tablespace_name ]
    AS query
    [ WITH [ NO ] DATA ]

매개변수

  • TEMPORARY or TEMP
    - 세션 기간 동안 존재하는 임시 테이블이 생성됨
    - 세션 종료 후 임시 테이블은 삭제됨

  • UNLOGGED
    - WAL(Write Ahead Log)가 기록되지 않음
    - 일반 TABLE보다 빠름
    - CRASH 또는 비정상 종료 시 TRUNCATE 되므로, 안전하지 않음

  • IF NOT EXISTS
    - 동일한 이름의 table_name이 있는 경우, 오류가 발생하지 않음

  • ON COMMIT
    - 임시 테이블의 동작을 제어
    OPTION DESCRIPTION
    PRESERVE ROWS DEFAULT 값으로, 특별한 조치가 취해지지 않음
    DELETE ROWS 모든 행은 각 트랜잭션에서 삭제됨
    DROP 테이블은 트랜잭션 종료 후 삭제됨

 

  • TABLESPACE tablespace_name
    - tablespace_name은 새 테이블이 생성 될 테이블 스페이스의 이름
    - 지정되지 않은 경우 default_tablespace를 참조
    - TABLE이 임시 인 경우 temp_tablespaces를 참조
  • query
    - SELECT, TABLE 또는 VALUES 명령
    - 준비된 SELECT, TABLE
    - VALUES 쿼리를 실행하는 EXECUTE
  • WITH [ NO ] DATA
    - 'query'로 생선된 데이터를 새 테이블에 복사할 여부를 지정
    - DEFAULT 값은 WITH DATA
    - WITH NO DATA를 지정하는 경우 TABLE 구조만 생성됨

예시

CREATE TABLE films_recent AS
  SELECT * 
    FROM films 
   WHERE date_prod >= '2002-01-01';

 

CREATE TABLE films2 AS
  TABLE films;

 

PREPARE recentfilms(date) AS
  SELECT * 
    FROM films 
   WHERE date_prod > $1;
   
CREATE TEMP TABLE films_recent WITH (OIDS) ON COMMIT DROP AS
  EXECUTE recentfilms('2002-01-01');

참조 URL : https://www.postgresql.org/docs/9.6/sql-createtableas.html


 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형

'SQL > PostgreSQL' 카테고리의 다른 글

[PostgreSQL] CREATE  (0) 2021.05.14
CREAETE TRIGGER  (0) 2021.02.05
Trigger Procedures  (0) 2021.02.04
DROP  (0) 2019.12.11
Comments