12-2.Àӽà Å×À̺í

1.¿À¶óŬ Àӽà Å×À̺í

Àӽà Å×À̺íÀº µ¥ÀÌÅ͸¦ Àá½Ã¸¸ º¸À¯ÇÏ´Â Å×À̺íÀÌ´Ù. ¿µ±¸ÀûÀÎ Á¤º¸°¡ ¾Æ´Ñ ÀϽÃÀûÀÎ Áß°£ µ¥ÀÌÅÍ°¡ ÇÊ¿äÇÒ ¶§ »ç¿ëÇÑ´Ù. ºä¿Í ºñ½ÁÇÏÁö¸¸ ºä´Â Á¤ÀǸ¸ °¡Áö´Âµ¥ ºñÇØ Àӽà Å×À̺íÀº ºñ·Ï ÀϽÃÀûÀÌÁö¸¸ ÁøÂ¥ µ¥ÀÌÅ͸¦ º¸À¯ÇÏ´Â Å×À̺íÀÌ´Ù.

Àӽà Å×À̺íÀÇ °³³äÀ̳ª È°¿ëÇÏ´Â ÀýÂ÷´Â DBMSº°·Î º°¹Ý ´Ù¸£Áö ¾ÊÁö¸¸ »ý¼º ¹®¹ý°ú µ¿ÀÛ ¹æ½ÄÀº ¾à°£ Â÷ÀÌ°¡ ÀÖ´Ù. ¸ÕÀú ¿À¶óŬÀÇ °æ¿ìºÎÅÍ »ìÆ캸ÀÚ.

 

CREATE GLOBAL TEMPORARY TABLE Å×À̺í¸í (

ÇÊµå ¼Ó¼º

) [ ON COMMIT DELETE ROWS ¶Ç´Â ON COMMIT PRESERVE ROWS];

 

ÀÏ¹Ý Å×À̺íÀ» »ý¼ºÇÏ´Â ¹®¹ý°ú °°µÇ Å×À̺í¸í ¾Õ¿¡ GLOBAL TEMPORARY¸¦ ÁöÁ¤ÇÏ´Â Á¡ÀÌ ´Ù¸£´Ù. ÇÊµå ¼Ó¼ºÀº ÀÏ¹Ý Å×À̺í°ú °°À¸¸ç µÚÂÊ¿¡ µ¥ÀÌÅÍ º¸À¯ ±â°£À» ÁöÁ¤ÇÏ´Â ¿É¼ÇÀ» ÁöÁ¤ÇÑ´Ù.

 

ON COMMIT DELETE ROWS : Ä¿¹ÔÇÏ¸é µ¥ÀÌÅÍ°¡ »ç¶óÁø´Ù. »ý·«½Ã ÀÌ ¿É¼ÇÀÌ µðÆúÆ®ÀÌ´Ù.

ON COMMIT PRESERVE ROWS : ¼¼¼ÇÁß¿¡´Â µ¥ÀÌÅ͸¦ À¯ÁöÇÏ¸ç ¼¼¼ÇÀÌ Á¾·áÇÏ¸é »ç¶óÁø´Ù.

 

ÀÓ½ÃÀûÀÎ µ¥ÀÌÅÍ´Â Àû´çÇÑ ¶§¿¡ ÀÚµ¿À¸·Î »èÁ¦ÇØ¾ß Çϴµ¥ ÀÌ ¿É¼ÇÀº µ¥ÀÌÅ͸¦ ¾ðÁ¦±îÁö À¯ÁöÇÒ °ÍÀΰ¡¸¦ ÁöÁ¤ÇÑ´Ù. Æ®·£Àè¼Ç ·¹º§ÀÏ ¼öµµ ÀÖ°í ¼¼¼Ç ·¹º§ÀÏ ¼öµµ ÀÖ´Ù. °£´ÜÇÑ Àӽà Å×À̺íÀ» »ý¼ºÇØ º¸ÀÚ.

 

CREATE GLOBAL TEMPORARY TABLE tGtt (

     name VARCHAR(20) PRIMARY KEY,

     score INT

);

 

À̸§°ú Á¡¼ö Çʵ带 °¡Áö´Â tGtt Àӽà Å×À̺íÀ» »ý¼ºÇß´Ù. µ¥ÀÌÅÍ º¸À¯ ±â°£ÀÌ ÀÓ½ÃÀûÀÏ »Ó ¾î¿³ÇÑ Å×À̺íÀ̶ó »ç¿ëÇÏ´Â ¹æ¹ýÀº °°´Ù. µ¥ÀÌÅ͸¦ ³Ö°í Àß µé¾î°¡´ÂÁö Á¶È¸ÇØ º¸ÀÚ.

 

INSERT INTO tGtt VALUES ('±èÇѽ½', 95);

INSERT INTO tGtt VALUES ('±èÇÑ°á', 80);

SELECT * FROM tGtt;

Àß ÀúÀåÇÏ°í Á¶È¸µµ ÀÌ»ó ¾ø´Ù. ±×·¯³ª µ¥ÀÌÅ͸¦ ¿µ±¸ÀûÀ¸·Î ÀúÀåÇÏÁö ¾Ê°í ÀÏÁ¤ ½ÃÁ¡ÀÌ µÇ¸é »ç¶óÁø´Ù. Ä¿¹ÔÇÑ ÈÄ ´Ù½Ã Á¶È¸ÇØ º¸ÀÚ.

 

COMMIT;

