| PostgreSQL 8.3.3¹®¼ | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Chapter 35. ·ê ½Ã½ºÅÛ | Fast Forward | Next |
¾î¶»°Ô ·ê ½Ã½ºÅÛÀÌ ±â´ÉÇÏ´ÂÁö ÀÌÇØÇϱâ À§Çؼ´Â, ·êÀÌ ¾î¶»°Ô ±âµ¿µÇ°í ±× ÀԷ°ú °á°ú´Â ¹«¾ùÀÎÁö ÀÌÇØÇØ¾ßÇÕ´Ï´Ù.
·ê ½Ã½ºÅÛÀº Äõ¸® ÆÄ¼¿Í Ç÷¡³ÊÀÇ Áß°£¿¡ À§Ä¡ÇÕ´Ï´Ù. ·ê ½Ã½ºÅÛÀº ÀÔ·ÂÀ¸·Î ÆÄ¼ÀÇ Ãâ·Â, ´ÜÀÏÀÇ Äõ¸® Æ®¸®, ¹× Ãß°¡ Á¤º¸¸¦ °¡Áö´Â Äõ¸® Æ®¸®ÀÎ »ç¿ëÀÚ Á¤ÀÇ ÀçÀÛ¼º ·êÀ» ÅÃÇØ, °á°úÀûÀ¸·Î 0°³ ÀÌ»óÀÇ Äõ¸® Æ®¸®¸¦ »ý¼ºÇÕ´Ï´Ù. ·ê ½Ã½ºÅÛÀÇ ÀԷ°ú Ãâ·ÂÀº Ç×»ó ÆÄ¼ ÀÚü¿¡¼µµ »ý¼ºÇÒ ¼ö°¡ ÀÖ¾î¼, ÂüÁ¶ÇÏ´Â ´ë»óÀº ±âº»ÀûÀ¸·Î SQL¹®À¸·Î¼ Ç¥Çö °¡´ÉÇÕ´Ï´Ù.
±×·³ Äõ¸® Æ®¸®¶õ ¹«¾ùÀԴϱî. ±×°ÍÀº, SQL¹®À» ±¸¼ºÇÏ´Â °³°³ÀÇ ºÎǰÀ» µû·Î µû·Î ±â¾ïÇÑ, SQLÄõ¸® ³»ºÎ Ç¥ÇöÀÔ´Ï´Ù. debug_print_parse, debug_print_rewritten, ȤÀº debug_print_plan¼³Á¤ ¸Å°³º¯¼ö¸¦ ¼³Á¤Çϸé, ¼¹ö ·Î±×³»¿¡¼ Äõ¸® Æ®¸®¸¦ º¼ ¼ö°¡ ÀÖ½À´Ï´Ù. ·ê ¾×¼Çµµ pg_rewrite½Ã½ºÅÛ ¸ñ·Ï³»¿¡ ¹®ÀÇ Æ®¸®·Î¼ ÀúÀåµÇ°í ÀÖ½À´Ï´Ù. À̰ÍÀº ·Î±× Ãâ·Â°ú °°ÀÌ Çü½ÄȵÇÁö´Â ¾ÊÁö¸¸, ¿ÏÀüÈ÷ °°Àº Á¤º¸¸¦ °¡Áö°í ÀÖ½À´Ï´Ù.
Äõ¸® Æ®¸® ±× ÀÚü¸¦ Àбâ À§Çؼ´Â ¾î´À Á¤µµÀÇ °æÇèÀÌ ÇÊ¿äÇÕ´Ï´Ù. ·ê ½Ã½ºÅÛÀ» ÀÌÇØÇϱâ À§Çؼ´Â Äõ¸® Æ®¸®ÀÇ SQLÇ¥ÇöÀ¸·Î ÃæºÐÇϹǷÎ, ¿©±â¿¡¼´Â ±× Àд ¹ý±îÁö´Â °¡¸£Ä¡Áö ¾Ê½À´Ï´Ù.
º»ÀåÀÇ Äõ¸® Æ®¸®ÀÇ SQLÇ¥Çö Çü½ÄÀ» ÀÐÀ» ¶§¿¡ ÇÊ¿äÇÑ °ÍÀº, Äõ¸® Æ®¸® ±¸Á¶¾È¿¡ ºÐÇØµÈ, ¾î´À ¹®ÀåÀÇ ºÎǰÀ» ½Äº°ÇÒ ¼ö ÀÖ´Â °ÍÀÔ´Ï´Ù. Äõ¸® Æ®¸®¿¡´Â ÀÌÇÏÀÇ ºÎºÐÀÌ ÀÖ½À´Ï´Ù.
À̰ÍÀº ¾î´À ¸í·É(SELECT, INSERT, UPDATE, DELETE)ÀÌ Äõ¸® Æ®¸®¸¦ ¸¸µé¾ú´ÂÁö ³ªÅ¸³»´Â ´Ü¼øÇÑ °ªÀÔ´Ï´Ù.
¹üÀ§ Å×À̺íÀº Äõ¸®·Î »ç¿ëµÇ´Â ¸±·¹À̼ÇÀÇ ¸®½ºÆ®ÀÔ´Ï´Ù. SELECT¹®¿¡¼´Â À̰ÍÀº FROMŰ¿öµåÀÇ ´ÙÀ½¿¡ ÁÖ¾îÁö´Â ¸±·¹À̼ÇÀÌ µË´Ï´Ù.
¹üÀ§ Å×À̺íÀÇ °¢°¢ÀÇ Ç׸ñÀº Å×À̺í ȤÀº ºä¸¦ ½Äº°ÇØ, Äõ¸®ÀÇ ´Ù¸¥ ºÎºÐ¿¡¼´Â ¾î¶² À̸§À¸·Î ºÒ·Á °¡´ÂÁö¸¦ ³ªÅ¸³À´Ï´Ù. Äõ¸® Æ®¸®¿¡¼, ¹üÀ§ Å×À̺íÀÇ Ç׸ñÀº À̸§º¸´Ù ¹øÈ£·Î ÂüÁ¶µÇ´Â °ÍÀÌ ¸¹±â ¶§¹®¿¡, ¿©±â¿¡¼´Â SQL¹®°ú´Â ´Þ¸®, Áߺ¹ÇÏ´Â À̸§ÀÌ Àִ°¡ ÇÏ´Â °ÍÀº ¹®Á¦°¡ µÇÁö ¾Ê½À´Ï´Ù. À̰ÍÀº ·êÀÇ ¹üÀ§ Å×À̺íÀÌ º´ÇÕ µÈ ÈÄ¿¡ ÀϾ °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù. º»ÀåÀÇ ¿¹¿¡¼´Â ±× »óȲÀ» Æ÷ÇÔÇϰí ÀÖÁö ¾Ê½À´Ï´Ù.
Äõ¸®ÀÇ °á°ú°¡ ÀúÀåµÇ´Â ¸±·¹À̼ÇÀ» ½Äº°ÇÏ´Â ¹üÀ§ Å×ÀÌºí¿¡ÀÇ À妽ºÀÔ´Ï´Ù.
SELECTÄõ¸®´Â ÀϹÝÀûÀ¸·Î °á°ú ¸±·¹À̼ÇÀ» °¡ÁöÁö ¾Ê½À´Ï´Ù. SELECT INTOÀÇ °æ¿ì´Â Ưº°ÇÕ´Ï´Ù¸¸, INSERT ... SELECT°¡ ºÙÀº CREATE TABLE¿Í °ÅÀÇ °°¹Ç·Î, ¿©±â¿¡¼´Â °³º°ÀûÀ¸·Î´Â ¼³¸íÇÏÁö ¾Ê½À´Ï´Ù.
INSERT, UPDATE, DELETE¸í·É¿¡¼´Â, °á°ú ¸±·¹À̼ÇÀº º¯°æÀÌ À¯È¿ÇÑ Å×À̺í(ȤÀº ºä)ÀÔ´Ï´Ù.
´ë»ó ¸®½ºÆ®´Â Äõ¸®ÀÇ °á°ú¸¦ Á¤ÀÇÇÏ´Â ½ÄÀÇ ¸®½ºÆ®ÀÔ´Ï´Ù. SELECTÀÇ °æ¿ì, ÀÌ ½ÄÀº Äõ¸®ÀÇ ÃÖÁ¾ °á°ú¸¦ ±¸ÃàÇÏ´Â °ÍÀÔ´Ï´Ù. À̰͵éÀº SELECT¿Í FROMŰ¿öµåÀÇ »çÀÌ¿¡ ÀÖ´Â ½Ä¿¡ ´ëÀÀÇÕ´Ï´Ù (*´Â ´ÜÁö ¸±·¹À̼ÇÀÇ ¸ðµç ·Ä¸íÀÇ »ý·«ÀÔ´Ï´Ù. À̰ÍÀº ÆÄ¼¿¡ ÀÇÇØ °³º°ÀÇ ¿¿¡ Àü°³µÇ±â ¶§¹®¿¡, ·ê ½Ã½ºÅÛÀÌ º¼ ÀÏÀº ¾ø½À´Ï´Ù).
DELETE¸í·ÉÀº °á°ú¸¦ µ¹·ÁÁÖÁö ¾ÊÀ¸¹Ç·Î, ´ë»ó ¸®½ºÆ®´Â ÇÊ¿ä ¾ø½À´Ï´Ù. ½ÇÁ¦·Î´Â, Ç÷¡³Ê°¡ ºó ´ë»ó ¸®½ºÆ®¿¡ Ưº°ÇÑ CTIDÇ׸ñÀ» Ãß°¡ÇÕ´Ï´Ù. ±×·¯³ª À̰ÍÀº, ÈÄ¿¡ ¼³¸íÇÕ´Ï´Ù¸¸, ·ê ½Ã½ºÅÛÀÇ µÚ¿¡ ÇàÇØÁý´Ï´Ù. ·ê ½Ã½ºÅÛ¿¡¼´Â ´ë»ó ¸®½ºÆ®´Â ºñ¾îÀÖ½À´Ï´Ù.
INSERTÄõ¸®¿¡¼´Â, ´ë»ó ¸®½ºÆ®´Â °á°ú ¸±·¹À̼ǿ¡ µé¾î°¡´Â ½Å±ÔÀÇ ÇàÀ» ³ªÅ¸³À´Ï´Ù. À̰ÍÀº VALUES±¸³ª INSERT ... SELECT¾ÈÀÇ SELECT±¸ÀÇ ½ÄÀÔ´Ï´Ù. ÀçÀÛ¼º ó¸®ÀÇ ÃÖÃÊÀÇ ´Ü°è¿¡¼´Â, º»·¡ ¸í·É¿¡¼ ÇÒ´çÀÌ µÇÁö ¾Ê¾ÒÁö¸¸ ±âº»°ªÀ» °¡Áö´Â, ¿ÀÇ ´ë»ó ¸®½ºÆ®ÀÇ Ç׸ñÀ» Ãß°¡ÇÕ´Ï´Ù. ³²Àº ¿(°ªÀÌ ÁÖ¾îÁöÁöµµ, ±âº»°ªÀ» °¡ÁöÁöµµ ¾ÊÀº ¿)Àº ¸ðµÎ, Ç÷¡³Ê¿¡ ÀÇÇØ Á¤¼ö NULL½Ä¿¡¼ ä¿öÁú ¼ö ÀÖ½À´Ï´Ù.
UPDATE¸í·É¿¡¼´Â, ´ë»ó ¸®½ºÆ®´Â ¿À·¡µÈ °ÍÀ» ¿Å°Ü³õ¾Æ¾ß ÇÒ »õ·Î¿î ÇàÀ» ³ªÅ¸³À´Ï´Ù. ·ê ½Ã½ºÅÛ¿¡¼´Â ¸í·É³»ÀÇ SET column = expressionºÎºÐ¿¡ ÀÖ´Â ½Ä¸¸À» °¡Áö°í ÀÖ½À´Ï´Ù. planner´Â, ¿À·¡µÈ ÇàÀ¸·ÎºÎÅÍ »õ·Î¿î Çà¿¡ °ªÀ» º¹»çÇÏ´Â ½ÄÀ» »ðÀÔÇÏ´Â °ÍÀ¸·Î½á, ºüÁ® ÀÖ´Â ¿À» ó¸®ÇÕ´Ï´Ù. ±×¸®°í, DELETEÀÇ °æ¿ì¿Í °°°Ô, Ưº°ÇÑ CTIDÇ׸ñÀ» Ãß°¡ÇÕ´Ï´Ù.
´ë»ó ¸®½ºÆ®ÀÇ °¢ Ç׸ñÀº, Á¤¼ö°ª, ¹üÀ§ Å×ÀÌºí³»ÀÇ ¸±·¹À̼ÇÁßÀÇ ÇϳªÀÇ ¿À» Áö½ÃÇÏ´Â º¯¼ö, ¸Å°³º¯¼ö, ¶Ç´Â, ÇÔ¼ö È£Ãâ, Á¤¼ö, º¯¼ö, ¿¬»êÀڵ ÀÇÇØ ¸¸µé¾îÁø ½ÄÀÇ Æ®¸®¸¦ º¸°ü À¯ÁöÇÕ´Ï´Ù.
Äõ¸®ÀÇ Á¶°ÇÀº ´ë»ó ¸®½ºÆ®ÀÇ Ç׸ñ¿¡ Æ÷ÇԵǾî ÀÖ´Â ½Ä°ú ¸¹ÀÌ ºñ½ÁÇÕ´Ï´Ù. ÀÌ ½ÄÀÇ °á°ú´Â, ÃÖÁ¾ÀûÀÎ °á°úÀÇ ÇàÀ» ¾ò±â À§ÇÑ (INSERT, UPDATE, DELETE ¶Ç´Â SELECT)¿¬»êÀ» ½ÇÇàÇØ¾ßÇÒ °ÍÀÎÁö ¾Æ´ÑÁö¸¦ ³ªÅ¸³»´Â ºÒ¸®¾ð °ªÀÔ´Ï´Ù. ±×°ÍÀº SQL¹® ¾ÈÀÇ WHERE±¸ÀÔ´Ï´Ù.
Äõ¸®ÀÇ °áÇÕ Æ®¸®´Â FROM±¸ÀÇ ±¸Á¶¸¦ ³ªÅ¸³À´Ï´Ù. SELECT ... FROM a, b, c¿Í °°ÀÌ ´Ü¼øÇÑ Äõ¸®¿¡¼´Â, °áÇÕ Æ®¸®´Â ´Ü¼øÇÑ FROMÇ׸ñÀÇ ¸®½ºÆ®ÀÔ´Ï´Ù. ¿Ö³ÄÇϸé À̰͵éÀº ¾î¶² Â÷·Ê·Î °áÇÕÇØµµ »ó°ü¾ø±â ¶§¹®ÀÔ´Ï´Ù. ±×·¯³ªJOIN½Ä, ƯÈ÷ ¿ÜºÎ°áÇÕÀÌ »ç¿ëµÇ¾úÀ» °æ¿ì´Â, ±× °áÇÕÀÌ °¡¸®Å°´Â Â÷·Ê´ë·Î¿¡ °áÇÕÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. ÀÌ °æ¿ì °áÇÕ Æ®¸®´Â JOIN½ÄÀÇ ±¸Á¶¸¦ ³ªÅ¸³À´Ï´Ù. ƯÁ¤ÀÇ JOIN±¸·Î °ü·ÃÁöÀ» ¼ö ÀÖ¾ú´ø Á¦¾à(ON ȤÀº USING½ÄÀ¸·ÎºÎÅÍÀÇ °Í)Àº ÀÌ·¯ÇÑ °áÇÕ Æ®¸® ³ëµå¿¡ ºÎ°¡µÈ Á¶°ÇÀ¸·Î¼ ÀúÀåµË´Ï´Ù. ÃÖ°í ·¹º§ÀÇ WHERE½ÄÀ» ÃÖ°í ·¹º§ÀÇ °áÇÕ Æ®¸® Ç׸ñ¿¡ ºÎ°¡µÈ Á¶°ÇÀ¸·Î¼ ÀúÀåÇÏ´Â Àϵµ Æí¸®ÇÕ´Ï´Ù. ±×·¯´Ï±î, °áÇÕ Æ®¸®´Â SELECTÀÇ FROM±¸¿Í WHERE±¸ÀÇ ¾çÂÊ ¸ðµÎ¸¦ ³ªÅ¸³»°í ÀÖ´Â °ÍÀÔ´Ï´Ù.
ORDER BY±¸¿Í °°Àº, Äõ¸® Æ®¸®ÀÇ ±× ¿ÜÀÇ ºÎºÐÀº, ¿©±â¿¡¼´Â äÅÃÇÏÁö ¾Ê½À´Ï´Ù. ·ê ½Ã½ºÅÛÀº ·êÀ» Àû¿ëÇϰí ÀÖÀ» ¶§¿¡ Ç׸ñÀ» ¹Ù²ã ³ÖÁö¸¸, À̰ÍÀº ·ê ½Ã½ºÅÛÀÇ ±âº»°ú´Â ±×´ÙÁö °ü°è°¡ ¾ø½À´Ï´Ù.