| PostgreSQL 8.3.3¹®¼ | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Chapter 2. SQL¾ð¾î | Fast Forward | Next |
¿©±â±îÁöÀÇ Äõ¸®´Â, ÇÑ ¹ø¿¡ 1°³ÀÇ Å×ÀÌºí¿¡°Ô¸¸ Á¢±ÙÇÏ´Â °ÍÀ̾ú½À´Ï´Ù. Äõ¸®´Â, ÇÑ ¹ø¿¡ º¹¼öÀÇ Å×ÀÌºí¿¡ ¾×¼¼½º ÇÏ´Â Àϵµ, µ¿½Ã¿¡ Å×ÀÌºí ³» º¹¼öÀÇ ÇàÀÇ Ã³¸®¸¦ ½Ç½ÃÇÏ´Â °æ¿ì µî°ú °°ÀÌ Å×ÀÌºí¿¡ Á¢±ÙÇÏ´Â Àϵµ °¡´ÉÇÕ´Ï´Ù. ÇÑ ¹ø¿¡ µ¿ÀÏÇÑ Å×ÀÌºí ¶Ç´Â º¹¼ö Å×À̺íÀÇ º¹¼ö Çà¿¡ Á¢±ÙÇÏ´Â Äõ¸®´Â, °áÇÕÄõ¸®·Î ºÒ¸³´Ï´Ù. ¿¹¸¦ µé¸é, °ü·ÃÇÏ´Â µµ½ÃÀÇ À§Ä¡ Á¤º¸¸¦ ±â»ó µ¥ÀÌÅÍ¿Í ÇÔ²² Ç¥½ÃÇÏ°í ½ÍÀº °æ¿ì¸¦ µé ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¶§¹®¿¡´Â, weather(³¯¾¾)Å×À̺íÀÇ °¢ ÇàÀÇ city(µµ½Ã)ÀÇ ¿°ú cities(µµ½Ãµé)Å×À̺íÀÇ ¸ðµç ÇàÀÇ name(À̸§)¿À» ºñ±³ÇØ, °ªÀÌ ÀÏÄ¡ÇÏ´Â ÇàÀÇ ½ÖÀ» ¼±ÅÃÇØ¾ß ÇÕ´Ï´Ù.
Note: À̰ÍÀº °³³äÀûÀÎ ¸ðµ¨ »ÓÀÔ´Ï´Ù. ÀϹÝÀûÀ¸·Î, ½ÇÁ¦ °áÇÕÀº °¢°¢ ÇϳªÀÇ ÇàÀÇ ½ÖÀ» ºñ±³ÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó, Á» ´õ È¿À²ÀûÀÎ ¹æ¹ýÀ¸·Î ÇàÇØÁý´Ï´Ù. ±×·¯³ª, À̰ÍÀº »ç¿ëÀÚ¿¡°Ô º¸ÀÌÁö ¾Ê½À´Ï´Ù.
À̰ÍÀº, ÀÌÇÏÀÇ Äõ¸®¿¡ ÀÇÇØ ½Ç½ÃÇÒ ¼ö ÀÖ½À´Ï´Ù.
SELECT *
FROM weather, cities
WHERE city = name;
city | temp_lo | temp_hi | prcp | date | name | location ---------------+---------+---------+------+------------+---------------+----------- San Francisco | 46 | 50 | 0.25 | 1994-11-27 | San Francisco | (-194,53) San Francisco | 43 | 57 | 0 | 1994-11-29 | San Francisco | (-194,53) (2 rows)
ÀÌ °á°ú·ÎºÎÅÍ µÎ °¡Áö¸¦ ¾Ë ¼ö ÀÖ½À´Ï´Ù.
Hayward½Ã¿¡ ´ëÇÑ °á°ú ÇàÀº ¾ø½À´Ï´Ù.
citiesÅ×ÀÌºí¿¡´Â Hayward¿¡ ÀÏÄ¡ÇÏ´Â Ç׸ñÀÌ ¾ø°í, °áÇÕ ½Ã¿¡ weather Å×ÀÌºí ³»ÀÇ ÀÏÄ¡ÇÏÁö ¾Ê´Â ÇàÀº ¹«½ÃµÇ±â ¶§¹®ÀÔ´Ï´Ù.
À̰ÍÀÌ ¾î¶»°Ô µÇ´ÂÁö, °£´ÜÇÏ°Ô º¾½Ã´Ù.
µµ½Ã¸íÀ» °¡Áö´Â 2°³ÀÇ ¿ÀÌ ÀÖ½À´Ï´Ù.
weatherÅ×À̺í°ú citiesÅ×À̺íÀÇ ¿ÀÇ ¸®½ºÆ®°¡ ¿¬°áµÇ°í Àֱ⠶§¹®¿¡ ÀÌ¿Í °°ÀÌ µË´Ï´Ù.
±×·¯³ª ½ÇÁ¦·Î, À̰ÍÀº ¹Ù¶÷Á÷ÇÑ °á°ú´Â ¾Æ´Ï±â ¶§¹®¿¡, *¸¦ »ç¿ëÇÏÁö ¾Ê°í, ¸í½ÃÀûÀ¸·Î Ãâ·Â ¿ÀÇ ¸®½ºÆ®¸¦ ÁöÁ¤ÇÏ°Ô µË´Ï´Ù.
SELECT city, temp_lo, temp_hi, prcp, date, location
FROM weather, cities
WHERE city = name;
¿¬½À: WHERE±¸¸¦ »ý·« ÇßÀ» °æ¿ìÀÇ ÀÌ Äõ¸®ÀÇ Àǹ̸¦ »ý°¢ÇØ ÁÖ¼¼¿ä.
¿Àº °¢°¢ ´Ù¸¥ À̸§À̹ǷÎ, ÆÄ¼´Â ÀÚµ¿ÀûÀ¸·Î ¾î´À Å×À̺íÀÇ ¿ÀÎÁö ÆÇ´ÜÇÒ ¼ö ÀÖ½À´Ï´Ù. 2°³ÀÇ Å×À̺í·Î ¿ À̸§ÀÌ Áߺ¹Çϰí ÀÖ¾úÀ» °æ¿ì´Â, ÀÌÇÏ¿Í °°ÀÌ ¾î´À ÂÊÀÇ ¿À» Ç¥½Ã½ÃŰ°í ½ÍÀºÁö ³ªÅ¸³»±â À§Çؼ ¿ À̸§À» ¼ö½ÄÇØ¾ß ÇÕ´Ï´Ù.
SELECT weather.city, weather.temp_lo, weather.temp_hi,
weather.prcp, weather.date, cities.location
FROM weather, cities
WHERE cities.name = weather.city;
°áÇÕ Äõ¸®¿¡¼´Â ¸ðµç ¿ À̸§À» ¼ö½ÄÇÏ´Â ¹æ½ÄÀÌ ÁÁ´Ù°í ¿©°ÜÁö°í ÀÖ½À´Ï´Ù. Å×À̺íÀÇ ¾î´À ÂÊ¿¡ ´ÙÀ½¿¡ Áߺ¹ÇÏ´Â À̸§À» °¡Áö´Â ¿ÀÌ Ãß°¡µÇ¾úÀ» °æ¿ì¿¡, Äõ¸®°¡ ½ÇÆÐÇϱ⠶§¹®ÀÔ´Ï´Ù.
¿©±â¼ °¡¸®Å°´Â °Í °°Àº °áÇÕ Äõ¸®´Â, ÀÌÇÏ¿Í °°ÀÌ ´Ù¸¥ ÇüÅ·Π³ªÅ¸³¾ ¼ö°¡ ÀÖ½À´Ï´Ù.
SELECT *
FROM weather INNER JOIN cities ON (weather.city = cities.name);
ÀÌ ±¸¹®Àº ¾ÕÀÇ ¿¹º¸´Ù ÀϹÝÀûÀ¸·Î »ç¿ëµÇÁö ¾ÊÁö¸¸, ´ÙÀ½ ÁÖÁ¦ÀÇ ÀÌÇØ¸¦ µ½±â À§Çؼ ¿©±â¼ º¸¿©ÁÖ°í ÀÖ½À´Ï´Ù.
¿©±â¼, ¾î¶»°Ô Çϸé HaywardÀÇ ·¹Äڵ带 ¾òÀ» ¼ö ÀÖ°Ô µÇ´Â °ÍÀϱî¿ä.
½ÇÇàÇÏ°í ½ÍÀº Äõ¸®´Â, weather¸¦ °Ë»ç ÇØ, °¢ Çà¿¡ ´ëÇØ¼, citiesÇà¿¡ ÀÏÄ¡Çϴ°¡ÀÇ ¿©ºÎ¸¦ ÆÇ´ÜÇÏ´Â °ÍÀÔ´Ï´Ù.
ÀÏÄ¡ÇÏÁö ¾Ê´Â ÇàÀÌ ÀÖ¾úÀ» °æ¿ì, citiesÅ×À̺íÀÇ ¿ÀÇ ºÎºÐÀ» ¾î¶°ÇÑ "ºó °ª"¿¡ ¿Å°Ü³õ°í ½Í½À´Ï´Ù.
ÀÌ·± Á¾·ùÀÇ Äõ¸®´Â ¿ÜºÎ °áÇÕÀ¸·Î ºÒ¸³´Ï´Ù
(Áö±Ý±îÁö °¡¸®ÄÑ ¿Â °áÇÕÀº ³»ºÎ °áÇÕÀÔ´Ï´Ù).
ÀÌÇÏ¿Í °°Àº ¸í·ÉÀÌ µË´Ï´Ù.
SELECT *
FROM weather LEFT OUTER JOIN cities ON (weather.city = cities.name);
city | temp_lo | temp_hi | prcp | date | name | location
---------------+---------+---------+------+------------+---------------+-----------
Hayward | 37 | 54 | | 1994-11-29 | |
San Francisco | 46 | 50 | 0.25 | 1994-11-27 | San Francisco | (-194,53)
San Francisco | 43 | 57 | 0 | 1994-11-29 | San Francisco | (-194,53)
(3 rows)
ÀÌ Äõ¸®´Â ¿ÞÂÊ ¹Ù±ùºÎ °áÇÕÀ¸·Î ºÒ¸³´Ï´Ù. °áÇÕ ¿¬»êÀÚÀÇ ÁÂÃø¿¡ ÁöÁ¤µÈ Å×À̺íÀÌ ÃÖ¼Ò Çѹø ¾¿ °¢ ÇàÀ» Ãâ·ÂÇϰí, ÇÑÆí, ¿ìÃø Å×ÀÌºí¿¡¼´Â ÁÂÃø Å×À̺íÀÇ Çà¿¡ ÀÏÄ¡ÇÏ´Â º¸°í°¡ Ãâ·ÂµÇ±â ¶§¹®ÀÔ´Ï´Ù. ¿ìÃø Å×À̺í°ú ÀÏÄ¡ÇÏÁö ¾Ê´Â, ÁÂÃø Å×À̺íÀÇ ÇàÀ» Ãâ·ÂÇÒ ¶§, ¿ìÃø Å×À̺íÀÇ ¿Àº ºó °ª(NULL)À¸·Î ġȯµË´Ï´Ù.
¿¬½À: ¿À¸¥ÂÊ ¿ÜºÎ °áÇÕÀ̳ª ¿ÏÀüÇÑ ¿ÜºÎ °áÇÕµµ Á¸ÀçÇÕ´Ï´Ù. À̰͵éÀÌ ¹«¾ùÀ» ½Ç½ÃÇÒÁö »ý°¢ÇØ ÁÖ¼¼¿ä.
Å×À̺íÀ» ÀÚ±â Àڽſ¡ ´ëÇØ¼ °áÇÕ½Ãų ¼ö ÀÖ½À´Ï´Ù.
À̰ÍÀº Àڱ⠰áÇÕÀ¸·Î ºÒ¸³´Ï´Ù.
¿¹·Î¼ ´Ù¸¥ ±â»ó µ¥ÀÌÅÍÀÇ ±â¿Â ¹üÀ§³»¿¡ ÀÖ´Â ±â»ó µ¥ÀÌÅ͸¦ ¸ðµÎ ²¨³»´Â °ÍÀ» »ý°¢Çغ¾´Ï´Ù.
weather°¢ ÇàÀÇ temp_lo¿Ítemp_hi¸¦,
´Ù¸¥ weatherÇàÀÇ temp_lo¿Ítemp_hi¿À» ºñ±³ÇØ¾ß ÇÕ´Ï´Ù.
ÀÌÇÏÀÇ Äõ¸®¸¦ »ç¿ëÇØ ½Ç½ÃÇÒ ¼ö ÀÖ½À´Ï´Ù.
SELECT W1.city, W1.temp_lo AS low, W1.temp_hi AS high,
W2.city, W2.temp_lo AS low, W2.temp_hi AS high
FROM weather W1, weather W2
WHERE W1.temp_lo < W2.temp_lo
AND W1.temp_hi > W2.temp_hi;
city | low | high | city | low | high
---------------+-----+------+---------------+-----+------
San Francisco | 43 | 57 | San Francisco | 46 | 50
Hayward | 37 | 54 | San Francisco | 46 | 50
(2 rows)
¿©±â¼, °áÇÕÀÇ ÁÂÃø°ú ¿ìÃøÀ» ±¸º°ÇÒ ¼ö°¡ ÀÖµµ·Ï, weather(³¯¾¾)Å×ÀÌºí¿¡ W1¿ÍW2¶ó´Â ¶óº§À» ºÙÀ̰í ÀÖ½À´Ï´Ù. ¶Ç, ÀԷ·®À» ÁÙÀ̱â À§Çؼ, ´Ù¸¥ Äõ¸®¿¡¼µµ ÀÌ·± Á¾·ùÀÇ º°¸íÀ» »ç¿ëÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. ÀÌÇÏ¿¡ ¿¹¸¦ ³ªÅ¸³À´Ï´Ù.
SELECT *
FROM weather w, cities c
WHERE w.city = c.name;
ÀÌ·¯ÇÑ ÇüÅÂÀÇ »ý·«Àº ²Ï ÀÚÁÖ ÇàÇØÁý´Ï´Ù.