Æ®·£Àè¼Ç ·¹º§ÀÇ Àӽà Å×À̺íÀº Æ®·£Àè¼Ç ÁøÇà Áß¿¡¸¸ µ¥ÀÌÅ͸¦ °¡Áø´Ù. ±×·¡¼­ Æ®·£Àè¼ÇÀ» Á¾·áÇÏ´Â COMMIT ¸í·ÉÀ» ³»¸®´Â Áï½Ã µ¥ÀÌÅ͸¦ »èÁ¦ÇÑ´Ù. ROLLBACKµµ ¹°·ÐÀÌ¸ç µÎ ¸í·É ¸ðµÎ TRUNCATE TABLE ¸í·É°ú È¿°ú°¡ °°´Ù.

À̹ø¿¡´Â ON COMMIT PRESERVE ROWS ¿É¼ÇÀ» ÁÖ¾î ¼¼¼Ç ·¹º§·Î ´Ù½Ã »ý¼ºÇØ º¸ÀÚ. °°Àº À̸§À¸·Î Å×À̺íÀ» ¶Ç ¸¸µé ¼ö ¾øÀ¸´Ï ±âÁ¸ Å×À̺íÀ» »èÁ¦ÇÏ°í »õ·Î ¸¸µé¾î¾ß ÇÑ´Ù. Àӽà Å×ÀÌºíµµ Å×À̺íÀ̹ǷΠDROP TABLE·Î »èÁ¦ÇÑ´Ù.

 

DROP TABLE tGtt;

CREATE GLOBAL TEMPORARY TABLE tGtt (

     name VARCHAR(20) PRIMARY KEY,

     score INT

) ON COMMIT PRESERVE ROWS;

 

ÀÌ·¸°Ô ¸¸µç Àӽà Å×À̺íÀº COMMIT Çصµ µ¥ÀÌÅÍ°¡ »ç¶óÁöÁö´Â ¾ÊÀ¸¸ç ¼¼¼ÇÁß¿¡´Â µ¥ÀÌÅ͸¦ À¯ÁöÇÑ´Ù. ¹°·Ð ROLLBACK ¸í·ÉÀ» ³»¸®¸é »ðÀÔÀ» Ãë¼ÒÇÑ´Ù. ¿¬°áÀ» À¯ÁöÇÏ°í ÀÖ´Â Áß¿¡´Â µ¥ÀÌÅ͸¦ °è¼Ó º¸À¯Çϴµ¥ ÀÌ ¸»Àº °ð ¿¬°áÀ» ²÷À¸¸é »ç¶óÁø´Ù´Â ¾ê±âÀÌ´Ù.

°ú¿¬ ±×·±Áö Äõ¸®Ã¢À» Á¾·áÇß´Ù°¡ Àç½ÇÇàÇÑ ÈÄ Á¶È¸ÇØ º¸ÀÚ. ÀÌÀü ¼¼¼Ç¿¡¼­ »ðÀÔÇÑ µ¥ÀÌÅÍ°¡ »ç¶óÁö°í ¾ø´Ù. ·¹Äڵ带 ´Ù½Ã »ðÀÔÇÏ¸é µ¥ÀÌÅÍ°¡ ³ªÅ¸³­´Ù. ÀÌ »óÅ¿¡¼­ Äõ¸®Ã¢À» Çϳª ´õ ¿­¾î ¼¼¼Ç2¸¦ ¿¬°áÇÏ°í Á¶È¸ÇØ º¸ÀÚ. ½ºÅ°¸¶´Â ¿µ±¸ÀûÀ¸·Î ÀúÀåµÇ¾î Å×À̺íÀº °øÀ¯ÇÏÁö¸¸ ´Ù¸¥ ¼¼¼Ç¿¡¼­´Â µ¥ÀÌÅÍ°¡ º¸ÀÌÁö ¾Ê´Â´Ù. ¼¼¼Ç2¿¡¼­ ´ÙÀ½ µ¥ÀÌÅ͸¦ ³Ö¾î º¸ÀÚ.

 

INSERT INTO tGtt VALUES ('±è±Ô¹Î', 70);

SELECT * FROM tGtt;

¼¼¼Ç1¿¡¼­ »ðÀÔÇÑ µ¥ÀÌÅÍ´Â º¸ÀÌÁö ¾ÊÁö¸¸ ÀÚ½ÅÀÌ ¹æ±Ý ³ÖÀº µ¥ÀÌÅÍ´Â Àß º¸ÀÌ´Â°Ô ´ç¿¬ÇÏ´Ù. ÀÌ »óÅ¿¡¼­ ¼¼¼Ç1·Î À̵¿ÇÏ¿© Á¶È¸ÇØ º¸¸é ¼¼¼Ç2°¡ »ðÀÔÇÑ ·¹ÄÚµå´Â º¸ÀÌÁö ¾Ê´Â´Ù.

¶È°°Àº Å×ÀÌºí¿¡ µ¥ÀÌÅ͸¦ »ðÀÔÇßÁö¸¸ ¼¼¼Çº°·Î ÀÚ½ÅÀÇ µ¥ÀÌÅ͸¦ °³º°ÀûÀ¸·Î º¸À¯ÇÔÀ» ¾Ë ¼ö ÀÖ´Ù. Àӽà Å×À̺íÀº µ¥ÀÌÅ͸¦ µð½ºÅ©¿¡ ¿µ±¸ ÀúÀåÇÏÁö ¾Ê°í ¼¼¼ÇÀÇ ¸Þ¸ð¸®¿¡ ÀϽÃÀûÀ¸·Î¸¸ º¸À¯ÇÑ´Ù. ¼¼¼Ç°£¿¡´Â µ¥ÀÌÅ͸¦ °øÀ¯ÇÒ ¼ö ¾øÁö¸¸ ´ë½Å Á¶È¸³ª ó¸® ¼Óµµ°¡ ±²ÀåÈ÷ ºü¸£´Ù.

