CREATE TABLE AS

Name

CREATE TABLE AS -- Äõ¸®ÀÇ °á°ú·Î »õ·Î¿î Å×À̺íÀ» Á¤ÀÇÇÑ´Ù

Synopsis

CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE 
table_name

    [ (
column_name
 [, ...] ) ]
    [ WITH ( 
storage_parameter
 [= 
value
] [, ... ] ) | WITH OIDS | WITHOUT OIDS ]
    [ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]
    [ TABLESPACE 
tablespace
 ]
    AS 
query

¼³¸í

CREATE TABLE AS´Â Å×À̺íÀ» ÀÛ¼ºÇØ,SELECT Ä¿¸àµå¿¡ ÀÇÇØ »êÃâµÈ µ¥ÀÌÅ͸¦ ±× Å×ÀÌºí¿¡ °Ý³³ÇÕ´Ï´Ù. Å×À̺íÀÇ ¿­Àº,SELECTÀÇ Ãâ·Â¿­¿¡ °áºÎµÈ À̸§°ú µ¥ÀÌÅÍÇüÀ» °¡Áý´Ï´Ù(´Ù¸¸, »õ·Î¿î ¿­¸íÀ» ¸í½ÃÇÑ ¸®½ºÆ®¸¦ °Ç³×ÁÖ¸é, ÀÌ ¿­¸íÀ» ¿À¹ö¶óÀ̵å ÇÒ ¼ö ÀÖ½À´Ï´Ù).

CREATE TABLE AS´Â ºäÀÇ »ý¼º°ú À¯»çÇÕ´Ï´Ù¸¸, ½ÇÁ¦·Î´Â ¿ÏÀüÈ÷ ´Ù¸¨´Ï´Ù. CREATE TABLE AS´Â »õ·Î¿î Å×À̺íÀ» »ý¼ºÇØ, »õ·Î¿î Å×À̺íÀÇ ³»¿ëÀ» ÃʱâÈ­Çϱâ À§Çؼ­ ÇÑ ¹ø¸¸ Äõ¸®¸¦ Æò°¡ÇÕ´Ï´Ù. ±× ÀÌÈÄ¿¡ ÇàÇØÁø, Äõ¸®ÀÇ ¿øÅ×ÀÌºí¿¡ ´ëÇÑ º¯°æÀº, »õ·Î¿î Å×ÀÌºí¿¡´Â ¹Ý¿µµÇÁö ¾Ê½À´Ï´Ù. ¹Ý´ë·Î, ºä´Â Äõ¸®°¡ ÇàÇØÁú ¶§¸¶´Ù, Á¤ÀǵÈSELECT¹®À» ÀçÆò°¡ÇÕ´Ï´Ù.

¸Å°³º¯¼ö

GLOBAL or LOCAL

ȣȯ¼ºÀ» º¸°ü À¯ÁöÇϱâ À§ÇØ, ¹«½ÃµË´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº CREATE TABLE À» ÂüÁ¶ÇØ ÁÖ¼¼¿ä.

TEMPORARY or TEMP

ÁöÁ¤µÇ¾úÀ» °æ¿ì, Å×À̺íÀº ÀϽà Å×À̺í·Î¼­ »ý¼ºµË´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº CREATE TABLE À» ÂüÁ¶ÇØ ÁÖ¼¼¿ä.

table_name

»ý¼ºÇÏ´Â Å×À̺íÀÇ À̸§(°ËÁõÀ» °ÅÄ£ ½ºÅ°¸¶)ÀÔ´Ï´Ù.

column_name

»õ·Î¿î Å×À̺íÀÇ ¿­ÀÇ À̸§ÀÔ´Ï´Ù. ¿­¸íÀÌ ÁöÁ¤µÇÁö ¾ÊÀº °æ¿ì´Â, Äõ¸®ÀÇ Ãâ·Â¿­¸íÀ» ÀÌ¿ëÇÕ´Ï´Ù. EXECUTEÄ¿¸àµå¸¦ ½ÇÇàÇØ Å×À̺íÀ» »ý¼ºÇÏ´Â °æ¿ì´Â, ¿­¸íÀÇ ¸®½ºÆ®¸¦ ÁöÁ¤ÇÒ ¼ö ¾ø½À´Ï´Ù.

WITH ( storage_parameter [= value ] [, ... ] )

