IT Log
[PostgreSQL] CREATE TABLE AS 본문
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