»õ·Î Á¢¼ÓÇÒ ¶§¸¶´Ù Àӽà Å×À̺íÀº Ç×»ó ÅÖ ºó »óÅ·Π½ÃÀÛÇÑ´Ù. ¸¶À½´ë·Î µ¥ÀÌÅ͸¦ »ðÀÔ, »èÁ¦, °»½ÅÇÏ¸ç »ç¿ëÇÏ´Ù°¡ ¼¼¼Ç ³¡³»°í ³ª°¡ ¹ö¸®¸é ÀÚµ¿À¸·Î »èÁ¦µÈ´Ù. ÀúÀå °ø°£ÀÌ ºÐ¸®µÇ¾î ÀÖÀ¸´Ï ¶ôÀÌ °É¸®Áö ¾Ê¾Æ ¼¼¼Ç³»¿¡¼­´Â ÀÚÀ¯·Ó°Ô »ç¿ëÇÒ ¼ö ÀÖ´Ù.

¿À¶óŬÀÇ Àӽà Å×À̺íÀº µ¥ÀÌÅ͸¸ ÀÓ½ÃÀûÀÏ »Ó Å×À̺í ÀÚü´Â ¿µ±¸ÀûÀ¸·Î À¯ÁöÇÑ´Ù. Å×À̺íÀ» Áö¿ì·Á¸é ÀÏ¹Ý Å×À̺í°ú ¸¶Âù°¡Áö·Î DROP TABLE ¸í·ÉÀ» »ç¿ëÇÑ´Ù. ´Ü, ´Ù¸¥ ¼¼¼Ç¿¡¼­ »ç¿ëÁßÀÌ¸é »èÁ¦ÇÒ ¼ö ¾ø´Ù.

2.SQL Server Àӽà Å×À̺í

¿À¶óŬÀÇ Àӽà Å×À̺íÀº µ¥ÀÌÅ͸¸ ÀÓ½ÃÀûÀε¥ ºñÇØ SQL Server´Â Å×À̺í±îÁöµµ ÀÓ½ÃÀûÀÌ´Ù. º°µµÀÇ »ý¼º ¹®¹ýÀº ¾ø°í À̸§À¸·Î Àӽà ¿©ºÎ¸¦ °áÁ¤ÇÑ´Ù. Å×À̺í À̸§¿¡ #À» ºÙÀÌ¸é ¸¸µç »ç¶÷¸¸ ¾µ ¼ö ÀÖ´Â Áö¿ª Àӽà Å×À̺íÀÌ°í ##À» ºÙÀÌ¸é ´©±¸³ª ¾µ ¼ö ÀÖ´Â Àü¿ª Àӽà Å×À̺íÀÌ´Ù.

µÑ ´Ù tempdb¿¡ »ý¼ºµÇ¸ç ¼¼¼Ç Á¾·á½Ã ÀÚµ¿ »èÁ¦ÇÏ´Â Á¡Àº °°´Ù. Àӽà Å×ÀÌºí¸¸ ÀúÀåÇÏ´Â º°µµÀÇ ½Ã½ºÅÛ DB°¡ µû·Î ÀÖ´Ù. ´ÙÀ½ ¸í·ÉÀ¸·Î Àӽà Å×À̺íÀ» ¸¸µé¾î º¸ÀÚ. ÁøÂ¥ Å×À̺íÀ» ¸¸µå´Â ¸í·É°ú ¶È°°µÇ ´Ù¸¸ Å×À̺í À̸§ ¾Õ¿¡ #À» ºÙÀδٴ Á¡¸¸ ´Ù¸£´Ù.

 

CREATE TABLE #tTemp (

     name VARCHAR(20) PRIMARY KEY,

     score INT

);

 

µ¥ÀÌÅ͸¦ ³Ö¾î º¸°í Á¶È¸ÇØ º¸ÀÚ. ¼Ò¼Ó DB¸¦ ¹àÈ÷Áö ¾Ê¾Æµµ Ç×»ó tempdb¿¡ ÀÖ´Â °ÍÀ¸·Î °£ÁÖÇϹǷΠ±»ÀÌ tempdb.dbo.#tTemp·Î ÀûÀ» ÇÊ¿ä ¾øÀ¸¸ç À̸§¸¸ ¹àÈ÷¸é µÈ´Ù.

 

INSERT INTO #tTemp VALUES ('±èÇѽ½', 95);

INSERT INTO #tTemp VALUES ('±èÇÑ°á', 80);

INSERT INTO #tTemp VALUES ('±è±Ô¹Î', 70);

SELECT * FROM #tTemp;

Àӽà Å×ÀÌºíµµ ¾ö¿¬ÇÑ Å×À̺íÀ̸ç À̸§ ¾Õ¿¡ #ÀÌ ºÙ¾î ÀÖÀ» »Ó ¸¸µé°í »ç¿ëÇÏ´Â ¹æ¹ýÀº ÀÏ¹Ý Å×À̺í°ú °°´Ù. »ðÀÔ, »èÁ¦, °»½ÅÀº ¹°·ÐÀÌ°í ±¸Á¶ º¯°æÀ̳ª À妽º±îÁö ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù. ´Ü, ¿µ±¸ÀûÀ¸·Î ÀúÀåÇÏ´Â Å×À̺íÀÌ ¾Æ´Ï¾î¼­ ¿Ü·¡Å° Á¦¾àÀº °É ¼ö ¾ø´Ù.

