| PostgreSQL 8.3.3¹®¼ | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Fast Forward | Next | |
DELETE FROM [ ONLY ]
table
[ [ AS ]
alias
]
[ USING
usinglist
]
[ WHERE
condition
]
[ RETURNING * |
output_expression
[ AS
output_name
] [, ...] ]
DELETE´Â, ÁöÁ¤µÈ Å×ÀÌºí¿¡¼ WHEREÀýÀÌ ÀÖ´Â ÇàÀ» »èÁ¦ÇÕ´Ï´Ù. WHEREÀýÀÌ ¾ø´Â °æ¿ì, Å×ÀÌºí ³»ÀÇ ¸ðµç ÇàÀÌ »èÁ¦ µË´Ï´Ù. °á°ú´Â À¯È¿Çϳª, ºó Å×ÀÌºí¸¸ ³²°Ô µË´Ï´Ù.
Tip: TRUNCATE ´Â, Å×ÀÌºí¿¡¼ ¸ðµç ÇàÀ» Á¦°ÅÇϱâ À§ÇÑ º¸´Ù ºü¸¥ ¸ÞÄ¿´ÏÁòÀ» Á¦°øÇÏ´Â PostgreSQLÀÇ È®ÀåÀÔ´Ï´Ù.
µðÆúÆ®·Î, DELETE´Â ÁöÁ¤µÈ Å×À̺íÀÇ Çà°ú ±× Å×À̺íÀÇ ¸ðµç ÀÚ¼Õ Å×ÀÌºíµµ »èÁ¦ÇÕ´Ï´Ù. ¾ð±ÞµÈ ƯÁ¤ Å×À̺íÀÇ ÇุÀ» »èÁ¦Çϱ⠿øÇÏ´Â °æ¿ì, ONLYÀýÀ» »ç¿ëÇØ¾ßÇÕ´Ï´Ù.
µ¥ÀÌÅͺ£À̽º ³»¿¡ ´Ù¸¥ Å×ÀÌºí¿¡ Æ÷ÇÔµÈ Á¤º¸¸¦ »ç¿ëÇÏ¿© Å×À̺íÀÇ ÇàÀ» »èÁ¦ÇÏ´Â, µÎ °¡Áö ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù: sub-select»ç¿ëÇϱ⠶Ǵ USINGÀý ³»ÀÇ Ãß°¡ÀûÀÎ Å×À̺í ÁöÁ¤Çϱâ ÀÌ ±â¼úÀº, ƯÁ¤ÇÑ È¯°æ¿¡ Àû¿ëÇÏ´Â °ÍÀÌ ´õ ÀûÇÕÇÕ´Ï´Ù.
¼±ÅÃÀûÀÎ RETURNINGÀýÀº, °è»êÇϱâ À§ÇØ DELETEÄ¿¸àµå¸¦ ½ÇÇàÇϰí, »èÁ¦µÈ °¢ Çà¿¡ ±Ù°ÅÇÏ¿© °ªÀ» ¹ÝȯÇÕ´Ï´Ù. Å×À̺íÀÇ ¿À» ÀÌ¿ëÇÑ Ç¥½Ä, ¹×/¶Ç´Â USING¿¡ ¾ð±ÞµÈ ´Ù¸¥ Å×À̺íÀÇ ¿Àº °è»êµÉ ¼ö ÀÖ½À´Ï´Ù. RETURNINGÇ׸ñÀÇ ±¸¹®Àº, SELECTÀÇ »êÃâ¹° Ç׸ñÀÇ ±¸¹®°ú µ¿ÀÏÇÕ´Ï´Ù.
»èÁ¦ÇÏ·Á¸é, Å×À̺í»óÀÇ DELETE±ÇÇÑ »Ó¸¸ ¾Æ´Ï¶ó, USINGÀý ¿¡¼ ¸ðµç Å×ÀÌºí¿¡ ´ëÇÑ , ¶Ç´Â condition ¿¡¼ ½ÀµæÇÑ °ª¿¡ ´ëÇÑ SELECT±ÇÇÑÀ» °®¾Æ¾ß ÇÕ´Ï´Ù.
ÁöÁ¤µÈ °æ¿ì, Áö¸íµÈ Å×ÀÌºí¿¡¼¸¸ ÇàÀ» »èÁ¦ÇÕ´Ï´Ù. ÁöÁ¤µÇÁö ¾ÊÀº °æ¿ì, Áö¸íµÈ Å×ÀÌºí¿¡¼ »ó¼ÓÇÏ´Â ¸ðµç Å×À̺íÀ» ó¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù.
Á¸ÀçÇÏ´Â Å×À̺íÀÇ À̸§(°ËÁõÀ» °ÅÄ£ ½ºÅ°¸¶)ÀÔ´Ï´Ù.
´ë»ó Å×À̺íÀÇ ´ëüÀ̸§ÀÔ´Ï´Ù. º°ÄªÀÌ ÁÖ¾îÁú °æ¿ì, Å×À̺íÀÇ ½ÇÁ¦ À̸§À» ¿ÏÀüÈ÷ ¼û±é´Ï´Ù. ¿¹¸¦µé¾î, DELETE FROM foo AS f°¡ Á¦½ÃµÈ °æ¿ì, DELETE¹®ÀÇ ³ª¸ÓÁö ºÎºÐÀº foo°¡ ¾Æ´Ï¶ó, f·Î ¾ð±ÞµË´Ï´Ù.
WHEREÁ¶°ÇÀ» Ç¥½ÃÇÏ¿©, ´Ù¸¥ Å×ÀÌºí¿¡ ÀÖ´Â ¿À» »ç¿ëÇÏ´Â Å×À̺í Ç¥½ÄÀÇ Ç׸ñÀÔ´Ï´Ù. À̰ÍÀº, SELECT¹®ÀÇ FROM±¸ ¿¡ ÁöÁ¤µÉ ¼ö ÀÖ´Â Å×À̺íÀÇ Ç׸ñ°ú À¯»çÇÕ´Ï´Ù. ¿¹¸¦µé¾î, Å×À̺í À̸§ÀÇ º°ÄªÀº ÁöÁ¤µÉ ¼ö ÀÖ½À´Ï´Ù. ÀÚ±âÁ¶ÀÎÀ» Á¦°øÇÒ °ÍÀ» ¿øÇÏÁö ¾Ê´Â °æ¿ì, usinglist ¿¡ ÀÖ´Â ´ë»ó Å×À̺íÀ» ¹Ýº¹ÇÏÁö ¸¶¼¼¿ä
booleanŸÀÔÀÇ °ªÀ» ¹ÝȯÇϰí, »èÁ¦µÇ´Â ÇàÀ» °áÁ¤Çϴ ǥ½ÄÀÔ´Ï´Ù.
°¢ ÇàÀ» »èÁ¦ÇÑ ÈÄ, DELETEÄ¿¸àµå¸¦ °è»êÇÏ°í ¹ÝȯÇϴ ǥ½ÄÀÔ´Ï´Ù. Ç¥½ÄÀº table ÀÇ ¸ðµç ¿ÀÇ À̸§ ¶Ç´Â USING¿¡ ±âÀçµÈ Å×À̺íÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸ðµç ¿À» ¹ÝȯÇÏ´Â *¸¦ ÀÛ¼ºÇÕ´Ï´Ù.
¹ÝȯµÈ ¿¿¡ »ç¿ëµÉ À̸§ÀÔ´Ï´Ù.
¼º°øÀûÀÎ ¿Ï¼º ´Ü°è¿¡¼, DELETEÄ¿¸àµå´Â Çü½ÄÀÇ Ä¿¸àµå ű׸¦ ¹ÝȯÇÕ´Ï´Ù.
DELETE count
count ´Â »èÁ¦µÈ ÇàÀÇ ¼ö ÀÔ´Ï´Ù. count °¡ 0ÀÎ °æ¿ì, condition ¿¡ ÀÏÄ¡ÇÏ´Â ÇàÀÌ ¾ø´Ù´Â °ÍÀÔ´Ï´Ù.(À̰ÍÀº °£ÁÖµÈ ¿¡·¯°¡ ¾Æ´Õ´Ï´Ù)
DELETEÄ¿¸àµå°¡ RETURNINGÀýÀ» Æ÷ÇÔÇÏ´Â °æ¿ì, Ä¿¸àµå ½ÇÇàÀÇ °á°ú´Â, Ä¿¸àµå ½ÇÇàÀ¸·Î »èÁ¦µÈ ÇàÀ» ó¸®Çϰí RETURNINGÇ׸ñ¿¡ Á¤ÀÇµÈ °ª°ú ¿À» Æ÷ÇÔÇÏ´Â SELECT¹®°ú À¯»çÇÕ´Ï´Ù.
PostgreSQLÀº, USINGÀý¿¡¼ ´Ù¸¥ Å×À̺íÀ» ÁöÁ¤ÇÏ´Â WHEREÁ¶°Ç³»¿¡ ÀÖ´Â ´Ù¸¥ Å×À̺íÀÇ ¿À» ÂüÁ¶ÇÕ´Ï´Ù. ¿¹¸¦µé¸é, ÁöÁ¤µÈ ÇÁ·Îµà¼°¡ Á¦ÀÛÇÑ ¸ðµç ¿µÈ¸¦ »èÁ¦ÇÏ´Â °ÍÀÔ´Ï´Ù. 1°³ÀÇ ¿µÈ¸¦ »èÁ¦ÇÒ ¼ö µµ ÀÖ½À´Ï´Ù.
DELETE FROM films USING producers WHERE producer_id = producers.id AND producers.name = 'foo';
¿©±â¿¡ films°ú producers, »èÁ¦¸¦ À§ÇØ ¾ð±ÞµÇ¾î ¸ðµÎ ¼º°øÀûÀ¸·Î Á¶ÀÎµÈ filmsÇà°úÀÇ Á¶ÀÎÀÌ ÇʼöÀûÀ¸·Î ¹ß»ýÇÕ´Ï´Ù. ÀÌ ±¸¹®Àº Ç¥ÁØÀÌ ¾Æ´Õ´Ï´Ù. Á» ´õ Ç¥ÁØÀûÀÎ ¹æ½ÄÀº ¾Æ·¡¿Í °°ÀÌ ÇÕ´Ï´Ù.
DELETE FROM films WHERE producer_id IN (SELECT id FROM producers WHERE name = 'foo');
Á¶Àιæ½ÄÀÇ °æ¿ì, sub-select ¹æ½ÄÀ» ½ÇÇàÇÏ´Â °ÍÀÌ º¸´Ù ºü¸£°Å³ª, ¶Ç´Â ÀÛ¼ºÇÏ´Â °ÍÀÌ º¸´Ù ½±½À´Ï´Ù.
¸ðµç ¿µÈ¸¦ »èÁ¦ÇÕ´Ï´Ù¸¸, ¹ÂÁöÄÃÀº »èÁ¦ÇÏÁö ¾Ê½À´Ï´Ù.
DELETE FROM films WHERE kind <> 'Musical';
filmsÅ×À̺íÀ» »èÁ¦ÇÕ´Ï´Ù.
DELETE FROM films;
»èÁ¦µÈ ÇàÀÇ ¸ðµç ¼¼ºÎ»çÇ×À» ¹ÝȯÇÏ¿©, ¿Ï¼ºµÈ ŽºÅ©¸¦ »èÁ¦ÇÕ´Ï´Ù.
DELETE FROM tasks WHERE status = 'DONE' RETURNING *;