2.6. Å×ÀÌºí°£À» °áÇÕ

¿©±â±îÁöÀÇ Äõ¸®´Â, ÇÑ ¹ø¿¡ 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)

ÀÌ °á°ú·ÎºÎÅÍ µÎ °¡Áö¸¦ ¾Ë ¼ö ÀÖ½À´Ï´Ù.

¿¬½À: 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;

ÀÌ·¯ÇÑ ÇüÅÂÀÇ »ý·«Àº ²Ï ÀÚÁÖ ÇàÇØÁý´Ï´Ù.