Áö¿ª Àӽà Å×À̺íÀº ÇöÀç Äõ¸®Ã¢¿¡¼­¸¸ ¾µ ¼ö ÀÖ´Ù. Ctrl+NÀ» ´­·¯ »õ Äõ¸®Ã¢À» ¿­¸é ¼¼¼ÇÀÌ ´Þ¶ó º¸ÀÌÁö ¾Ê´Â´Ù. Äõ¸®Ã¢À» ´Ý¾Ò´Ù°¡ ´Ù½Ã ¿­°Å³ª SQL Server¸¦ Àç½ÃÀÛÇصµ Å×À̺íÀº »ç¶óÁø´Ù. µ¥ÀÌÅ͸¸ »ç¶óÁö´Â °ÍÀÌ ¾Æ´Ï¶ó Å×À̺í ÀÚü°¡ ¾ø¾îÁø´Ù.

Å×À̺í À̸§À» ##tTemp·Î ÁöÁ¤ÇÏ¿© Àü¿ª Àӽà Å×À̺í·Î »ý¼ºÇÏ¸é ´Ù¸¥ ¼¼¼Ç¿¡¼­µµ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¹°·Ð Å×À̺í À̸§Àº ¾çÂÊ¿¡¼­ ¹Ì¸® ¾Ë°í ÀÖ¾î¾ß ÇÑ´Ù. ÀÓ½Ã¿Í Àü¿ªÀº »óÃæµÇ´Â °³³äÀ̶ó ½Ç¿ë¼ºÀÌ ¶³¾îÁø´Ù. Àü¿ªµµ ¼¼¼Ç Á¾·á½Ã ÀÚµ¿ »èÁ¦µÇ´Â °ÍÀº ¸ÅÇÑ°¡ÁöÀÌ´Ù.

´ÙÀ½Àº MariaDBÀÇ Àӽà Å×ÀÌºí¿¡ ´ëÇØ ¾Ë¾Æº¸ÀÚ. Å×ÀÌºí »ý¼º¹®¿¡ TEMPORARY Å°¿öµå¸¦ ÁöÁ¤Çϸé Àӽà Å×À̺íÀÌ µÈ´Ù. º°µµÀÇ Å°¿öµå·Î Àӽà ¿©ºÎ¸¦ ¸íÈ®È÷ ÁöÁ¤ÇϹǷΠÅ×À̺í À̸§Àº ¾Æ¹«·¡µµ »ó°ü¾ø´Ù.

 

CREATE TEMPORARY TABLE tTemp (

     name VARCHAR(20) PRIMARY KEY,

     score INT

);

 

ÀÏ¹Ý Å×À̺í°ú »ç¿ëÇÏ´Â ¹æ½ÄÀº °°´Ù. Àӽà Å×ÀÌºí¿¡ µ¥ÀÌÅ͸¦  »ðÀÔÇÏ°í Á¶È¸ÇØ º¸ÀÚ.

 

INSERT INTO tTemp VALUES ('±èÇѽ½', 95);

INSERT INTO tTemp VALUES ('±èÇÑ°á', 80);

INSERT INTO tTemp VALUES ('±è±Ô¹Î', 70);

SELECT * FROM tTemp;

 

Àß »ðÀԵǰí Àß Á¶È¸µÈ´Ù. ¼¼¼Ç°£¿¡ µ¥ÀÌÅ͸¦ À¯ÁöÇϹǷΠCOMMIT Çصµ »ç¶óÁöÁö ¾ÊÁö¸¸ ´Ù¸¥ ¼¼¼Ç¿¡¼­´Â º¸ÀÌÁö ¾ÊÀ¸¸ç ¼¼¼Ç Á¾·á½Ã Å×À̺íÀ» ÀÚµ¿ »èÁ¦ÇÑ´Ù. Àӽà Å×À̺íÀ» ¸¸µå´Â ¹®¹ýÀº ¿À¶óŬ°ú ºñ½ÁÇÏ°í °ü¸®ÇÏ´Â ¹æ½ÄÀº SQL Server¿Í ºñ½ÁÇÏ´Ù.

3.¼øÂ÷Àû ó¸®

Àӽà Å×À̺íÀº ÀϽÃÀûÀ¸·Î¸¸ Á¸ÀçÇϹǷΠÀÓ½ÃÀûÀΠ󸮿¡ À¯¿ëÇÏ´Ù. ¿øº» Å×À̺íÀÇ »çº»À» ¶á ÈÄ ÀÚÀ¯·Ó°Ô Á¶ÀÛ, º¯ÇüÇØ º¼ ¼ö ÀÖÀ¸¸ç ¾ÆÁÖ º¹ÀâÇÑ ÀÛ¾÷À» Àß°Ô ³ª´©¾î ´Ü°èÀûÀ¸·Î ó¸®ÇÒ ¼ö ÀÖ´Ù. »çÀå´ÔÀÌ Æ¯¼ö ÀÓ¹«¸¦ ¼öÇàÇÒ Å½ºÅ© Æ÷½º ±¸¼ºÀ» Áö½ÃÇߴµ¥ ¿ö³« Áß¿äÇÑ ÇÁ·ÎÁ§Æ®¶ó ¼±¹ß ±âÁØÀÌ ±î´Ù·Ó´Ù.

 

¨ç 2016³â ÀÌÀü ÀÔ»çÀÚ Áß ¿ù±Þ »óÀ§ 10¸í ¼±¹ß

¨è ¼±¹ßµÈ ³²Á÷¿øÀÇ Æò±Õ ¼ºÃëµµº¸´Ù ³·Àº ³²Á÷¿øÀº Á¦¿Ü

¨é Àüü Á÷¿øÀÇ Æò±Õ ¿ù±Þº¸´Ù ³·Àº ¿©Á÷¿øÀº Á¦¿Ü