ÀÌ ÀýÀº, »õ·Î¿î Å×À̺í¿ëÀÇ »ý·« °¡´ÉÇÑ °Ý³³ ÆÄ¶ó¹ÌÅ͸¦ ÁöÁ¤ÇÕ´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº ÀúÀå(Storage) ÆÄ¶ó¹ÌÅÍ À» ÂüÁ¶ÇØ ÁÖ¼¼¿ä. WITH¿¡´Â,OIDS=TRUE(ȤÀº OIDS)¸¦ Æ÷ÇÔÇÏ¿©, »õ·Î¿î Å×À̺íÀÇ ÇàÀ» Çà¿¡ ÇÒ´çÇÒ ¼ö ÀÖ¾ú´ø OID(¿ÀºêÁ§Æ® ½Äº°ÀÚ)°¡ ÀÖ¾î¾ß ÇÔÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¶ÇÇÑ ,OIDS=FALSE¸¦ Æ÷ÇÔÇÏ¿©, »õ·Î¿î Å×À̺íÀÇ Çà¿¡ OID°¡ ¾ø¾î¾ß ÇÔÀ» ÁöÁ¤ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ÀÚ¼¼ÇÑ Á¤º¸´Â CREATE TABLE À» ÂüÁ¶ÇØ ÁÖ¼¼¿ä.

WITH OIDS
WITHOUT OIDS

À̰͵éÀº ¿À·¡µÈ ±¸¹®À¸·Î, °¢°¢WITH (OIDS)¿ÍWITH (OIDS=FALSE)¿Í °°½À´Ï´Ù. OIDS¿Í ÀúÀåÀåÄ¡ ¸Å°³º¯¼öÀÇ ¼³Á¤ÀÇ ¾çÂÊ ¸ðµÎ¸¦ ÁöÁ¤ÇÏ°í ½ÍÀº °æ¿ì, »ó±âÀÇWITH ( ... )±¸¹®À» »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. »ó±â ±¸¹®À» Âü°íÇϼ¼¿ä.

ON COMMIT

Æ®·£Àè¼Ç ºí·ÏÀÇ Á¾·á½Ã, Àӽà Å×À̺íÀÇ µ¿ÀÛÀº ON COMMIT¸¦ »ç¿ëÇÏ¿© Á¦¾îÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. ÀÌÇÏÀÇ 3°³ÀÇ ¿É¼ÇÀÌ ÀÖ½À´Ï´Ù.

PRESERVE ROWS

Æ®·£Àè¼ÇÀÇ Á¾·á½Ã¿¡ Ưº°ÇÑ Ã³¸®´Â ÇàÇØÁöÁö ¾Ê½À´Ï´Ù. À̰ÍÀÌ µðÆúÆ® µ¿ÀÛÀÔ´Ï´Ù.

DELETE ROWS

°¢ Æ®·£Àè¼Ç ºí·ÏÀÇ Á¾·á½Ã¿¡, Àӽà Å×À̺íÀÇ ¸ðµç ÇàÀÌ »èÁ¦µË´Ï´Ù. º»·¡, °¢ Ä¿¹ÔÀÌ ½ÇÇàµÉ ½Ã¿¡, ÀÚµ¿ÀûÀ¸·Î TRUNCATE ÀÌ ÇàÇØÁý´Ï´Ù.

DROP

ÇöÀçÀÇ Æ®·£Àè¼Ç ºí·ÏÀÇ Á¾·á½Ã¿¡ Àӽà Å×À̺íÀº »èÁ¦µË´Ï´Ù.

TABLESPACE tablespace

tablespace ´Â, »õ·Î¿î Å×À̺íÀÇ ÀÛ¼ºÃ³°¡ µÇ´Â Å×ÀÌºí½ºÆäÀ̽º¸íÀÔ´Ï´Ù. ÀÌ·¯ÇÑ ÁöÁ¤ÀÌ µÇ¾î ÀÖÁö ¾ÊÀº °æ¿ì,default_tablespace¸¦ »ç¿ëÇϰųª ȤÀº default_tablespace¿¡ ¹®ÀÚ¿­ÀÌ ¾ø´Â °æ¿ì, µ¥ÀÌÅͺ£À̽ºÀÇ µðÆúÆ® Å×ÀÌºí½ºÆäÀ̽º¸¦ »ç¿ëÇÕ´Ï´Ù.

