| PostgreSQL 8.3.3¹®¼ | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Fast Forward | Next | |
SELECT [ ALL | DISTINCT [ ON (
expression
[, ...] ) ] ]
* |
expression
[ AS
output_name
] [, ...]
[ FROM
from_item
[, ...] ]
[ WHERE
condition
]
[ GROUP BY
expression
[, ...] ]
[ HAVING
condition
[, ...] ]
[ { UNION | INTERSECT | EXCEPT } [ ALL ]
select
]
[ ORDER BY
expression
[ ASC | DESC | USING
operator
] [, ...] ]
[ LIMIT {
count
| ALL } ]
[ OFFSET
start
]
[ FOR { UPDATE | SHARE } [ OF
table_name
[, ...] ] [ NOWAIT ] [...] ]
" -->
¿©±â¼
from_item
´Â ÀÌÇÏ Áß Çϳª°¡ µÉ ¼ö ÀÖ½À´Ï´Ù.
" -->
[ ONLY ]
table_name
[ * ] [ [ AS ]
alias
[ (
column_alias
[, ...] ) ] ]
(
select
) [ AS ]
alias
[ (
column_alias
[, ...] ) ]
function_name
( [
argument
[, ...] ] ) [ AS ]
alias
[ (
column_alias
[, ...] |
column_definition
[, ...] ) ]
function_name
( [
argument
[, ...] ] ) AS (
column_definition
[, ...] )
from_item
[ NATURAL ]
join_type
from_item
[ ON
join_condition
| USING (
join_column
[, ...] ) ]
SELECT´Â 0°³³ª ±× ÀÌ»óÀÇ Å×ÀÌºí¿¡¼ ÇàÀ» °Ë»öÇÕ´Ï´Ù. SELECTÀÇ ÀϹÝÀûÀΠ󸮴 ÀÌÇÏ¿Í °°½À´Ï´Ù.
FROM¸®½ºÆ®¿¡ ÀÖ´Â Àü¿ä¼Ò°¡ °è»êµË´Ï´Ù (FROM¸®½ºÆ®ÀÇ ¿ä¼Ò´Â ½ÇÁ¦³ª °¡»ó Å×À̺íÀÔ´Ï´Ù). FROM¸®½ºÆ®¿¡ º¹¼öÀÇ ¿ä¼Ò°¡ ÁöÁ¤µÇ¾úÀ» °æ¿ì, ±×°ÍµéÀº Å©·Î½º °áÇյ˴ϴ٠(¾Æ·¡ÀÇ FROM±¸ À» ÂüÁ¶ÇØ ÁÖ¼¼¿ä).
WHERE±¸°¡ ÁöÁ¤µÇ¾úÀ» °æ¿ì, Á¶°ÇÀ» ä¿ìÁö ¾Ê´Â ¸ðµç ÇàÀº Ãâ·Â¹°À¸·ÎºÎÅÍ Á¦°ÅµË´Ï´Ù (¾Æ·¡ÀÇ WHERE±¸ À» ÂüÁ¶ÇØ ÁÖ¼¼¿ä).
GROUP BY±¸°¡ ÁöÁ¤µÇ¾úÀ» °æ¿ì, 1°³ ¶Ç´Â ±× ÀÌ»óÀÇ °ªÀÌ Á¶°Ç¿¡ ¸Â´Â ÇàÀÇ ±×·ìÀ¸·Î ³ª´©¾î Ãâ·ÂµË´Ï´Ù. HAVING±¸°¡ ÁöÁ¤µÇ¾úÀ» °æ¿ì, ÁöÁ¤ÇÑ Á¶°ÇÀ» ä¿ìÁö ¾Ê´Â ±×·ìÀº Á¦°ÅµË´Ï´Ù (¾Æ·¡ÀÇ GROUP BY±¸ °ú HAVING±¸ ¸¦ ÂüÁ¶ÇØ ÁÖ¼¼¿ä).
½ÇÁ¦·Î´Â ¼±ÅÃµÈ °¢ Çà¿¡ ´ëÇØ¼ SELECTÃâ·Â½ÄÀ» »ç¿ëÇØ °è»êÇÑ °á°úÀÇ ÇàÀÌ Ãâ·ÂµË´Ï´Ù (¾Æ·¡ÀÇ SELECT¸®½ºÆ® À» ÂüÁ¶ÇØ ÁÖ¼¼¿ä).
UNION,INTERSECT,EXCEPT¿¬»êÀÚ¸¦ »ç¿ëÇϸé, SELECTÀÇ ¸í·É¹®Àº 1°³ÀÇ °á°ú ÁýÇÕ Çü½Ä¿¡ °áÇÕÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. UNION¿¬»êÀÚ´Â ¾çÂÊ ¸ðµÎÀÇ °á°ú ÁýÇÕ¿¡ Á¸ÀçÇÏ´Â Çà°ú ´Ù¸¥ ÇÑÂÊÀÇ °á°ú ÁýÇÕ¿¡ Á¸ÀçÇÏ´Â ÇàÀ» ¸ðµÎ µ¹·ÁÁÝ´Ï´Ù. INTERSECT¿¬»êÀÚ´Â ¾çÂÊ ¸ðµÎÀÇ °á°ú ÁýÇÕ¿¡ Á¸ÀçÇÏ´Â ÇàÀ» µ¹·ÁÁÝ´Ï´Ù. EXCEPT¿¬»êÀÚ´Â ÃÖÃÊÀÇ °á°ú ÁýÇÕÀÇ ±× ÇàÀ» µ¹·ÁÁÝ´Ï´Ù. µÎ¹øÂ°ÀÇ °á°ú ÁýÇÕÀº ¾Æ´Õ´Ï´Ù. ÀÌ ¼¼°¡Áö °æ¿ì ¸ðµÎ Áߺ¹ÇÏ´Â ÇàÀº ALL°¡ ÁöÁ¤µÇÁö °Í°ú ´Þ¸® Á¦°ÅµË´Ï´Ù (ÈļúÀÇ UNION±¸ , INTERSECT±¸ , EXCEPT±¸ ¸¦ ÂüÁ¶ÇØ ÁÖ¼¼¿ä).
ORDER BY±¸°¡ ÁöÁ¤µÇ¾úÀ» °æ¿ì, µ¹·ÁÁÖ¾îÁö´Â ÇàÀº ÁöÁ¤ÇÑ Â÷·Ê·Î Á¤·ÄµË´Ï´Ù. ORDER BY°¡ ÁöÁ¤µÇÁö ¾Ê´Â °æ¿ì´Â ½Ã½ºÅÛÀÌ °è»ê °úÁ¤¿¡¼ ã¾Æ³½ Â÷·Ê·Î ÇàÀÌ µ¹·ÁÁÖ¾îÁý´Ï´Ù (ÈļúÀÇ ORDER BYÀý À» ÂüÁ¶ÇØ ÁÖ¼¼¿ä).
DISTINCT´Â °á°ú·ÎºÎÅÍ Áߺ¹ÇàÀ» ¾ø¾Û´Ï´Ù. DISTINCT ON´Â ÁöÁ¤ÇÑ ¸ðµç ½Ä¿¡ ÀÏÄ¡ÇÏ´Â ÇàÀ» ¾ø¾Û´Ï´Ù. ALL¿¡¼´Â Áߺ¹Ç൵ Æ÷ÇÔÇØ ¸ðµç Èĺ¸ÇàÀ» µ¹·ÁÁÝ´Ï´Ù(À̰ÍÀÌ ±âº»°ªÀÔ´Ï´Ù. ÀÚ¼¼ÇϰԴÂ, ÈļúÀÇ °Í DISTINCT±¸ À» ÂüÁ¶ÇØ ÁÖ¼¼¿ä).
LIMITȤÀº OFFSET±¸°¡ ÁöÁ¤µÇ¾úÀ» °æ¿ì, SELECT¸í·É¹®Àº °á°úÇàÀÇ ÀϺκи¸À» µ¹·ÁÁÝ´Ï´Ù (ÀÚ¼¼ÇϰԴÂ, ÈļúÀÇ °Í LIMIT±¸ À» ÂüÁ¶ÇØ ÁÖ¼¼¿ä).
FOR UPDATE¶Ç´Â FOR SHARE±¸¸¦ ÁöÁ¤Çϸé, SELECT¸í·É¹®Àº ÇöÀçÀÇ ¾÷µ¥ÀÌÆ®ÀÇ ´ëÇ×ÇØ ¼±ÅÃÀû ÇàÀ» Àá±Þ´Ï´Ù (ÀÚ¼¼ÇϰԴÂ, ÈļúÀÇ °Í FOR UPDATE/FOR SHARE±¸ À» ÂüÁ¶ÇØ ÁÖ¼¼¿ä).
Å×ÀÌºí¿¡¼ °ªÀ» Àо·Á¸éSELECT±ÇÇÑÀÌ ÇÊ¿äÇÕ´Ï´Ù. FOR UPDATE¶Ç´Â FOR SHARE¸¦ »ç¿ëÇÏ·Á¸é , °Ô´Ù°¡UPDATE±ÇÇÑÀÌ ÇÊ¿äÇÕ´Ï´Ù.
FROM±¸¿¡´Â SELECTÀÇ ´ë»óÀÌ µÇ´Â ¼Ò½º Å×À̺íÀ» 1°³³ª ±× ÀÌ»ó ÁöÁ¤ÇÕ´Ï´Ù. ¸¸¾à º¹¼öÀÇ ¼Ò½º°¡ ÁöÁ¤µÇ¾úÀ» °æ¿ì, °á°ú´Â ¸ðµç ¼Ò½ºÀÇ Á÷Àû(Å©·Î½º °áÇÕ)ÀÌ µË´Ï´Ù. ±×·¯³ª, Åë»óÀº Á¦¾à Á¶°ÇÀº µ¥Ä«¸£Æ®(Cartesian) Á¦Ç°ÀÇ ¸Å¿ì ÀϺθ¦ µ¹·ÁÁÖµµ·Ï °á°úÇàÀ» ÇÑÁ¤ÇÕ´Ï´Ù.
FROM±¸¿¡´Â ÀÌÇÏÀÇ ¿ä¼Ò¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.
±âÁ¸ÀÇ Å×À̺í ȤÀº ºäÀÇ À̸§ÀÔ´Ï´Ù(schema ¼ö½Ä¸íµµ °¡´É). ONLY°¡ ÁöÁ¤µÇ¾úÀ» °æ¿ì, ±× Å×ÀÌºí¸¸ÀÌ ½ºÄµ µË´Ï´Ù. ONLY°¡ ÁöÁ¤µÇÁö ¾Ê´Â °æ¿ì, Å×À̺í°ú(Á¸ÀçÇϸé) ±×°ÍÀ» »ó¼ÓÇÏ´Â ¸ðµç Å×À̺íÀÌ ½ºÄµ µË´Ï´Ù. ÀÚ¼Õ Å×À̺íÀÇ ½ºÄµÀº Å×À̺í¸í¿¡*¸¦ ºÙÀÎ Çü½Ä¿¡¼ ÁöÁ¤ÇÒ ¼öµµ ÀÖÁö¸¸, ÇöÀçÀÇ ¹öÁ¯¿¡¼´Â ±âº»°ªÀ¸·Î ÇàÇØÁý´Ï´Ù (7.1º¸´Ù ÀüÀÇ ¸±¸®½º¿¡¼´ÂONLY°¡ ±âº»°ªÀÌ ¿´½À´Ï´Ù). ±âº»°ªÀÇ ÇൿÀ» º¯°æÇÏ·Á¸ésql_inheritance¼³Á¤ ¿É¼ÇÀ» º¯°æÇÕ´Ï´Ù.
º°¸íÀ» Æ÷ÇÔÇÑFROM¾ÆÀÌÅÛÀÇ ´ëü¸íÀÔ´Ï´Ù. º°¸íÀº ÁöÁ¤À» °£°áÇÏ°Ô Çϱâ À§ÇÑ È¤Àº Àڱ⠰áÇÕ(°°Àº Å×À̺íÀ» ¿©·¯ Â÷·Ê ½ºÄµ ÇÏ´Â °áÇÕ)ÀÇ ¾Ö¸ÅÇÔÀ» ¾ø¾Ö±â À§Çؼ »ç¿ëµË´Ï´Ù. º°¸íÀÌ ÁöÁ¤µÇ°í ÀÖ´Â °æ¿ì´Â ±× º°¸í¿¡ ÀÇÇØ ½ÇÁ¦ÀÇ Å×À̺í¸í ¶Ç´Â ÇÔ¼ö¸íÀÌ ¿ÏÀüÇÏ°Ô ¼û°ÜÁý´Ï´Ù. ¿¹¸¦ µé¸é FROM foo AS f¿Í ÁöÁ¤µÇ°í ÀÖ´Â °æ¿ì, ÀÌÈÄÀÇSELECT¹®¿¡¼´Â ÀÌFROM¾ÆÀÌÅÛÀ»foo´Â ¾Æ´Ï°í f·Î¼ ÂüÁ¶ÇØ¾ß ÇÕ´Ï´Ù. Å×À̺íÀÇ º°¸íÀÌ ÀÖÀ¸¸é ±× Å×À̺íÀÇ ÇѰ³³ª ±× ÀÌ»óÀÇ ¿ À̸§À» ¿Å°Ü³õ´Â ¿ÀÇ º°¸í ¸®½ºÆ®¸¦ ±â¼úÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù.
FROM±¸¿¡¼´Â ºÎSELECT¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. SELECT¸í·ÉÀÇ ½ÇÇàÁß, ºÎSELECTÀÇ Ãâ·ÂÀº ÀϽà Å×À̺íÀÎ°Í °°ÀÌ µ¿ÀÛÇÕ´Ï´Ù. ºÎSELECT´Â °ýÈ£·Î µÑ·¯½ÎÀÌÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. ¶Ç, ¹Ýµå½Ã º°¸íÀ» ÁÖ¾îÁ®¾ß ÇÕ´Ï´Ù. VALUES ¸í·ÉÀ» ¿©±â¼ »ç¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù.
FROM±¸¿¡¼´Â ÇÔ¼ö È£ÃâÀ» »ç¿ëÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. (À̰ÍÀº ƯÈ÷ ÇÔ¼ö°¡ °á°ú ¼¼Æ®¸¦ µ¹·ÁÁÖ´Â °æ¿ì¿¡ À¯¿ëÇÏÁö¸¸, ÀÓÀÇÀÇ ÇÔ¼ö¸¦ »ç¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù) SELECT¸í·ÉÀÇ ½ÇÇàÁßÀÇ ÀÓ½ÃÀÇ Å×À̺í·Î¼ »ý¼ºÇÕ´Ï´Ù. ¶Ç, º°¸íÀ» »ç¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù. º°¸íÀÌ ÁöÁ¤µÇ°í ÀÖÀ¸¸é, ¿ÀÇ º°¸í ¸®½ºÆ®´Â ÇÔ¼öÀÇ º¹ÇÕÇüÀÇ ¹Ýȯ°ªÀÇ ¼Ó¼º¿¡ ´ëÇÑ Çϳª³ª ±× ÀÌ»óÀÇ ´ëü¸íÀ» Á¦°øÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ÇÔ¼ö°¡recordµ¥ÀÌÅÍ Å¸ÀÔÀ» µ¹·ÁÁشٰí Á¤Àǵǰí ÀÖ´Â °æ¿ì´Â º°¸í ÁïASŰ¿öµå¿Í °Å±â¿¡ °è¼ÓµÈ´Ù( column_name data_type [, ... ])(ÀÌ)¶ó°í ÇÏ´Â Çü½ÄÀÇ ¿ Á¤ÀÇ ¸®½ºÆ®°¡ ÇÊ¿äÇÕ´Ï´Ù. ¿ Á¤ÀÇ ¸®½ºÆ®´Â ÇÔ¼ö¿¡ ÀÇÇØ µ¹·ÁÁÖ¾îÁö´Â ½ÇÁ¦ÀÇ ¿ÀÇ ¼ö ¹× µ¥ÀÌÅÍÇü¿¡ ÀÏÄ¡ÇØ¾ß ÇÕ´Ï´Ù.
ÀÇ Çϳª
[ INNER ] JOIN
LEFT [ OUTER ] JOIN
RIGHT [ OUTER ] JOIN
FULL [ OUTER ] JOIN
CROSS JOIN
INNER ¿Í OUTER°áÇÕÇü¿¡¼´Â, °áÇÕ Á¶°Ç, Áï, NATURAL, ON join_condition ,USING ( join_column [, ...])ÀÇ ¾î´ÀÂÊÀ̵ç 1°³¸¸À» ÁöÁ¤ÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. °¢°¢ÀÇ Àǹ̴ Èļú ÇÕ´Ï´Ù. CROSS JOIN¿¡¼´Â ÀÌ·¯ÇÑ ±¸¸¦ ±â¼úÇÏÁö ¾Ê¾Æµµ »ó°üÇÏÁö ¾Ê½À´Ï´Ù.
JOIN±¸´Â 2°³ÀÇFROM¾ÆÀÌÅÛÀ» ¿¬°á½Ãŵ´Ï´Ù. nestingÀÇ Â÷·Ê¸¦ °áÁ¤Çϱâ À§Çؼ ÇÊ¿äÇÏ¸é °ýÈ£¸¦ »ç¿ëÇØ ÁÖ¼¼¿ä. °ýÈ£°¡ ¾øÀ¸¸éJOIN´Â ¿ÞÂÊ¿¡¼ ¿À¸¥ÂÊ¿¡ nest·Î ÇÕ´Ï´Ù. ¾î¶°ÇÑ °æ¿ì¿¡¼µµJOIN´Â Äĸ¶·Î ³ª´ ¼ö ÀÖ¾ú´øFROMÇ׸ñº¸´Ù °ÇÑ °ü°è¸¦ °¡Áý´Ï´Ù.
CROSS JOIN¿ÍINNER JOIN´Â À̰ÍÀº,FROMÀÇ Ãֻ󷹺§·Î 2°³ÀÇ Ç׸ñÀ» °áÇÕÇÑ °á°ú¿Í °°Àº Cartesian Á¦Ç°À» »ý¼ºÇÕ´Ï´Ù. ±×·¯³ª (ÁöÁ¤Çϸé) °áÇÕ Á¶°Ç¿¡ ÀÇÇØ Á¦ÇÑÀ» °ÉÄ¥ ¼ö°¡ ÀÖ½À´Ï´Ù. CROSS JOIN´Â INNER JOIN ON (true)¿Í µ¿µîÇϸç Á¶°Ç¿¡ ÀÇÇØ »èÁ¦µÇ´Â ÇàÀº ¾ø½À´Ï´Ù. ÀÌ·¯ÇÑ °áÇÕŸÀÔÀº ±â¼ú»óÀÇ ÆíÀǸ¦ À§Çؼ¸¸ ÁغñµÇ¾î ÀÖ½À´Ï´Ù. µû¶ó¼, Åë»óÀÇFROM¿Í WHERE¸¦ ½ÇÇàÇÏÁö ¾ÊÀ¸¸é ¾Æ¹«°Íµµ ½Ç½ÃÇÏÁö ¾Ê½À´Ï´Ù.
LEFT OUTER JOIN´Â Cartesian product Á¶°Ç(Áï, ±× °áÇÕ Á¶°ÇÀ» ä¿ì´Â ¸ðµç Á¶ÇÕ)¿¡ ¸Â´Â ¸ðµç ÇàÀ» µ¹·ÁÁÖ°í ¿ìÃø Å×ÀÌºí¿¡´Â °áÇÕ Á¶°ÇÀ» ä¿ì´Â ÇàÀÌ Á¸ÀçÇÏÁö ¾Ê¾Ò´ø ÁÂÃø Å×À̺í Áß¿¡¼ ÇàÀÇ º¹»çµµ µ¹·ÁÁÝ´Ï´Ù. ÀÌ ÁÂÃø Å×À̺íÀÇ ÇàÀº ¿ìÃø Å×À̺íÀÌ µé¾î°¡´Â ¿¿¡´Â NULLÄ¡°¡ »ðÀԵǴ °Í¿¡ ÀÇÇØ °áÇÕµÈ Å×À̺íÀÇ ÆúÀÌ È®ÀåµÇ¾î Áý´Ï´Ù. ÇàÀÌ ¸ÅÄ¡µÇ´Â °áÁ¤À» ÇÏ´Â µ¿¾È JOIN±¸ÀÇ ¼ÒÀ¯ Á¶°Ç¸¸ÀÌ °í·ÁµÇ´Â °Í¿¡ ÁÖÀÇÇØ ÁÖ¼¼¿ä. ´Ù¸¥ ¿ÜºÎ °áÇÕ Á¶°ÇÀº ´ÙÀ½¿¡ Àû¿ëµË´Ï´Ù.
¹Ý´ë·ÎRIGHT OUTER JOIN´Â ¸ðµç °áÇÕÇà°ú ÁÂÃø Å×ÀÌºí¿¡ µé¾î¸Â´Â °ÍÀÌ ¾ø¾ú´ø ¿ìÃøÀÇ Çà(ÁÂÃøÀº NULL·Î È®ÀåµÇ°í ÀÖ½À´Ï´Ù)ÀÇ 1Ç྿À» µ¹·ÁÁÝ´Ï´Ù. Á¿ìÀÇ Å×À̺íÀ» ¹Ù²ã ³ÖÀ¸¹Ç·Î LEFT OUTER JOIN·Î º¯È¯ÇÒ ¼ö ÀÖÀ¸¹Ç·Î, RIGHT OUTER JOIN´Â ±â¼ú»óÀÇ ÆíÀǸ¦ ²ÒÇϱâ À§ÇØ ÁغñµÇ¾î Àִ¿¡ Áö³ªÁö ¾Ê½À´Ï´Ù.
FULL OUTER JOIN´Â, ¸ðµç °áÇÕÇà¿¡ °¡¼¼ÇØ ÀÏÄ¡ÇÏÁö ¾Ê¾Ò´ø ÁÂÃøÀÇ Çà(¿ìÃøÀº NULL·Î È®Àå), ÀÏÄ¡ÇÏÁö ¾Ê¾Ò´ø ¿ìÃøÀÇ Çà(ÁÂÃøÀº NULL·Î È®Àå)À» ¸ðµÎ µ¹·ÁÁÝ´Ï´Ù.
join_condition ´Â °áÇÕ¿¡ ´ëÇØ ¾î´À ÇàÀÌ ÀÏÄ¡ÇÏ´ÂÁö¸¦ ÁöÁ¤ÇÏ´Â booleanÇüÀÇ °ªÀ» µ¹·ÁÁÖ´Â ½ÄÀÔ´Ï´Ù(WHERE±¸¿¡ À¯»çÇϰí ÀÖ½À´Ï´Ù).
USING ( a, b, ... )±¸´ÂON left_table.a = right_table.a AND left_table.b = right_table.b ...ÀÇ »ý·«ÇüÀÔ´Ï´Ù. USING´Â µî°¡ÀÎ ¿ÀÇ ¾çÂÊ ¸ðµÎ´Â ¾Æ´Ï°í ´Ù¸¥ ÇÑÂʸ¸ÀÌ °áÇÕÀÇ Ãâ·Â¿¡ Æ÷ÇԵǴ °ÍÀ» ÀǹÌÇÕ´Ï´Ù.
NATURAL´Â 2°³ÀÇ Å×ÀÌºí³»ÀÇ °°Àº À̸§À» °¡Áö´Â ÇàÀ» ¸ðµÎ ÁöÁ¤ÇÑUSING¸®½ºÆ®ÀÇ »ý·«ÇüÀÔ´Ï´Ù.
WHERE condition
condition ´Â Æò°¡ÀÇ °á°ú·Î¼booleanÇüÀ» µ¹·ÁÁÖ´Â ÀÓÀÇÀÇ ½ÄÀÔ´Ï´Ù. ÀÌ Á¶°ÇÀ» ä¿ìÁö ¾Ê´Â ÇàÀº ¸ðµÎ Ãâ·ÂÀ¸·ÎºÎÅÍ Á¦°ÅµË´Ï´Ù. ¸ðµç º¯¼ö¿¡ ½ÇÁ¦ÀÇ ÇàÀÇ °ªÀ» ´ëÀÔÇØ ½ÄÀÌ true°¡ ¸®ÅϵǴ °æ¿ì, ±× ÇàÀº Á¶°ÇÀ» ä¿î´Ù°í º¸ÀÔ´Ï´Ù.
GROUP BY±¸´Â º¸Åë ÀÌÇÏÀÇ Çü½ÄÀÌ µË´Ï´Ù(ÀÌ ±¸´Â »ý·« °¡´ÉÇÕ´Ï´Ù).
GROUP BY expression [, ...]
GROUP BY´Â ±×·ìȸ¦ À§Çؼ ÁÖ¾îÁø ½ÄÀ» Æò°¡ÇØ, °á°ú°¡ °°Àº °ªÀÌ µÈ ÇàÀ» 1°³ÀÇ ÇàÀ¸·Î Á¤¸®ÇÏ´Â ±â´ÉÀ» °¡Áý´Ï´Ù. expression ¿¡´Â ÀԷ¿ÀÇ À̸§, Ãâ·Â¿ (SELECT¸®½ºÆ® Ç׸ñ)ÀÇ À̸§/¼¼ö ȤÀº ÀԷ¿ÀÇ °ªÀ» °è»êÇÏ´Â ÀÓÀÇÀÇ ½ÄÀ» ÃëÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. ÆÇ´ÜÀÌ ¼Áö ¾ÊÀ» ¶§´Â GROUP BYÀÇ À̸§Àº Ãâ·Â·Ä¸íÀº ¾Æ´Ï°í ÀԷ·ĸíÀ¸·Î¼ ÇØ¼®µË´Ï´Ù.
Áý¾à ÇÔ¼ö°¡ »ç¿ëµÇ¾úÀ» °æ¿ì, °¢ ±×·ì³»ÀÇ ¸ðµç ÇàÀ» ´ë»óÀ¸·Î °è»êÀ» ÇØ °á°úÀûÀ¸·Î ±×·ì¸¶´ÙÀÇ °ªÀÌ »ý¼ºµË´Ï´Ù (ÇÑÆíGROUP BY°¡ ¾øÀ¸¸é, Áý¾à ÇÔ¼ö´Â ¼±ÅÃµÈ ¸ðµç ÇàÀ» ´ë»óÀ¸·Î °è»êÀ» ½Ç½ÃÇØ, 1°³ÀÇ °ªÀ» »ý¼ºÇÕ´Ï´Ù). GROUP BY°¡ Á¸ÀçÇÏ´Â °æ¿ì, Áý¾à ÇÔ¼ö ³»ºÎ Àܷ̿Î, ±×·ìȵǾî ÀÖÁö ¾ÊÀº ¿À» ÂüÁ¶ÇÏ´ÂSELECT¸®½ºÆ®´Â ¹«È¿°¡ µË´Ï´Ù. ±×·ìȵǾî ÀÖÁö ¾ÊÀº ¿¿¡ ´ëÇØ µ¹·ÁÁÖ¾îÁö´Â °ªÀº º¹¼öÀÇ °ªÀÌ µÇ¾î ¹ö¸± °¡´É¼ºÀÌ Àֱ⠶§¹®ÀÔ´Ï´Ù.
HAVING´Â Åë»ó ÀÌÇÏÀÇ ÇüŰ¡ µË´Ï´Ù(ÀÌ ±¸´Â »ý·« °¡´ÉÇÕ´Ï´Ù).
HAVING condition
condition ´ÂWHERE±¸·Î ÁöÁ¤ÇÏ´Â °Í °Í°ú °°½À´Ï´Ù.
HAVING´Â ±×·ìÈ µÈ Çà Áß¿¡¼ Á¶°ÇÀ» ä¿ìÁö ¾Ê´Â ÇàÀ» ¾ø¾Ö´Â ±â´ÉÀ» °¡Áý´Ï´Ù. HAVING¿Í WHERE´Â ´ÙÀ½ÀÇ Á¡ÀÌ ´Ù¸¨´Ï´Ù. WHERE´Â GROUP BYÀÇ Àû¿ëÀü¿¡ °³°³ÀÇ Çà¿¡ ´ëÇØ¼ ÇÊÅ͸¦ °Å´Âµ¥ ¹ÝÇØ HAVING´Â GROUP BYÀÇ Àû¿ë ÈÄ¿¡ »ý¼ºµÈ ±×·ìÈ µÈ Çà¿¡ ´ëÇØ¼ ÇÊÅ͸¦ °ÉĨ´Ï´Ù. condition ³»¿¡¼ »ç¿ëÇÏ´Â ¿Àº Áý¾à ÇÔ¼ö³»¿¡¼ »ç¿ëµÈ °ÍÀ» Á¦¿ÜÇØ, ±×·ìÈ µÈ ¿À» ÀÏÀÇ¿¡ ÂüÁ¶ÇØ¾ß ÇÕ´Ï´Ù.
HAVING±¸°¡ ÀÖÀ¸¸é,GROUP BY±¸°¡ ¾ø¾ú´Ù°í ÇØµµ ¹®ÀÇ´Â ±×·ìÈ µÈ ¹®Àǰ¡ µË´Ï´Ù. GROUP BY±¸¸¦ °¡ÁöÁö ¾Ê´Â ¹®Àǰ¡ Áý¾à ÇÔ¼ö¸¦ Æ÷ÇÔÇÑ °æ¿ìµµ °°½À´Ï´Ù. ¼±ÅÃµÈ ÇàÀº ¸ðµÎ, 1°³ÀÇ ±×·ìÀ» Çü¼ºÇÏ´Â °ÍÀ¸·Î °£ÁÖÇØÁý´Ï´Ù. ¶Ç,SELECT¸®½ºÆ®¿ÍHAVING±¸¿¡¼´Â Áý¾à ÇÔ¼ö°¡ Ãâ·ÂÇÏ´Â Å×ÀÌºí¿ ¿¡¼¸¸ ÂüÁ¶ÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ Äõ¸®¿¡¼´Â HAVING°¡ trueÀÎ °æ¿ì¿¡´Â ´ÜÀÏÀÇ ÇàÀ», true°¡ ¾Æ´Ñ °æ¿ì´Â 0ÇàÀ» Ãâ·ÂÇÕ´Ï´Ù.
SELECT¸®½ºÆ®(SELECT¿ÍFROMÀÇ »çÀÌ¿¡ Àִ Ű¿öµå)´Â SELECT¸í·É¹®ÀÇ Ãâ·ÂÇàÀ» Çü¼ºÇÏ´Â ½ÄÀ» ÁöÁ¤ÇÏ´Â °ÍÀÔ´Ï´Ù. ÀÌ ½Ä¿¡¼´Â,FROM±¸·Î ó¸® ÈÄÀÇ ¿À» ÂüÁ¶ÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù(Åë»óÀº ½ÇÁ¦·Î ÂüÁ¶ÇÕ´Ï´Ù). AS output_name ¸¦ »ç¿ëÇϸé, Ãâ·Â¿¿¡ ÀüÀÇ À̸§°ú´Â ´Ù¸¥ À̸§À» ºÙÀÏ ¼ö°¡ ÀÖ½À´Ï´Ù. ÀÌ À̸§Àº ÁַΠǥ½Ã¿ëÀÇ ¿ ¶óº§·Î ÇØ¼ »ç¿ëµË´Ï´Ù. ¶Ç,ORDER BY±¸¿Í GROUP BY±¸³»¿¡¼ ¿ÀÇ °ªÀ» ÂüÁ¶µÉ ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª,WHERE³ª HAVING±¸¿¡¼´Â »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. À̰͵鿡¼´Â ½ÄÀ» ¾²Áö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù.
ÇÑ ½Ä ´ë½Å¿¡ *´Â ¼±ÅÃµÈ ÇàÀÇ ¸ðµç ¿À» ³ªÅ¸³»´Â »ý·«ÇüÀ¸·Î¼ Ãâ·Â ¸®½ºÆ®¿¡¼ ¾µ ¼ö°¡ ÀÖ½À´Ï´Ù. ¶Ç, ±× Å×ÀÌºí¿¡ À¯·¡ÇÏ´Â ¿¸¸À» ³ªÅ¸³»´Â »ý·«ÇüÀ¸·Î¼ table_name . *(ÀÌ)¶ó°í ¾µ ¼öµµ ÀÖ½À´Ï´Ù.
UNION´Â Åë»ó ÀÌÇÏÀÇ Çü½ÄÀÌ µË´Ï´Ù.
select_statement UNION [ ALL ] select_statement
select_statement ´Â ORDER BY,LIMIT, FOR UPDATE,FOR SHARE±¸ ¾øÀÌ ÀÓÀÇÀÇSELECT¹®ÀÌ µé¾î°©´Ï´Ù (ORDER BY¿Í LIMIT´Â °ýÈ£·Î µÑ·¯½Î¸é ¼ºê½ÄÀ¸·Î¼ ºÎ¿©ÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. °ýÈ£°¡ ¾ø´Â °æ¿ì, ÀÌ·¯ÇÑ ±¸´Â ¿ìÃøÀ¸·Î ³õ¿©Áø ÀԷ½ÄÀº ¾Æ´Ï°í,UNIONÀÇ °á°ú¿¡ ´ëÇØ¼ Àû¿ëµÇ¾î ¹ö¸³´Ï´Ù).
UNION¿¬»êÀÚ´Â SELECT¸í·É¹®ÀÌ µ¹·ÁÁÖ´Â ÇàÀÇ union ¼¼Æ®¸¦ ÀÛ¼ºÇÕ´Ï´Ù. ÀÌ union ¼¼Æ®¿¡´Â, 2°³ÀÇSELECT¹®ÀÇ °á°ú ÁýÇÕÀÇ ¾î´ÀÂÊÀ̵ç(¶Ç´Â ¾çÂÊ ¸ðµÎ)¿¡ Á¸ÀçÇÏ´Â ÇàÀÌ ¸ðµÎ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù. UNIONÀÇ Á÷Á¢ÀûÀÎ ¿¬»ê¼ö°¡ µÇ´ÂSELECT¸í·É¹®³¢¸®°¡ µ¹·ÁÁÖ´Â ·Ä¼ö´Â °°Áö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. ±×¸®°í ´ëÀÀÇÏ´Â ¿ÀÇ µ¥ÀÌÅÍÇüÀº ȣȯ°¡´ÉÇÑ µ¥ÀÌÅÍ Å¸ÀÔÀÌ Á¸ÀçÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
ALL¿É¼ÇÀÌ ÁöÁ¤µÇ¾î ÀÖÁö ¾ÊÀº ÇÑ,UNIONÀÇ °á°ú¿¡´Â Áߺ¹ÇàÀº Æ÷ÇÔµÇÁö ¾Ê½À´Ï´Ù. ALL¸¦ ÁöÁ¤ÇÏ´Â °÷°ú °°Àº Áߺ¹ Á¦°Å¸¦ ÇÏÁö ¾Ê½À´Ï´Ù (±×·¯¹Ç·Î, Åë»óUNION ALL´ÂUNIONº¸´Ù ²Ï °í¼Ó »ó´çÈ÷ °í¼ÓÀÔ´Ï´Ù. °¡´ÉÇÑ ÇÑALL¸¦ »ç¿ëÇØ ÁÖ¼¼¿ä).
°°Àº SELECT¸í·É¹®¿¡ º¹¼öÀÇUNION¿¬»êÀÚ°¡ ÀÖ´Â °æ¿ì, °ýÈ£°¡ ¾ø´Â ÇÑ, ±×°ÍµéÀº ¿ÞÂÊ¿¡¼ ¿À¸¥ÂÊÀ¸·Î Æò°¡µË´Ï´Ù.
Çö½ÃÁ¡¿¡¼´Â FOR UPDATE and FOR SHARE´Â UNIONÀÇ °á°ú³ªUNION¿¡ ´ëÇÑ ÀÔ·ÂÀ» ÁöÁ¤ÇÒ ¼ö ¾ø½À´Ï´Ù.
INTERSECT´Â Åë»ó ÀÌÇÏÀÇ Çü½ÄÀÌ µË´Ï´Ù.
select_statement INTERSECT [ ALL ] select_statement
select_statement ¿¡´Â ORDER BY,LIMIT,FOR UPDATE, FOR SHARE±¸¸¦ °¡ÁöÁö ¾Ê´Â ÀÓÀÇÀÇSELECT ¸í·É¹®ÀÌ µé¾î°©´Ï´Ù.
INTERSECT´Â 2°³ÀÇSELECT¸í·É¹®ÀÌ µ¹·ÁÁÖ´Â ÇàÀÇ ±³Â÷ ¼¼Æ®À» °è»êÇÕ´Ï´Ù. °á°ú ÁýÇÕÀÇ ¾çÂÊ ¸ðµÎ¿¡ Á¸ÀçÇÑ´Ù¸é 2°³ÀÇSELECT¸í·É¹®ÀÇ ÇàÀÔ´Ï´Ù.
ALL¿É¼ÇÀ» ÁöÁ¤ÇÏÁö ¾Ê´Â ÇÑINTERSECTÀÇ °á°ú¿¡ Áߺ¹ÇàÀº Æ÷ÇÔµÇÁö ¾Ê½À´Ï´Ù. ALL°¡ ÁöÁ¤µÇ¾úÀ» °æ¿ì, ÁÂÃø Å×ÀÌºí¿¡ m °³, ¿ìÃø Å×ÀÌºí¿¡ n °³ÀÇ Áߺ¹ÀÌ ÀÖ´Â ÇàÀº, °á°ú ÁýÇÕ¿¡¼´Â min( m , n ) °³ÃâÇöÇÕ´Ï´Ù.
°°Àº SELECT¹®¿¡ º¹¼öÀÇINTERSECT¿¬»êÀÚ°¡ ÀÖ´Â °æ¿ì, °ýÈ£°¡ ¾ø´Â ÇÑ, ±×°ÍµéÀº ¿ÞÂÊ¿¡¼ ¿À¸¥ÂÊÀ¸·Î Æò°¡µË´Ï´Ù. INTERSECT´Â UNIONº¸´Ù °ÇÑ °ü°è¸¦ °¡Áý´Ï´Ù. Áï, A UNION B INTERSECT C ´ÂA UNION (B INTERSECT C)¶ó°í ÇØ¼®µË´Ï´Ù.
Çö½ÃÁ¡¿¡¼´ÂINTERSECTÀÇ °á°ú³ªINTERSECT¿¡ ´ëÇÑ ÀԷ¿¡ FOR UPDATE¿Í FOR SHARE¸¦ ÁöÁ¤ÇÒ ¼ö ¾ø½À´Ï´Ù.
EXCEPT´Â Åë»ó ÀÌÇÏÀÇ Çü½ÄÀÌ µË´Ï´Ù.
select_statement EXCEPT [ ALL ] select_statement
select_statement ´Â ORDER BY,LIMIT,FOR UPDATE, FOR SHARE±¸¸¦ °¡ÁöÁö ¾Ê´Â, ÀÓÀÇÀÇSELECT ¹®ÀÌ µé¾î°©´Ï´Ù.
EXCEPT´Â ÁÂÃøÀÇSELECT¹®ÀÇ °á°ú¿¡´Â Á¸ÀçÇØ, ¿ìÃøÀÇSELECT¹®ÀÇ °á°ú¿¡´Â Á¸Àç ÇÏÁö ¾Ê´Â ÇàÀÇ ÁýÇÕÀ» »ý¼ºÇÕ´Ï´Ù.
ALL¿É¼ÇÀÌ ÁöÁ¤µÇ¾î ÀÖÁö ¾ÊÀº ÇÑ EXCEPTÀÇ °á°ú¿¡´Â Áߺ¹ÇàÀº Æ÷ÇÔµÇÁö ¾Ê½À´Ï´Ù. ALL°¡ ÀÖ´Â °æ¿ì, ÁÂÃø Å×ÀÌºí¿¡ m °³, ¿ìÃø Å×ÀÌºí¿¡ n °³ÀÇ Áߺ¹ÀÌ ÀÖ´Â ÇàÀº, °á°ú ÁýÇÕ¿¡¼´Â max( m - n , 0) °³ÃâÇöÇÕ´Ï´Ù.
°°Àº SELECT¸í·É¹®¿¡ º¹¼öÀÇEXCEPT ¿¬»êÀÚ°¡ ÀÖ´Â °æ¿ì, °ýÈ£°¡ ¾ø´Â ÇÑ, ±×°ÍµéÀº ¿ÞÂÊ¿¡¼ ¿À¸¥ÂÊÀ¸·Î Æò°¡µË´Ï´Ù. EXCEPTÀÇ °ü°èÀÇ °ÇÔÀºUNION¿Í °°½À´Ï´Ù.
Çö½ÃÁ¡¿¡¼´Â EXCEPTÀÇ °á°ú³ªEXCEPT¿¡ ´ëÇÑ ÀԷ¿¡ FOR UPDATE¶Ç´ÂFOR SHARE¸¦ ÁöÁ¤ÇÒ ¼ö ¾ø½À´Ï´Ù.
ORDER BY±¸´Â Åë»ó ÀÌÇÏÀÇ Çü½ÄÀÌ µË´Ï´Ù(ÀÌ ±¸´Â »ý·« °¡´ÉÇÕ´Ï´Ù).
ORDER BY expression [ ASC | DESC | USING operator ] [, ...]
expression ¿¡´Â Ãâ·Â¿(SELECT¸®½ºÆ® Ç׸ñ)ÀÇ À̸§ ¶Ç´Â ¼¼ö, ȤÀº ÀԷ¿ °ªÀ¸·ÎºÎÅÍ Çü¼ºµÇ´Â ÀÓÀÇÀÇ ½ÄÀ» ÃëÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù.
ORDER BY±¸¸¦ »ç¿ëÇÏ¸é °á°úÇàÀ» ÁöÁ¤ÇÑ ½Ä(º¹¼ö°¡´É)¿¡ µû¶ó Á¤·ÄÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. °¡Àå ÁÂÃøÀÇ ½ÄÀ» »ç¿ëÇØ ºñ±³ÇÑ °á°ú, 2°³ÀÇ ÇàÀÌ µ¿ÀÏÇÏ´Ù°í ÆÇ´ÜµÇ¾úÀ» °æ¿ì´Â, 1°³ ¿ìÃøÀÇ ½ÄÀ» »ç¿ëÇØ ºñ±³ÇÕ´Ï´Ù. ±× °á°úµµ µ¿ÀÏÇϸé, ÇÑÃþ ´õ ´ÙÀ½ÀÇ ½Ä¿¡ ÁøÇàµË´Ï´Ù. ÁöÁ¤ÇÑ ¸ðµç ½Ä¿¡¼ µ¿ÀÏÇÏ´Ù°í ÆÇ´ÜµÇ¾úÀ» °æ¿ì´Â, ½ÇÇà¿¡ ÀÇÁ¸ÇÑ Â÷·Ê·Î µ¹·ÁÁÖ¾îÁý´Ï´Ù.
¼¼ö´Â, °á°ú¿ÀÇ À§Ä¡(¿ÞÂÊ¿¡¼ ¿À¸¥ÂÊÀ¸·Î ÇÒ´çÇÒ ¼ö ÀÖ½À´Ï´Ù)¸¦ ³ªÅ¸³À´Ï´Ù. À̰ÍÀ» »ç¿ëÇϸé À¯ÀϹ«ÀÇÇÑ À̸§À» °¡ÁöÁö ¾Ê´Â ¿ÀÇ ¼ø¼¸¦ Á¤ÀÇÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. AS±¸¸¦ »ç¿ëÇÏ¸é °á°ú¿¿¡ À̸§À» ÇÒ´çÇÒ ¼ö°¡ ÀÖÀ¸¹Ç·Î, À̰ÍÀº ¾Æ¹«·¡µµ ÇÊ¿äÇÑ ±â´ÉÀ̶ó°í ÇÏ´Â °ÍÀº ¾Æ´Õ´Ï´Ù.
¶Ç,ORDER BY±¸¿¡´Â SELECT°á°ú ¸®½ºÆ®¿¡ ÃâÇöÇÏÁö ¾Ê´Â ¿À» Æ÷ÇÔÇÑ, ÀÓÀÇÀÇ ½ÄÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. µû¶ó¼, ÀÌÇÏÀÇ ¹®ÀåÀº À¯È¿ÇÕ´Ï´Ù.
SELECT name FROM distributors ORDER BY code;
´Ù¸¸,UNION,INTERSECT,EXCEPTÀÇ °á°ú¿¡ORDER BY¸¦ Àû¿ëÇÏ´Â °æ¿ì´Â, ½ÄÀº »ç¿ëÇÏÁö ¸øÇϰí, Ãâ·Â¿ÀÇ À̸§À̳ª ¼¼ö¸¸À» ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù°í ÇÏ´Â Á¦ÇÑÀÌ ÀÖ½À´Ï´Ù.
ORDER BYÀÇ ½ÄÀ¸·Î¼ °á°ú ¿ À̸§°ú ÀԷ¿ À̸§ÀÇ ¾çÂÊ ¸ðµÎ¿¡ ÀÏÄ¡ÇÏ´Â ´Ü¼øÇÑ À̸§ÀÌ ÁÖ¾îÁ³À» °æ¿ì, ORDER BY´Â ±×°ÍÀ» °á°ú¿ À̸§À¸·Î¼ Ãë±ÞÇÕ´Ï´Ù. À̰ÍÀº, °°Àº »óȲ¿¡ ÀÖ¾î¼ÀÇGROUP BYÀÇ ¼±Åðú´Â ¹Ý´ëÀÔ´Ï´Ù. ÀÌ ºÒÀÏÄ¡´Â Ç¥ÁØ SQL¿ÍÀÇ È£È¯¼ºÀ» º¸°ü À¯ÁöÇϱâ À§Çؼ ¹ß»ýÇϰí ÀÖ½À´Ï´Ù.
ORDER BYÁßÀÇ ÀÓÀÇÀÇ ½ÄÀÇ µÚ¿¡, »ý·« °¡´ÉÇÑ Å°¿öµåASC(½Â¼ø),DESC(³»¸²Â÷¼ø)¸¦ ºÎ°¡ÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. ÁöÁ¤ÀÌ ¾øÀ¸¸é, ±âº»°ªÀ¸·ÎASC°¡ ÀÖ´Â °ÍÀ¸·Î¼ ´Ù·ç¾îÁý´Ï´Ù. ´ë¾ÈÀûÀ¸·Î ¼ø¼¸¦ ÁöÁ¤ÇÏ´Â ¿¬»êÀÚ¸íÀ»USING±¸·Î ÁöÁ¤ÇÏ´Â ¹æ¹ýµµ ÀÖ½À´Ï´Ù. ¼ø¼ ÁöÁ¤ ¿¬»êÀÚ´Â ¾î¶°ÇÑ B-Tree ¿¬»êÀÚÁ·ÀÇ ¼ÒµçÁö ¶Ç´Â ´ëµçÁö ¿¬»êÀÚ°¡ ¾Æ´Ï¸é ¾ÈµË´Ï´Ù. Åë»ó ASC´ÂUSING <¿ÍDESC´ÂUSING >¿Í °°½À´Ï´Ù (´Ù¸¸, »ç¿ëÀÚ Á¤ÀÇ µ¥ÀÌÅÍÇüÀÇ ÀÛ¼º½Ã¿¡´Â ±âº»°ªÀÇ Á¤·Ä ¼ø¼¸¦ Á¤ÀÇÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. ¶Ç, ´Ù¸¥ À̸§ÀÇ ¿¬»êÀÚ¿Í ´ëÀÀ ºÙÀ̰í ÇÒ ¼öµµ ÀÖ½À´Ï´Ù).
±× null°ªÀº ´Ù¸¥ °ªº¸´Ù ³ô°Ô Á¤·ÄÇÕ´Ï´Ù. ¹Ù²Ù¾î ¸»ÇÏ¸é ¿À¸§Â÷¼øÁ¤·Ä, ³¡¿¡¼ null°ª Á¤·Ä, ³»¸²Â÷¼ø Á¤·Ä, ½ÃÀÛÁ¡¿¡¼ null°ªÀ¸·Î Á¤·ÄÀ̶ó ÇÕ´Ï´Ù.
¹®ÀÚÇü µ¥ÀÌÅÍ¿¡¼´Â µ¥ÀÌÅͺ£À̽º Ŭ·¯½ºÅÍÀÇ ÃʱâȽ÷Π°áÁ¤µÇ´Â ·ÎÄÉÀÏ ÁöÁ¤ÀÇ Á¶ÇÕ¼ø¼¿¡ µû¶ó Á¤·ÄµË´Ï´Ù.
DISTINCT°¡ ÁöÁ¤µÇ¸é(ÀÚ), Áߺ¹ ÇÏ´Â ÇàÀº ¸ðµÎ °á°ú ¼¼Æ®·ÎºÎÅÍ »èÁ¦µË´Ï´Ù (°¢°¢ 1ÇุÀÌ º¸°ü À¯ÁöµË´Ï´Ù). ALL´Â ÀÌ ¹Ý´ë·Î, ¸ðµç ÇàÀÌ º¸°ü À¯ÁöµË´Ï´Ù. À̰ÍÀÌ ±âº»°ªµË´Ï´Ù.
DISTINCT ON ( expression [, ...] )(Àº)´Â °¢ Çà ÁýÇÕ ¾È¿¡¼, ÁöÁ¤ÇÑ ½ÄÀÌ µ¿ÀÏÇÏ´Ù°í Æò°¡ÇÑ ÃÖÃÊÀÇ ÇุÀ» º¸°ü À¯ÁöÇÕ´Ï´Ù. DISTINCT ON½ÄÀº »ó¼úÀÇORDER BY¿Í °°Àº ±ÔÄ¢À¸·Î ´Ù·ç¾îÁý´Ï´Ù. °¢ ÁýÇÕÀÇ"ÃÖÃÊÀÇ Çà"Àº ORDER BY¸¦ »ç¿ëÇØ ¸ñÀûÀÇ ÇàÀÌ È®½ÇÈ÷ ÃÖÃÊ·Î ³ªÅ¸³ªµµ·Ï ÇÏÁö ¾Ê´Â ÇÑ ¿¹ÃøÇÒ ¼ö ¾ø½À´Ï´Ù. ¿¹¸¦ µé¸é, ´ÙÀ½ÀÇ ¿¹´Â °¢ÁöÁ¡ÀÇ ÃÖ½ÅÀÇ ±â»ó Á¤º¸¸¦ ²¨³À´Ï´Ù.
SELECT DISTINCT ON (location) location, time, report
FROM weather_reports
ORDER BY location, time DESC;
ORDER BY¸¦ »ç¿ëÇØ °¢ÁöÁ¡À» ½Ã°£¿¡ ÀÇÇØ ³»¸²Â÷¼ø¿¡ Á¤·ÄÇÏÁö ¾ÊÀ¸¸é °¢ÁöÁ¡¿¡ ´ëÇØ ¾òÀ» ¼ö ÀÖ´Â Á¤º¸°¡ ¾ðÁ¦ÀÇ °ÍÀΰ¡´Â ¸ð¸¨´Ï´Ù.
DISTINCT ON·Î ÁöÁ¤ÇÏ´Â ½ÄÀºORDER BYÀÇ °¡Àå ÁÂÃøÀÇ ½Ä°ú ÀÏÄ¡ÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. ORDER BY±¸´Â Åë»ó °¢DISTINCT ON±×·ì Áß¿¡¼ÀÇ ÇàÀÇ ¿ì¼± ¼øÀ§¸¦ °áÁ¤ÇÏ´Â Ãß°¡ÀûÀÎ ½ÄÀ» Æ÷ÇÔÇÕ´Ï´Ù.
LIMIT±¸´Â 2°³ÀÇ µ¶¸³ÇÑ ºÎ±¸·ÎºÎÅÍ ±¸¼ºµË´Ï´Ù.
LIMIT {
count
| ALL }
OFFSET
start
count ¿¡´Â µ¹·ÁÁÖ¾îÁö´Â ÇàÀÇ ÃÖ´ë¼ö¸¦, ÇÑÆí, start ¿¡´Â ÇàÀ» µ¹·ÁÁֱ⠽ÃÀÛÇϱâ Àü¿¡ ³¯¸®´Â Çà¼ö¸¦ ÁöÁ¤ÇÕ´Ï´Ù. ¾çÂÊ ¸ðµÎ ÁöÁ¤µÇ¾úÀ» °æ¿ì, start ÇàÀº count ÇàÀÌ µ¹·ÁÁö´Â ¼ýÀÚ¼¼±â¸¦ ½ÃÀÛÇϱâ Àü¿¡ ½ºÅµµÇ¾î Áø´Ù.
LIMIT¸¦ »ç¿ëÇÒ ¶§´Â, °á°úÇàÀ» ÀÏÀÇÀÎ Â÷·Ê·Î °Á¦ÇÏ´ÂORDER BY±¸¸¦ »ç¿ëÇϸé(ÀÚ) ÁÁÀ» °ÍÀÔ´Ï´Ù. ±×·¸°Ô ÇÏÁö ¾Ê´Ù°í ¹®ÀÇ °á°úÀÇ ¾î´À ºÎºÐÀÌ µ¹·ÁÁÖ¾îÁö´ÂÁö¸¦ ¸ð¸¨´Ï´Ù. 10~20Çà°±îÁö¸¦ Ãâ·ÂÇÑ´Ù°í ÇØµµ, ¾î´À Â÷·Ê·Î ³ª¶õÇØÁú ¼ö ÀÖ¾úÀ» ¶§ÀÇ 10~20Çà°Àϱî¿ä. ORDER BY¸¦ ÁöÁ¤ÇÏÁö ¾Ê´Â ÇÑ, ÇàÀÌ µ¹·ÁÁÖ¾îÁö´Â Â÷·Ê´Â ºÒ¸íÇÕ´Ï´Ù.
FOR UPDATE´Â ÀÌÇÏÀÇ Çü½ÄÀÌ µË´Ï´Ù.
FOR UPDATE [ OF table_name [, ...] ] [ NOWAIT ]
±í°Ô °ü·ÃÇÏ´ÂFOR SHARE±¸´Â ÀÌÇÏÀÇ Çü½ÄÀÌ µË´Ï´Ù.
FOR SHARE [ OF table_name [, ...] ] [ NOWAIT ]
FOR UPDATE¸¦ »ç¿ëÇϸé(ÀÚ), ¹®ÀÇ¿¡ ÀÇÇØ °Ë»öµÈ ÇàÀÌ °»½Å¿ëÀ¸·Î ¶ô µË´Ï´Ù. À̰Ϳ¡ ÀÇÇØ, ÇöÇàÀÇ Æ®·£Àè¼Ç(transaction)°¡ Á¾·áÇÒ ¶§±îÁö´Â, ÀÌ·¯ÇÑ ÇàÀÌ ´Ù¸¥ Æ®·£Àè¼Ç(transaction)¿¡ ÀÇÇØ º¯°æµÇ°Å³ª »èÁ¦ µÇ°Å³ª ÇÏ´Â °ÍÀÌ ¾ø¾îÁý´Ï´Ù. Áï, ÇöÇàÀÇ Æ®·£Àè¼Ç(transaction)°¡ Á¾·áÇÒ ¶§±îÁö´Â, ´Ù¸¥ Æ®·£Àè¼Ç(transaction)°¡ ÀÌ·¯ÇÑ Çà¿¡ ´ëÇØ¼UPDATE,DELETE,SELECT FOR UPDATE¸¦ ½ÃÇàÇØµµ °ÅºÎµË´Ï´Ù. ¶Ç, ´Ù¸¥ Æ®·£Àè¼Ç(transaction)·ÎºÎÅÍÀÇUPDATE,DELETE,SELECT FOR UPDATE¿¡ ÀÇÇØ ¼±ÅÃÇÑ ÇàÀÌ ¶ô µÇ°í ÀÖ´Â °æ¿ì,SELECT FOR UPDATE¸¦ ½ÇÇàÇÏ·Á°í Çϸé(ÀÚ),SELECT FOR UPDATE´Â ±× Æ®·£Àè¼Ç(transaction)°¡ Á¾·áÇÏ´Â °ÍÀ» ±â´Ù¸®°í ³ª¼, ±× ÈÄ ÇàÀ» Àá±×¾î °»½ÅµÈ ÇàÀ» µ¹·ÁÁÝ´Ï´Ù(ÇàÀÌ »èÁ¦µÇ¾úÀ» °æ¿ì´Â µ¹·ÁÁÖÁö ¾Ê½À´Ï´Ù). ÀÚ¼¼ÇÑ °ÍÀºChapter 12À» ÂüÁ¶ÇØ ÁÖ¼¼¿ä.
´Ù¸¥ Æ®·£Àè¼Ç(transaction)ÀÇ À§Å¹À» ´ë±âÇÏ´Â ÀÏ ¾øÀÌ Á¶ÀÛÀ» ÁøÇà½ÃŰ·Á¸é ,NOWAIT¿É¼ÇÀ» »ç¿ëÇØ ÁÖ¼¼¿ä. ¼±ÅÃÇàÀÇ ¶ôÀ» Áï¼®¿¡¼ ȹµæÇÒ ¼ö ¾øÀ» ¶§,SELECT FOR UPDATE NOWAIT´Â ´ë±âÇÏÁö ¾Ê°í , ¿¡·¯¸¦ º¸°íÇÕ´Ï´Ù. NOWAITÇÏÇà ·¹º§ ¶ô¿¡°Ô¸¸¿¡ Àû¿ëµÇ´Â Á¡¿¡ ÁÖÀÇÇØ ÁÖ¼¼¿ä. Áï, ÇÊ¿äÇÑROW SHAREÅ×ÀÌºí ·¹º§ ¶ôÀº Åë»ó ±×´ë·ÎÀÇ ¹æ¹ý( Chapter 12ÂüÁ¶)À¸·Î ȹµæµË´Ï´Ù. ¸¸¾à, Å×ÀÌºí ·¹º§ÀÇ ¶ôÀ» ´ë±âÇÏÁö ¾Ê°í ȹµæÇØ¾ß ÇÏ´Â °ÍÀ̸é, LOCK ÀÇNOWAIT¿É¼ÇÀ» »ç¿ëÇØ ÁÖ¼¼¿ä.
FOR SHAREµµ ÀÌ¿Í °°ÀÌ ÇൿÇÕ´Ï´Ù¸¸, ÀÔ¼öÇÏ´Â Çà¿¡ ´ëÇØ ¹èŸÀû ¶ôÀ» ȹµæÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó °øÀ¯ ¶ôÀ» ȹµæÇÏ´Â Á¡ÀÌ ´Ù¸¨´Ï´Ù. °øÀ¯ ¶ô¿¡ ÀÇÇØ, ŸƮ·£Àè¼Ç(transaction)¿¡ ÀÇÇÑ ±× Çà¿¡ ´ëÇÑUPDATE,DELETE,SELECT FOR UPDATEÁ¶ÀÛÀº ºí·Ï µË´Ï´Ù. ±×·¯³ª, ŸƮ·£Àè¼Ç(transaction)¿¡ ÀÇÇÑSELECT FOR SHAREÁ¶ÀÛÀ» ¸·Áö ¾Ê½À´Ï´Ù.
FOR UPDATE¶Ç´Â FOR SHARE³»¿¡ ƯÁ¤ÀÇ Å×À̺íÀÌ ÁöÁ¤µÇ°í ÀÖ´Â °æ¿ì´Â, ±× Å×À̺íÀÇ ÇุÀÌ ¶ô µË´Ï´Ù. SELECT³»ÀÇ ´Ù¸¥ Å×À̺íÀº Åë»ó ´ë·Î¿¡ ÀÐÈü´Ï´Ù. Å×ÀÌºí ¸®½ºÆ®¸¦ °¡ÁöÁö ¾Ê´ÂFOR UPDATEȤÀº FOR SHARE±¸´Â, ±× ¸í·ÉÀ¸·Î »ç¿ëµÇ´Â ¸ðµç Å×ÀÌºí¿¡ ¿µÇâÀ» ÁÝ´Ï´Ù. FOR UPDATEȤÀº FOR SHARE°¡ ºä ¶Ç´Â ¼ºêÄõ¸®·Î »ç¿ëµÇ¾úÀ» °æ¿ì, ±× ºä³ª ¼ºêÄõ¸®·Î »ç¿ëµÇ´Â ¸ðµç Å×ÀÌºí¿¡ ¿µÇâÀ» ÁÝ´Ï´Ù.
´Ù¸¥ ¶ô ¹æ½ÄÀ» ´Ù¸¥ Å×À̺í·Î ÁöÁ¤ÇÒ Çʿ䰡 ÀÖÀ¸¸é, º¹¼öÀÇFOR UPDATE¿Í FOR SHARE±¸¸¦ ±â¼úÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. FOR UPDATE±¸¿Í FOR SHARE±¸ÀÇ ¾çÂÊ ¸ðµÎ·Î µ¿ÀÏÇÑ Å×À̺íÀ» ±â¼úÇßÀ»(¶Ç´Â ¾Ï¹¬ÀûÀ¸·Î ¿µÇâÀÌ ÁÖ¾îÁú) °æ¿ì,FOR UPDATE·Î¼ 󸮵˴ϴÙ. °°ÀÌ ¾î´À Å×ÀÌºí¿¡ ¿µÇâÀ» ÁÖ´Â ±¸ÀÇ ¾î´ÀÂÊÀ̵çÀ¸·Î NOWAIT°¡ ÁöÁ¤µÇ¾úÀ» °æ¿ì, ±× Å×À̺íÀºNOWAIT·Î¼ 󸮵˴ϴÙ.
FOR UPDATE¹× FOR SHARE´Â µ¹·ÁÁÖ¾îÁö´Â ÇàÀÌ Å×À̺íÀÇ ¾î´À Çà¿¡ ´ëÀÀÇÏ´ÂÁö°¡ ¸íÈ®ÇÏ°Ô ½Äº°ÇÒ ¼ö ¾ø´Â °æ¿ì¿¡´Â »ç¿ëÇÒ ¼ö°¡ ¾ø½À´Ï´Ù. ¿¹¸¦ µé¸é, ÁýÇÕ¿¡´Â »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.
| Caution |
|
ÇàÀ» Àá±×°í ³ª¼ ÈÄÀÇ ¼¼ÀÌºê Æ÷ÀÎÆ®³ª PL/pgSQL¿¹¿Ü ºí·ÏÀ¸·Î ±× ÇàÀ» ÆíÁýÇÏ´Â °ÍÀº ÇÇÇØ ÁÖ¼¼¿ä. ÈÄÀÇ ·Ñ¹é(rollback)·Î ¶ôÀÌ ¾ø¾îÁ® ¹ö¸³´Ï´Ù. ÀÌÇÏ¿¡ ¿¹¸¦ ³ªÅ¸³À´Ï´Ù. BEGIN; SELECT * FROM mytable WHERE key = 1 FOR UPDATE; SAVEPOINT s; UPDATE mytable SET ... WHERE key = 1; ROLLBACK TO s; ROLLBACKÈÄ ÇàÀº ¼ºê Æ÷ÀÎÆ®ÀüÀÇ ¶ô µÈ °»½ÅÀü »óÅ¿¡ µ¹¾Æ¿ÀÁö ¾Ê°í ½ÇÁú ¶ô µÇÁö ¾Ê½À´Ï´Ù. ÇöÀçÀÇ Æ®·£Àè¼Ç(transaction)·Î ¶ô µÈ ÇàÀÌ ¾÷µ¥ÀÌÆ®µÇ°Å³ª »èÁ¦ µÇ°Å³ª ÇßÀ» °æ¿ì³ª, °øÀ¯ ¶ôÀÌ ¹èŸ ¶ô¿¡ Çâ»óÇßÀ» °æ¿ì, À̰ÍÀº À§ÇèÇÕ´Ï´Ù. ¸ðµç °æ¿ì¿¡ ´ëÇØ, ÀÌÀüÀÇ ¶ô »óŸ¦ ÀØÀ» ¼ö ÀÖ°í ÀÖ½À´Ï´Ù. Æ®·£Àè¼Ç(transaction)°¡ ±× ÈÄ, ¿øÀÇ ¶ô ¸í·É°ú °è¼ÓµÇ´Â ¾÷µ¥ÀÌÆ®µ¿¾È »óÅ¿¡ ·Ñ¹é(rollback) ÇßÀ» °æ¿ì, ±× ÇàÀº ¶ôµÇ¾î ÀÖÁö ¾ÊÀº »óÅ·μ ³ªÅ¸³³´Ï´Ù. À̰ÍÀº ½ÇÇàÀÇ ºÎÁ·À̸ç Àå·¡ÀÇPostgreSQL¸±¸®½º·Î ¼öÁ¤ÇÒ ¿¹Á¤ÀÔ´Ï´Ù. |
| Caution |
|
LIMIT±¸¿Í FOR UPDATE/SHARE±¸ÀÇ ¾çÂÊ ¸ðµÎ¸¦ »ç¿ëÇÑSELECT¸í·É¿¡¼´Â LIMIT·Î ÁöÁ¤ÇÑ Çà¼öº¸´Ù ÀûÀº ÇàÀÌ µ¹·ÁÁÖ¾îÁö´Â °æ¿ì°¡ ÀÖ½À´Ï´Ù. À̰ÍÀºLIMIT°¡ ¿ì¼± ÃÖÃÊ·Î Àû¿ëµÇ±â ¶§¹®ÀÔ´Ï´Ù. ÀÌ ¸í·ÉÀº ÁöÁ¤ÇÑ ÇàÀÇ ¼ýÀÚ¸¦ ¼±ÅÃÇÏÁö¸¸, ±× ÀϺΠȤÀº ¸ðµÎ¿¡ ´ëÇÑ ¶ôÀÇ ÃëµæÀÌ ºí·Ï µÉ °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù. ÀÌSELECTÀÇ ºí·ÏÀÌ ÇØÁ¦µÈ ½ÃÁ¡¿¡¼, ÇàÀº »èÁ¦µÇ°í ÀÖÀ»Áöµµ ¸ð¸£°í, ¶Ç, Äõ¸®ÀÇWHEREÁ¶°Ç¿¡ ¸ÂÁö ¾Ê°Ô ¾÷µ¥ÀÌÆ® µÇ¾î ÀÖÀ»Áöµµ ¸ð¸¨´Ï´Ù. ÀÌ·¯ÇÑ °æ¿ì, ÇàÀº µ¹·ÁÁÖ¾îÁöÁö ¾Ê½À´Ï´Ù. |
filmsÅ×À̺íÀ»distributorsÅ×À̺í°ú °áÇÕÇÕ´Ï´Ù.
SELECT f.title, f.did, d.name, f.date_prod, f.kind
FROM distributors d, films f
WHERE f.did = d.did
title | did | name | date_prod | kind
-------------------+-----+--------------+------------+----------
The Third Man | 101 | British Lion | 1949-12-23 | Drama
The African Queen | 101 | British Lion | 1951-08-11 | Romantic
...
¸ðµç ¿µÈÀÇlen¿À» ÇÕ°èÇØ kind¿¿¡ ÀÇÇØ °á°ú¸¦ ±×·ìÈ ÇÕ´Ï´Ù.
SELECT kind, sum(len) AS total FROM films GROUP BY kind; kind | total ----------+------- Action | 07:34 Comedy | 02:58 Drama | 14:28 Musical | 06:42 Romantic | 04:38
¸ðµç ¿µÈÀÇlen¿À» ÇÕ°èÇØ kind¿¿¡ ÀÇÇØ °á°ú¸¦ ±×·ìÈ ÇØ, ÇÕ°è°¡ 5½Ã°£º¸´Ù ÀûÀº ±×·ìÀÇ Çհ踦 Ç¥½ÃÇÕ´Ï´Ù.
SELECT kind, sum(len) AS total
FROM films
GROUP BY kind
HAVING sum(len) < interval '5 hours';
kind | total
----------+-------
Comedy | 02:58
Romantic | 04:38
´ÙÀ½¿¡ °á°ú¸¦ 2¹øÂ°ÀÇ ¿(name)ÀÇ ³»¿ë¿¡ ±Ù°ÅÇØ Á¤·ÄÇÏ´Â ¹æ¹ýÀ» 2°³ ¿¹½ÃÇÕ´Ï´Ù.
SELECT * FROM distributors ORDER BY name; SELECT * FROM distributors ORDER BY 2; did | name -----+------------------ 109 | 20th Century Fox 110 | Bavaria Atelier 101 | British Lion 107 | Columbia 102 | Jean Luc Godard 113 | Luso films 104 | Mosfilm 103 | Paramount 106 | Toho 105 | United Artists 111 | Walt Disney 112 | Warner Bros. 108 | Westward
´ÙÀ½ÀÇ ¿¹´Â distributorsÅ×À̺í°úactorsÅ×À̺íÀÇ ÈÁýÇÕÀ» ÃëµæÇÏ´Â ¹æ¹ýÀ» ³ªÅ¸³»°í ÀÖ½À´Ï´Ù. °Ô´Ù°¡ ¾çÂÊ ¸ðµÎÀÇ Å×À̺í·Î °á°ú¸¦ W¶ó°í ÇÏ´Â ¹®ÀÚ·Î ½ÃÀ۵Ǵ Çà¿¡¸¸ ÇÑÁ¤Çϰí ÀÖ½À´Ï´Ù. Áߺ¹ ÇÏÁö ¾Ê´Â ÇุÀÌ ÇÊ¿äÇØ¼ ALLŰ¿öµå´Â »ý·« µÇ°í ÀÖ½À´Ï´Ù.
distributors: actors:
did | name id | name
-----+-------------- ----+----------------
108 | Westward 1 | Woody Allen
111 | Walt Disney 2 | Warren Beatty
112 | Warner Bros. 3 | Walter Matthau
... ...
SELECT distributors.name
FROM distributors
WHERE distributors.name LIKE 'W%'
UNION
SELECT actors.name
FROM actors
WHERE actors.name LIKE 'W%';
name
----------------
Walt Disney
Walter Matthau
Warner Bros.
Warren Beatty
Westward
Woody Allen
´ÙÀ½¿¡ FROM±¸³»¿¡¼ÀÇ ÇÔ¼öÀÇ »ç¿ë ¹æ¹ý¿¡ ´ëÇØ ¿ Á¤ÀÇ ¸®½ºÆ®°¡ ÀÖ´Â °æ¿ì¿Í ¾ø´Â °æ¿ìÀÇ ¾çÂÊ ¸ðµÎÀÇ ¿¹¸¦ ³ªÅ¸³À´Ï´Ù.
CREATE FUNCTION distributors(int) RETURNS SETOF distributors AS $$
SELECT * FROM distributors WHERE did = $1;
$$ LANGUAGE SQL;
SELECT * FROM distributors(111);
did | name
-----+-------------
111 | Walt Disney
CREATE FUNCTION distributors_2(int) RETURNS SETOF record AS $$
SELECT * FROM distributors WHERE did = $1;
$$ LANGUAGE SQL;
SELECT * FROM distributors_2(111) AS (f1 int, f2 text);
f1 | f2
-----+-------------
111 | Walt Disney
¹°·Ð SELECT¹®Àº Ç¥ÁØ SQL¿Í ȣȯ¼ºÀÌ ÀÖ½À´Ï´Ù. ±×·¯³ª, È®Àå ±â´ÉÀ̳ª ½ÇÇöµÇ¾î ÀÖÁö ¾ÊÀº ±â´Éµµ ¸î°³Àΰ¡ ÀÖ½À´Ï´Ù.
PostgreSQL¿¡¼´Â FROM±¸¸¦ »ý·« ÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. À̰Ϳ¡ ÀÇÇØ, ÀÌÇÏ¿Í °°ÀÌ ´Ü¼øÇÑ ½ÄÀ» °è»ê½Ãų ¼ö°¡ ÀÖ½À´Ï´Ù.
SELECT 2+2;
?column?
----------
4
´Ù¸¥SQLµ¥ÀÌÅͺ£À̽º¿¡¼´Â ÀÌ·¯ÇÑSELECT¸¦ ½Ç½ÃÇϱâ À§Çؼ ´õ¹ÌÀÇ 1Çà Å×À̺íÀ» Á¦¿ÜÇÒ ¼ö ¾ø½À´Ï´Ù.
FROM±¸ÀÇ ÁöÁ¤ÀÌ ¾ø´Â °æ¿ì, Äõ¸®¿¡¼´Â µ¥ÀÌÅͺ£À̽º Å×À̺íÀ» ÂüÁ¶ÇÒ ¼ö°¡ ¾ø½À´Ï´Ù. ¿¹¸¦ µé¸é, ÀÌÇÏÀÇ Äõ¸®´Â ¹«È¿ÀÔ´Ï´Ù.
SELECT distributors.* WHERE distributors.name = 'Westward';
PostgreSQL¸±¸®½º 8.1º¸´Ù Àü±îÁö¿¡¼´Â, ÀÌ·¯ÇÑ ÇüÅÂÀÇ Äõ¸®¸¦ ¹Þ¾Æµé¿© Äõ¸®·Î ÂüÁ¶ÇÏ´Â °¢ Å×ÀÌºí¿¡ ´ëÇÑ ¾Ï¹¬ÀûÀÎ Ç׸ñÀ» Äõ¸®ÀÇFROM±¸¿¡ Ãß°¡Çϰí ÀÖ¾ú½À´Ï´Ù. À̰ÍÀº Ç¥ÁØ SQL¿¡ µû¸£Áö ¾Ê°í ¶Ç, ¿¡·¯¸¦ À̲ø±â ½±±â ¶§¹®¿¡, ±âº» µ¿ÀÛÀº ¾Æ´Ï°Ô µÇ¾ú½À´Ï´Ù. ÀÌ µ¿ÀÛ¿¡ ÀÇÁ¸ÇÏ´Â ¾ÖÇø®ÄÉÀ̼ǿ¡ ÀÖ¾î¼ÀÇ È£È¯¼ºÀ» À¯ÁöÇÏ·Á¸é, add_missing_from¼³Á¤ º¯¼ö¸¦ À¯È¿ÇÏ°Ô ÇØ ÁÖ¼¼¿ä. enabled.
Ç¥ÁØ SQL¿¡¼´Â »ý·« °¡´ÉÇÑ Å°¿öµåÀÎAS´Â ´Ü¼øÇÑ ³ëÀÌÁî·Î¼ ´Ù·ç¾îÁ® »ý·« ÇØµµ ¿µÇâÀº ¾ø½À´Ï´Ù. PostgreSQLÀÇ ÆÄ¼´Â Ãâ·Â¿ÀÇ À̸§À» º¯°æÇÒ ¶§¿¡ ÀÌ Å°¿öµå¸¦ ÇÊ¿ä·Î ÇÕ´Ï´Ù. ¿Ö³ÄÇϸé, ÇüÅÂÀÇ È®Àå ±â´ÉÀ» »ý°¢Çϸé ÀÌ Å°¿öµå°¡ ¾øÀ¸¸é ±¸¹® ºÐ¼®ÀÇ ºÒ¸í·áÇÔÀ¸·Î ¿¬°áµÇ±â ¶§¹®ÀÔ´Ï´Ù. ±×·¯³ª,FROMÇ׸ñ¿¡¼´ÂAS´Â »ý·« °¡´ÉÇÕ´Ï´Ù.
Ç¥ÁØ SQL-92¿¡¼´Â ORDER BY±¸·Î »ç¿ëÇÒ ¼ö ÀÖ´Â °ÍÀº °á°úÀÇ ·Ä¸íÀ̳ª ¼ýÀÚ»ÓÀ̸ç GROUP BY±¸·Î »ç¿ëÇÒ ¼ö ÀÖ´Â °ÍÀº, ÀԷ·ĸíÀ¸·ÎºÎÅÍ µÇ´Â ½Ä¸¸ÀÔ´Ï´Ù. PostgreSQL´Â ÀÌ·¯ÇÑ ±¸·Î ¾çÂÊ ¸ðµÎ¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖµµ·Ï È®ÀåµÇ°í ÀÖ½À´Ï´Ù (´Ù¸¸, ºÒ¸í·áÇÔÀÌ ÀÖ´Â °æ¿ì´Â Ç¥ÁØÀÇ ÇØ¼®ÀÌ »ç¿ëµË´Ï´Ù). °Ô´Ù°¡PostgreSQL¿¡¼´Â ¾î´À ÂÊÀÇ ±¸¿¡µµ ÀÓÀÇÀÇ ½ÄÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ½Ä¿¡¼ »ç¿ëµÇ´Â À̸§Àº Ç×»ó °á°ú¿ÀÇ À̸§Àº ¾Æ´Ï°í ÀԷ¿ÀÇ À̸§À¸·Î °£ÁÖÇØÁö´Â °Í¿¡ ÁÖÀÇÇØ ÁÖ¼¼¿ä.
SQL:1999ÀÌÈÄ¿¡¼´Â, SQL-92¿ÍÀÇ »óÀ§ ȣȯ¼ºÀÌ ÀüÇô ¾ø´Â ´Ù¼Ò ´Ù¸¥ Á¤Àǰ¡ ä¿ëµÇ°í ÀÖ½À´Ï´Ù. ±×·¯³ª, ´ëºÎºÐÀÇ °æ¿ì PostgreSQL´Â SQL:1999·Î °°Àº ¹æ¹ýÀ¸·Î ORDER BY³ªGROUP BY¸¦ ÇØ¼®ÇÕ´Ï´Ù.