¨ê ¿ù±Þ 300 ³ÑÀ¸¸é¼­ ¾ÆÁ÷µµ ´ë¸®ÀÎ ²ÃÅë Á÷¿ø Á¦¿Ü

¨ë ¿ù±Þ 380 ³ÑÀ¸¸é¼­ °úÀåÀÎ Á÷¿øÀº °æÇèÀÌ Ç³ºÎÇϹǷΠÆ÷ÇÔ

 

ÀÌ ¸ðµç Á¶°ÇÀ» ¸¸Á·ÇÏ´Â ÀοøÀ» Äõ¸® Çϳª·Î »Ì¾Æ ³»±â´Â ½±Áö ¾Ê´Ù. ¹°·Ð ºÒ°¡´ÉÇÏÁö´Â ¾ÊÁö¸¸ °úÁ¤ÀÌ º¹ÀâÇÏ°í Äõ¸®¹®µµ ³­ÇØÇØÁø´Ù. ÀÌ·² ¶§´Â Àӽà Å×À̺íÀ» ¸¸µé¾î ¼ø¼­´ë·Î Çϳª¾¿ ó¸®Çϸé Á÷°üÀûÀÌ°í ½±´Ù. °¢ ´Ü°èº°·Î °á°ú¼ÂÀÌ ¾î¶»°Ô ¹Ù²î´ÂÁö °üÂûÇØ º¸ÀÚ. ¸ÕÀú Àӽà Å×À̺íÀ» »ý¼ºÇÑ´Ù.

 

CREATE GLOBAL TEMPORARY TABLE tTaskForce AS SELECT * FROM tStaff;

 

tStaffÀÇ ±¸Á¶¸¦ ±×´ë·Î º¹»çÇÏ¿© tTaskForce Àӽà Å×À̺íÀ» »ý¼ºÇÑ´Ù. ÇÊµå ¸ñ·Ï¸¸ º¹»çÇÒ »ÓÀ̸ç Àӽà Å×À̺íÀ» »ý¼ºÇϸ鼭 µ¥ÀÌÅͱîÁö ÇÑ ¹ø¿¡ º¹»çÇØ ³ÖÀ» ¼ö´Â ¾ø´Ù. Å×ÀÌºí »ý¼º ÈÄ µ¥ÀÌÅÍ´Â µû·Î »ðÀÔÇÑ´Ù.

 

INSERT INTO tTaskForce SELECT * FROM (SELECT * FROM tStaff

WHERE joindate <= '20160101' ORDER BY salary DESC) WHERE rownum <= 10;

 

2016³â ÀÌÀü ÀÔ»çÀÚ´Â 12¸íÀε¥ À̸¦ ¿ù±Þ ³»¸²Â÷¼øÀ¸·Î Á¤·ÄÇÏ¿© »óÀ§ 10¸íÀ» °ñ¶ó °á°ú¼ÂÀ» tTaskForce Àӽà Å×ÀÌºí¿¡ ÀúÀåÇÑ´Ù. Àӽà Å×À̺íÀ» ¸ÕÀú ¸¸µé°í ¿øº»À» Á¤·ÄÇÒ ÈÄ ÀϺΠ·¹Äڵ常 Àбâ À§ÇØ ¼­ºêÄõ¸®°¡ ÇÊ¿äÇÏ´Ù. SQL Server¿Í MariaDB´Â Àӽà Å×ÀÌºí »ý¼º°ú µ¥ÀÌÅÍ »ðÀÔ °úÁ¤À» ÇÑ ¹ø¿¡ ó¸®ÇÒ ¼ö ÀÖ´Ù.

 

SQL Server : SELECT TOP 10 * INTO #tTaskForce FROM tStaff

WHERE joindate <= '20160101' ORDER BY salary DESC;

MariaDB : CREATE TEMPORARY TABLE tTaskForce AS SELECT * FROM tStaff

WHERE joindate <= '20160101' ORDER BY salary DESC LIMIT 10;

 

µÑ ´Ù Àӽà Å×À̺íÀ» »ý¼ºÇϸ鼭 ¿øº»ÀÇ ½ºÅ°¸¶¿Í µ¥ÀÌÅ͸¦ Çѹ濡 °¡Á®¿Â´Ù. ¶ÇÇÑ ÀϺΠ·¹Äڵ带 °¡Á®¿À´Â TOP, LIMIT ¹®¹ýÀÌ µû·Î ÀÖ¾î ¼­ºêÄõ¸®µµ ÇÊ¿ä ¾ø´Ù. ÀÌÈÄÀÇ °úÁ¤Àº SQL ServerÀÇ Å×À̺í À̸§¸¸ #tTaskForceÀÏ »Ó ÄÚµå´Â °°´Ù. ¿©±â±îÁö ´ÙÀ½ 10¸íÀÇ È常¦ ¼±Á¤ÇÑ´Ù.

´ÙÀ½Àº ³²Á÷¿øÀÇ Æò±Õ ¼ºÃëµµº¸´Ù ³·Àº ÀÏ ¸øÇÏ´Â ³²Á÷¿øÀ» ¼Ô¾Æ³½´Ù. ¼­ºêÄõ¸®·Î ¼±¹ßµÈ ³²Á÷¿ø Æò±Õ ¼ºÃëµµ¸¦ ¸ÕÀú ±¸ÇÏ°í ±× º¸´Ù ³·Àº ³²Á÷¿øÀ» Áö¿ö ¹ö¸®¸é µÈ´Ù.

 

DELETE FROM tTaskForce WHERE score < (SELECT AVG(score) FROM tTaskForce

WHERE gender = '³²') AND gender = '³²';

 