query

SELECT , ¶Ç´Â VALUES command, ¹Ì¸® ÁغñµÈSELECT¶Ç´ÂVALUESÄõ¸®¸¦ ½ÇÇàÇÏ´Â EXECUTE ÀÔ´Ï´Ù.

ÁÖ¼®

ÀÌ Ä¿¸àµå´Â, SELECT INTO °ú À¯»çÇÑ ±â´ÉÀ» °¡Áý´Ï´Ù¸¸,SELECT INTO±¸¹®ÀÇ ´Ù¸¥ »ç¿ë ¹æ¹ý°ú È¥¶õÇÒ °¡´É¼ºÀÌ Àû±â ¶§¹®¿¡, À̰ÍÀ» »ç¿ëÇÏ´Â °ÍÀ» ¼±È£ÇÕ´Ï´Ù. °Ô´Ù°¡CREATE TABLE AS´Â,SELECT INTO°¡ Á¦°øÇÏ´Â ±â´ÉÀÇ ½´ÆÛ ¼¼Æ®¸¦ Á¦°øÇÕ´Ï´Ù.

PostgreSQL 8.0 Àü¿¡´Â, CREATE TABLE AS°¡ »ý¼ºÇÏ´Â Å×ÀÌºí¿¡´Â, Ç×»ó OID°¡ Æ÷ÇԵǾî ÀÖ¾ú½À´Ï´Ù. PostgreSQL 8.0¿¡¼­´Â, »ç¿ëÀÚ°¡ ¸í½ÃÀûÀ¸·ÎCREATE TABLE ASÄ¿¸àµåÀÇ °á°ú¿¡ OID¸¦ Æ÷ÇÔÇÒÁö ¾î¶³Áö¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ°Ô µÇ¾ú½À´Ï´Ù. OIDÀÇ À¯¹«¸¦ ¸í½ÃÇϰí ÀÖÁö ¾Ê´Â °æ¿ì,default_with_oidsȯ°æ¼³Á¤ º¯¼ö°¡ »ç¿ëµË´Ï´Ù. PostgreSQL 8.1¿¡¼­, ȯ°æ¼³Á¤ º¯¼öÀÇ µðÆúÆ®°¡ falseÀ̹ǷÎ, µðÆúÆ® µ¿ÀÛÀº 8.0 ÀÌÀüÀÇ ¸±¸®½º¿Í ´Ù¸¨´Ï´Ù. CREATE TABLE AS°¡ »ý¼ºÇÏ´Â Å×ÀÌºí¿¡¼­ OID°¡ ÇÊ¿äÇÑ ¾îÇø®ÄÉÀ̼ǿ¡¼­´Â, È®½ÇÈ÷ ÀûÀýÇÑ µ¿ÀÛÀ» ½Ã۱â À§ÇØ ¸í½ÃÀûÀ¸·ÎWITH (OIDS)¸¦ ºÎ¿©ÇØ¾ß ÇÕ´Ï´Ù.

¿¹

filmsÀÇ ÃÖ±ÙÀÇ Ç׸ñ¸¸À¸·Î ±¸¼ºµÇ´Â, »õ·Î¿îfilms_recentÅ×À̺íÀ» »ý¼ºÇÕ´Ï´Ù.

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

ÁغñµÈ ¹®ÀåÀ» »ç¿ëÇØ,filmsÅ×ÀÌºí¿¡¼­ ÃÖ±ÙÀÇ Ç׸ñ¸¸À¸·ÎºÎÅÍ ±¸¼ºµÇ´Â films_recent»õ·Î¿î Àӽà Å×À̺íÀ» ÀÛ¼ºÇÕ´Ï´Ù. ÀÌ »õ·Î¿î Å×À̺íÀº OID¸¦ °¡Á®, Ä¿¹Ô ½ÇÇà ½Ã, »èÁ¦µË´Ï´Ù.

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');

ȣȯ¼º

´ÙÀ½ÀÇ ¿¹¿Ü¿Í ÇÔ²²,CREATE TABLE AS´Â Ç¥ÁØSQL¿¡ ÁذÅÇÕ´Ï´Ù.

°ü·Ã Ç׸ñ

CREATE TABLE , EXECUTE , SELECT , SELECT INTO , VALUES