개키우는개발자 : )

PostgreSQL CREATE TABLE AS SELECT (CTAS) 본문

PostgreSQL/데이터 조작 및 테이블 관리

PostgreSQL CREATE TABLE AS SELECT (CTAS)

DOGvelopers 2019. 11. 19. 14:51
반응형

CTAS 란

CREATE TABLE AS SELECT 의 약어로써 SELECT 문을 기반으로 CREATE TABLE을 할 수 있는 CREATE문이다.

 

기본문법

 

- 새로운 테이블명의 이름을 작성 후 SELECT 문을 작성합니다.

CREATE TABLE NEW_TABLE AS SELECT

 

- 새로운 테이블명의 이름과 컬럼명을 작성 후 SELECT 문을 작성합니다.

CREATE TABLE NEW_TABLE(NEW_COLUMN_1, NEW_COLUMN_2) AS SELECT

 

- 기존의 테이블이 존재하지 않는 경우만 생성되며 생성된 후 SELECT 문을 작성합니다.

CREATE TABLE IF NOT EXISTS NEW_TABLE AS SELECT

 

 

ERD

실습

 

- FILM 테이블과 FILM_CATEGORY 테이블을 조인하고 FILM_CATEGORY 의 CATEGORY_ID 값이 1인 정보를 조회합니다.

SELECT
	A.FILM_ID,
	A.TITLE,
	A.RELEASE_YEAR,
	A.LENGTH,
	A.RATING
FROM
	FILM A,
	FILM_CATEGORY B
WHERE
	A.FILM_ID = B.FILM_ID
	AND B.CATEGORY_ID = 1;

 

- CREATE AS를 활용하여 ACTION_FILM 테이블을 생성 하면서 조회된 CATEGORY_ID 1번의 데이터를 동시에 저장합니다.

CREATE TABLE ACTION_FILM AS
SELECT
	A.FILM_ID,
	A.TITLE,
	A.RELEASE_YEAR,
	A.LENGTH,
	A.RATING
FROM
	FILM A,
	FILM_CATEGORY B
WHERE
	A.FILM_ID = B.FILM_ID
	AND B.CATEGORY_ID = 1;

 

- 생성된 ACTION_FILM 테이블을 조회합니다.

SELECT * FROM ACTION_FILM;

 

- IF NOT EXISTS를 작성하지 않고 중복되는 테이블을 생성하면 ERROR가 발생합니다. 

IF NOT EXISTS를 활용하여 ACTION_FILM 테이블 다시 생성을 하게 되면 실제 테이블은 생성되지 않고 에러도 발생하지 않습니다.

CREATE TABLE IF NOT EXISTS ACTION_FILM AS
SELECT
	A.FILM_ID,
	A.TITLE,
	A.RELEASE_YEAR,
	A.LENGTH,
	A.RATING
FROM
	FILM A,
	FILM_CATEGORY B
WHERE
	A.FILM_ID = B.FILM_ID
	AND B.CATEGORY_ID = 1;

 

반응형
Comments