ÀÌ ´Ü°è¿¡¼­ 4¸íÀÌ Å»¶ôÇÏ°í 6¸í¸¸ ³²´Â´Ù. ¿øº»ÀÌ ¾Æ´Ñ Àӽà Å×À̺íÀ̹ǷΠ¸¶À½´ë·Î Áö¿öµµ »ó°ü¾ø´Ù. ´ÙÀ½Àº Æò±Õ ¿ù±Þº¸´Ù Àû°Ô ¹Þ´Â ¿©Á÷¿øÀ» Á¦¿ÜÇÑ´Ù. ¿©Á÷¿øÀÇ Æò±Õ ¿ù±ÞÀÌ ¾Æ´Ñ Àüü Á÷¿øÀÇ Æò±Õ ¿ù±Þ°ú ºñ±³ÇÑ´Ù.

 

DELETE FROM tTaskForce WHERE salary <

(SELECT AVG(salary) FROM tStaff) AND gender = '¿©';

 

1¸íÀÌ ´õ Å»¶ôÇÏ°í 5¸íÀÌ ³²´Â´Ù. º¸´Ù½ÃÇÇ Àӽà Å×À̺íÀº »çº»ÀÏ »ÓÀ̾ ÁöÁö°í ºº°í ¸¶À½´ë·Î Á¶ÀÛÇÒ ¼ö ÀÖ´Ù. Ȥ½Ã ½Ç¼öÇÏ´õ¶óµµ º° »ó°ü¾øÀ¸¸ç ¾î¶² ½Ãµµ¸¦ Çصµ ºÎ´ã ¾ø´Ù. ´ÙÀ½À¸·Î ¸¸³â ´ë¸®´Â Á¦¿ÜÇÏ°í ¸¸³â °úÀåÀº Æ÷ÇÔÇÑ´Ù. ´ÙÀ½ µÎ Äõ¸®¹®À» ¼ø¼­´ë·Î ½ÇÇàÇÑ´Ù.

 

DELETE FROM tTaskForce WHERE salary > 300 AND grade = '´ë¸®';

INSERT INTO tTaskForce SELECT * FROM tStaff WHERE salary > 380 AND grade = '°úÀå';

 

¸¸³â ´ë¸®ÀÎ Á¤¸ùÁÖ´Â ¹«´ÉÇÏ´Ï Á¦¿ÜÇÏ°í °æÇèÀÌ Ç³ºÎÇÑ ÀÌÀ²°î °úÀåÀº Æ÷ÇÔ½ÃŲ´Ù. Áö¿ì´Â °Í »Ó¸¸ ¾Æ´Ï¶ó ´Ù½Ã »ðÀÔÇÏ´Â °Íµµ ¾ðÁ¦µçÁö °¡´ÉÇÏ´Ù. ÃÖÁ¾ÀûÀ¸·Î 5¸íÀÇ À¯´ÉÇÑ Æ¯°ø´ë°¡ ³²´Â´Ù.

ÃÖÁ¾ °á°ú¸¦ µµÃâÇÑ ÈÄ Àӽà Å×À̺íÀº ´õ ÀÌ»ó ÇÊ¿ä ¾øÀ¸¹Ç·Î »èÁ¦ÇÑ´Ù. ¿À¶óŬÀº DROP TABLE ¸í·ÉÀ¸·Î »èÁ¦Ç쵂 ±×³É ³»¹ö·Á µÖµµ ´ÙÀ½ ¼¼¼Ç¿¡¼­ µ¥ÀÌÅÍ´Â ÀÚµ¿À¸·Î »ç¶óÁø´Ù. SQL Server¿Í MariaDB´Â ±×³É ¹æÄ¡ÇØ µÎ¸é Å×À̺íÁ¶Â÷µµ ´ÙÀ½ ½ÃÀ۽à ¾Ë¾Æ¼­ »èÁ¦ÇÑ´Ù.

»çÀå´ÔÀÌ Á¦½ÃÇÑ Á¶°ÇÀÌ ¾Æ¹«¸® º¹ÀâÇصµ ÇÑ´Ü°è ÇÑ´Ü°è ¹â¾Æ ³ª°¡¸é ¾î·ÆÁö ¾Ê´Ù. ƯÁ¤ Áý´ÜÀº ²Ãº¸±â ½ÈÀ¸´Ï »©¶ó°Å³ª ´©±¸´Â ÀÏ ÀßÇÏ´Ï ²À Æ÷ÇÔ½ÃÅ°¶ó´Â Ưº° Áö½Ãµµ ¾ó¸¶µçÁö ¼ö¿ëÇÒ ¼ö ÀÖ´Ù. Áß°£ Áß°£¿¡ °æ°ú¸¦ »ìÆì º¼ ¼ö ÀÖ¾î Àß µÇ°í ÀÖ´ÂÁö È®ÀÎÇϸç ÀÛ¾÷ÇÒ ¼ö ÀÖ´Ù.

ÀÌ Á¤µµ Á¶°ÇÀ̸é Äõ¸®¹® Çϳª·Îµµ ¿øÇÏ´Â °á°ú¼ÂÀ» ¸¸µé¾î ³¾ ¼ö ÀÖ´Ù. ¼­ºêÄõ¸®·Î Áß°£ Áý°è¸¦ ±¸ÇÏ°í Á¦¿Ü, Æ÷ÇÔ ¿©ºÎ¿¡ µû¶ó AND, OR Á¶°ÇÀ» Àß Á¶ÇÕÇÏ¸é µÈ´Ù. ±×·¯³ª ±²ÀåÈ÷ ±æ°í º¹ÀâÇØ ÇÑ ¹ø¿¡ ¿øÇÏ´Â °ÍÀ» Á¤È®È÷ ÀÛ¼ºÇϱ⠾î·Æ°í Áߺ¹µµ ½ÉÇÏ´Ù. ÀÌ¿¡ ºñÇØ Àӽà Å×À̺íÀº À¯¿¬¼ºÀÌ ³ô´Ù.

 

l ÇÑ ¹ø¿¡ ¸ðµç °ÍÀ» ´Ù ó¸®ÇÒ ÇÊ¿ä ¾øÀÌ ´Ü°è¸¦ ¹â¾Æ ¼øÂ÷ÀûÀ¸·Î ó¸®ÇÑ´Ù. ó¸® °úÁ¤ÀÌ ±æ°í º¹ÀâÇÏ´Ù¸é °úÁ¤À» ºÐÇØÇÏ¿© Çϳª¾¿ ó¸®ÇÏ´Â °ÍÀÌ ¸íÈ®Çϸç Â÷ÈÄ À¯Áö, º¸¼öµµ ½±´Ù.

l ¿øº»À» ²À º¸Á¸ÇÒ Àǹ«°¡ ¾ø´Ù. Áß°£ °á°ú¸¦ ±¸ÇÏ´Â ¼­ºêÄõ¸®³ª ¿¬»ê½ÄÀº °úÇÏ°Ô º¹ÀâÇϰųª ¹Ýº¹ÀÌ ½ÉÇØ ºñÈ¿À²ÀûÀÌ´Ù. Àӽà Å×À̺íÀº Çʵ带 Á÷Á¢ ¹Ù²ã °¡¸ç ÀÛ¾÷ÇÒ ¼ö ÀÖ¾î ÀÚÀ¯µµ°¡ ³ô´Ù.

l ¾ÆÁ÷ ¹è¿ìÁö ¾ÊÀº ½ºÅ©¸³Æ®°¡ ÇÊ¿äÇØ ½Ç½À¿¡´Â Á¦¿ÜÇßÁö¸¸ ¾ÕÂÊ Ã³¸® °á°ú¿¡ µû¶ó µÚÂÊ Ã³¸® ¹æ½ÄÀ» °¡º¯ÀûÀ¸·Î °áÁ¤ÇÒ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î 3¹ø 󸮱îÁö ¼öÇàÇÑ ÈÄ¿¡µµ ³²Àº ÀοøÀÌ 5¸í ÀÌ»óÀΰ¡¿¡ µû¶ó ¸¸³â ´ë¸®¿Í ¸¸³â °úÀåÀÇ Æ÷ÇÔ ¿©ºÎ¸¦ ź·ÂÀûÀ¸·Î °áÁ¤ÇÏ´Â ½ÄÀÌ´Ù.

 

SQLÀº ¾Æ¹«¸® ±æ¾îµµ ÇϳªÀÇ ¸í·ÉÀ¸·Î ¸ðµç °ÍÀ» ÀÏ°ý ó¸®ÇÏ´Â °ÍÀÌ ¹Ì´öÀÌ¸ç ¼º´É»óÀ¸·Îµµ ±ÇÀåÇÑ´Ù. ±×·¯³ª ÀýÂ÷ÀûÀÎ Äڵ忡 Àͼ÷ÇÑ »ç¶÷¿¡°Ô´Â ½±Áö ¾ÊÀ¸¸ç ¶§·Î´Â ºÒ°¡´ÉÇÑ °æ¿ìµµ ÀÖ´Ù. ÀÌ·² ¶§´Â ÀýÂ÷¸¦ ºÐÇØÇÏ¿© Àӽà Å×À̺í·Î ÀÛ¾÷ÇÏ´Â °ÍÀÌ Á÷°üÀûÀÌ´Ù.

¿¬½À ¹®Á¦

4.tCityÀÇ µµ½Ã Áß Àü¶óµµ Áö¿ª, ¸éÀû 500 ÃÊ°ú µµ½Ã¸¦ Æ÷ÇÔÇÏ°í Àα¸ 50 ¹Ì¸¸Àº Á¦¿ÜÇÑ ÈÄ ¸éÀûÀ» ¸¸Æò ´ÜÀ§·Î ¹Ù²Ù¾î Ãâ·ÂÇ϶ó.

4.°á°ú¼Â ÀçÈ°¿ë

ƯÁ¤ Á¶°ÇÀ¸·Î °Ë»öÇÑ ¶È°°Àº °á°ú¼ÂÀÌ ¿©·¯ ¹ø ÇÊ¿äÇÑ °æ¿ì°¡ ÀÖ´Ù. ¿¹¸¦ µé¾î ¿µ¾÷ºÎ ³²Á÷¿ø¸¸À» ´ë»óÀ¸·Î ¾î¶² ÀÛ¾÷À» ÇÑ´Ù¸é ´ÙÀ½ Äõ¸®¹®À¸·Î Å×À̺íÀ» ¸¸µç´Ù. Á¶°ÇÀý¿¡ ¿µ¾÷ºÎ ³²Á÷¿øÀ» ÁÖ¾úÀ¸´Ï ÇÊµå ¸ñ·Ï¿¡ depart¿Í gender´Â ±»ÀÌ Æ÷ÇÔÇÒ ÇÊ¿ä ¾ø´Ù.

 

SELECT name, salary, score FROM tStaff WHERE depart = '¿µ¾÷ºÎ' AND gender = '³²';

´Ù¼¸¸íÀÇ ³²ÀÚ Á÷¿øÀÌ °Ë»öµÇ¸ç À̰͵µ Äõ¸®¹®À¸·Î ¸¸µç ÇϳªÀÇ Å×À̺íÀÌ´Ù. ÀÌ ÁýÇÕÀ» ´ë»óÀ¸·Î Æò±Õ ¿ù±Þ ÀÌ»óÀÎ Á÷¿øÀ» Á¶»çÇÑ´Ù¸é ´ÙÀ½ Äõ¸®¹®À» ÀÛ¼ºÇÑ´Ù. FROM Àý¿¡ ´ë»ó Å×À̺íÀ» ¹àÇô¾ß ÇÏ°í Æò±Õ ¿ù±ÞÀ» ±¸ÇÏ´Â ¼­ºêÄõ¸®¿¡¼­µµ Å×À̺íÀÌ ÇÊ¿äÇÏ´Ù.

 

SELECT * FROM

(

     SELECT name, salary, score FROM tStaff WHERE depart = '¿µ¾÷ºÎ' AND gender = '³²'

) A

WHERE salary >= (

     SELECT avg(salary) FROM

     (

          SELECT name, salary, score FROM tStaff WHERE depart = '¿µ¾÷ºÎ' AND gender = '³²'

     ) B

);

 

º¸´Ù½ÃÇÇ ¶È°°Àº Äõ¸®¹®ÀÌ µÎ ¹ø ¹Ýº¹µÈ´Ù. ¹Ýº¹À» ÇÇÇÏ·Á¸é ¿µ¾÷ºÎ ³²Á÷¿ø¸¸À» ¸ð¾Æ º°µµÀÇ Å×À̺íÀ» ¸¸µç ÈÄ ÀÌ Å×À̺íÀ» »ç¿ëÇÏ¸é µÈ´Ù. ÇÑ ¹ø¸¸ ¾µ Äõ¸®¸¦ À§ÇØ »çº» Å×À̺íÀ» ¸¸µå´Â °ÍÀº ºÎ´ã½º·´°í ÀýÂ÷µµ º¹ÀâÇØ Àӽà Å×À̺íÀ» ¾²´Â °ÍÀÌ ´õ ³´´Ù. ´ÙÀ½ Äõ¸®·Î À̸§, ¿ù±Þ, ¼ºÃëµµ¸¸À» °¡Áö´Â Àӽà Å×À̺íÀ» »ý¼ºÇÏ°í ¿µ¾÷ºÎ ³²Á÷¿ø¸¸ Á¶È¸ÇÑ´Ù.

 

CREATE GLOBAL TEMPORARY TABLE tBusiMan AS SELECT name, salary, score FROM tStaff;

INSERT INTO tBusiMan SELECT name, salary, score FROM tStaff

WHERE depart = '¿µ¾÷ºÎ' AND gender = '³²';

 

SQL Server³ª MariaDB´Â ÀÌ µÎ °úÁ¤À» ÇÑ ¹ø¿¡ ó¸®ÇÒ ¼ö ÀÖ´Ù.

 

SQL Server: SELECT name, salary, score INTO #tBusiMan FROM tStaff

WHERE depart = '¿µ¾÷ºÎ' AND gender = '³²';

MariaDB : CREATE TEMPORARY TABLE tBusiMan AS

SELECT name, salary, score FROM tStaff WHERE depart = '¿µ¾÷ºÎ' AND gender = '³²';

 

¿µ¾÷ºÎ ³²Á÷¿ø ´Ù¼¸ ¸íÀ¸·Î¸¸ ±¸¼ºÇÑ Àӽà Å×À̺íÀ» »ý¼ºÇß´Ù. Áß°£¿¡ ·¹Äڵ带 ´õ »ðÀÔ, »èÁ¦ÇÒ ¼ö ÀÖ°í ƯÁ¤ °ªÀ» Á¶ÀÛÇÏ´Â °Íµµ ¾ó¸¶µçÁö °¡´ÉÇÏ´Ù. ÀÌÁ¦ Àӽà Å×ÀÌºí¿¡¼­ °ªÀ» ÀÐÀ¸¸é µÈ´Ù.

 

SELECT * FROM tBusiMan WHERE salary >= (SELECT avg(salary) FROM tBusiMan);

FROM (...)¿¡ ÇØ´çÇÏ´Â ±¸¹®ÀÌ tBusiManÀ¸·Î ´ëüµÇ¾î ª°í °£°áÇÏ´Ù. »Ó¸¸ ¾Æ´Ï¶ó ´Ü°è¸¦ ³ª´©¾î ³õÀ¸´Ï »ç¶÷ÀÇ »ç°íµµ ´Ü¼øÇØÁø´Ù. ºä·Îµµ ÀÌ ¹®Á¦¸¦ Ç® ¼ö ÀÖ´Ù. Á¶°Ç¿¡ ¸Â´Â ·¹ÄÚµå ÁýÇÕÀ» ºä·Î Á¤ÀÇÇÏ°í ºä¿¡¼­ ¿øÇÏ´Â °ªÀ» Á¶»çÇÏ¸é µÈ´Ù.

 

CREATE VIEW vBusiMan AS SELECT name, salary, score FROM tStaff

WHERE depart = '¿µ¾÷ºÎ' AND gender = '³²';

SELECT * FROM vBusiMan WHERE salary >= (SELECT avg(salary) FROM vBusiMan);

 

½ÇÇà °á°ú´Â ¶È°°´Ù. ±×·¯³ª ºä´Â DB ¿ÀºêÁ§Æ®¸¦ »ý¼ºÇÑ´Ù´Â ¸é¿¡¼­ ¹ø°Å·Ó´Ù. ÀÚµ¿À¸·Î »èÁ¦µÇÁö ¾Ê´Âµ¥´Ù ±ÇÇѵµ ½Å°æ½á¾ß ÇÏ´Ï Àӽà Å×ÀÌºíº¸´Ù ¿©·¯ ¸ð·Î ¹ø°Å·Ó´Ù.