| PostgreSQL 8.3.3¹®¼ | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Chapter 9. ÇÔ¼ö¿Í ¿¬»êÀÚ | Fast Forward | Next |
º»Àý¿¡¼´Â, °ªÀÇ ±×·ì°£¿¡ º¹¼öÀÇ ºñ±³¸¦ ½Ç½ÃÇÏ´Â, ´Ù¾çÇÑ Æ¯¼öÈ ÇÑ »ý¼ºÀÚ¿¡ ´ëÇØ ¼³¸íÇÕ´Ï´Ù. ÀÌ Çü½ÄÀº ±¸¹®ÀûÀ¸·Î´Â, ÀüÀýÀÇ ¼ºêÄõ¸® Çü½Ä°ú °ü°èÇϰí ÀÖ½À´Ï´Ù. ±×·¯³ª, ¼ºêÄõ¸®¸¦ Æ÷ÇÔÇÏÁö ¾Ê½À´Ï´Ù. ¹è¿ÀÇ ºÎ½ÄÀ» Æ÷ÇÔÇÑ ÀÌ Çü½ÄÀºPostgreSQLÀÇ È®ÀåÀÔ´Ï´Ù. ÀÌ ¿Ü´ÂSQL¿¡ ÁذÅÇÕ´Ï´Ù. º»Àý¿¡¼ ±âÀçÇÑ ¸ðµç ½ÄÀº °á°úÀûÀ¸·Î ³í¸®°ª(Âü/°ÅÁþ)À» ¹ÝȯÇÕ´Ï´Ù.
expression
IN (
value
[, ...])
¿ìº¯Àº °ýÈ£·Î µÑ·¯½ÎÀÎ ½ºÄ®¶ó½ÄÀÇ ¸®½ºÆ®ÀÔ´Ï´Ù. Áº¯ÀÇ ½ÄÀÇ °á°ú°¡ ¿ìº¯ÀÇ ¾î´À ½ÄÁßÀÇ Çϳª¶óµµ µ¿ÀÏÇÑ °æ¿ì, °á°ú´Â"true(Âü)"°¡ µË´Ï´Ù. À̰ÍÀº ÀÌÇÏÀÇ »ý·«ÇüÀÔ´Ï´Ù.
expression = value1 OR expression = value2 OR ...
Áº¯ÀÇ ½ÄÀÌ NULL¸¦ ÀÏÀ¸Å°´Â °æ¿ì, ¶Ç´Â ¿ìÃøÀÇ °ª¿¡ µ¿ÀÏÇÑ °ÍÀÌ ¾ø¾î Àû¾îµµ 1°³ÀÇ ¿ìº¯ÀÇ ÇàÀÌ NULL¸¦ °¡Áö´Â °æ¿ì,IN±¸¹®ÀÇ °á°ú´Â °¡Â¥´Â ¾Æ´Ï°í NULL°¡ µÇ´Â °Í¿¡ ÁÖÀÇÇØ ÁÖ¼¼¿ä. À̰ÍÀº, NULLÄ¡ÀÇ ³í¸®ÀûÀÎ Æí¼º¿¡ ´ëÇÑ SQLÀÇ Ç¥ÁØ ±ÔÄ¢¿¡ µû¸£´Â °ÍÀÔ´Ï´Ù.
expression
NOT IN (
value
[, ...])
¿ìº¯Àº °ýÈ£·Î µÑ·¯½ÎÀÎ ½ºÄ®¶ó½ÄÀÇ ¸®½ºÆ®ÀÔ´Ï´Ù. Áº¯ÀÇ ½ÄÀÇ °á°ú°¡ ¿ìº¯ÀÇ ½ÄÀÇ ¸ðµÎ¿Í µ¿ÀÏÇÏÁö ¾ÊÀº °æ¿ì, °á°ú´Â"Âü"ÀÔ´Ï´Ù. À̰ÍÀº ÀÌÇÏÀÇ »ý·«ÇüÀÔ´Ï´Ù.
expression <> value1 AND expression <> value2 AND ...
Áº¯ÀÇ ½Ä¿¡¼ NULLÀÌ »ý±â´Â °æ¿ì, ¶Ç´Â ¿ìÃøÀÇ °ª¿¡ µ¿ÀÏÇÑ °ÍÀÌ ¾ø°í, Àû¾îµµ 1°³ÀÇ ¿ìº¯ÀÇ ½Ä¿¡¼ NULLÀÌ »ý±â´Â °æ¿ì, ¿¹»ó´ë·ÎNOT IN±¸¹®ÀÇ °á°ú´Â true°¡ ¾Æ´Ï¶ó, NULLÀÌ µÇ´Â °Í¿¡ ÁÖÀÇÇØ ÁÖ¼¼¿ä. À̰ÍÀº, NULL°ªÀÇ ³í¸®ÀûÀÎ Æí¼º¿¡ ´ëÇÑ SQLÀÇ Ç¥ÁØ ±ÔÄ¢¿¡ µû¸£´Â °ÍÀÔ´Ï´Ù.
Tip: ¸ðµç °æ¿ì¿¡ ´ëÇØ,x NOT IN y´ÂNOT (x IN y)¿Í µî°¡ÀÔ´Ï´Ù. ±×·¯³ª,IN¸¦ »ç¿ëÇÏ´Â °Íº¸´ÙµµNOT IN¸¦ »ç¿ëÇÏ´Â ÆíÀÌ NULL°ª¿¡ ÀÇÇÑ ½Ç¼ö¸¦ Çϱ⠽¬¿öÁý´Ï´Ù. °¡´ÉÇÑ ÇÑ Á¶°ÇÀ» ±àÁ¤ÀûÀ¸·Î Ç¥ÇöÇÏ´Â °ÍÀÌ ÃÖ¼±ÀÔ´Ï´Ù
expression operator ANY ( array expression ) expression operator SOME ( array expression )
¿ìº¯Àº °ýÈ£·Î µÑ·¯½ÎÀÎ ½ÄÀ̰í, ¹è¿°ªÀ» ¹ÝÈ¯ÇØ¾ß ÇÕ´Ï´Ù. Áº¯ÀÇ ½ÄÀº ¹è¿ ¿ä¼Ò °¢°¢ ´ëÇØ, ÁöÁ¤µÈ operator ¸¦ »ç¿ëÇÏ¿© Æò°¡, ºñ±³µË´Ï´Ù. µ¡ºÙ¿© operator ´Â °á°úÀûÀ¸·Î ³í¸®°ªÀ» »ý¼ºÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. true(Âü)ÀÇ °á°ú°¡ Çϳª¶óµµ ÀÖ´Â °æ¿ì,ANYÀÇ °á°ú´Â"true(Âü)"ÀÔ´Ï´Ù. true(Âü)ÀÎ °á°ú°¡ ¾ø´Â °æ¿ì(¹è¿ÀÇ ¿ä¼Ò°¡ Á¦·ÎÀΠƯº°ÇÑ °æ¿ì¸¦ Æ÷ÇÔÇØ), °á°ú´Â"false(°ÅÁþ)"ÀÔ´Ï´Ù.
¹è¿½ÄÀÌ NULL ¹è¿À» »ý¼ºÇÏ´Â °æ¿ì,ANYÀÇ °á°ú´Â NULLÀÌ µË´Ï´Ù. Áº¯½ÄÀÌ NULLÀÌ µÇ´Â °æ¿ì,ANYÀÇ °á°ú´Â Åë»ó NULLÀÌ µË´Ï´Ù. (±×´ÙÁö ¾ö¹ÐÇÏÁö ¾ÊÀº ºñ±³ ¿¬»êÀÚ¿¡¼´Â ´Ù¸¥ °á°ú°¡ µÉÁöµµ ¸ð¸¨´Ï´Ù. ) ¶ÇÇÑ, ¿ìº¯ÀÇ ¹è¿¿¡ NULL ¿ä¼Ò°¡ Æ÷ÇԵǾî ÀÖ°í, ºñ±³ÇÑ °á°ú°¡ true°¡ ¾Æ´Ñ °ªÀÏ °æ¿ì,ANYÀÇ °á°ú´Â false°¡ ¾Æ´Ï¶ó, NULLÀÌ µË´Ï´Ù. (¹Ýº¹ÀÌ µË´Ï´Ù¸¸, ¾ö¹ÐÇÑ ¿¬»êÀÚÀÇ °æ¿ìÀÔ´Ï´Ù. ) À̰ÍÀº, NULL¿¡ ´ëÇÑ, SQLÀÇ ³í¸®°ª Á¶ÇÕ¿¡ °üÇÑ Ç¥ÁØ ±ÔÄ¢¿¡ µû¸£´Â °ÍÀÔ´Ï´Ù.
SOME´ÂANYÀÇ µ¿ÀǾîÀÔ´Ï´Ù.
expression operator ALL ( array expression )
¿ìº¯Àº °ýÈ£·Î µÑ·¯½ÎÀÎ ½ÄÀÔ´Ï´Ù. ÀÌ ½ÄÀº ¹è¿°ªÀ» ¹ÝÈ¯ÇØ¾ß ÇÕ´Ï´Ù. Áº¯ÀÇ ½ÄÀº ¹è¿ÀÇ ¿ä¼Ò °¢°¢ ´ëÇØ, ÁöÁ¤µÈ operator ¸¦ »ç¿ëÇÏ¿© Æò°¡, ºñ±³µË´Ï´Ù. µ¡ºÙ¿© operator ´Â °á°úÀûÀ¸·Î ³í¸®°ªÀ» »ý¼ºÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. (¹è¿ÀÇ ¿ä¼Ò¼ö°¡ Á¦·ÎÀΠƯº°ÇÑ °æ¿ì¸¦ Æ÷ÇÔÇÏ¿©) ¸ðµç ºñ±³°¡ true¸¦ °¡Á®¿À´Â °æ¿ì,ALLÀÇ °á°ú´Â"true(Âü)"ÀÔ´Ï´Ù. 1°³¿¡¼µµ falseÀÇ °á°ú°¡ ÀÖ´Â °æ¿ì, °á°ú´Â"false(°ÅÁþ)"ÀÔ´Ï´Ù.
¹è¿½ÄÀÌ NULL ¹è¿À» »ý¼ºÇÏ´Â °æ¿ì,ANYÀÇ °á°ú´Â NULLÀÌ µË´Ï´Ù. Áº¯½ÄÀÌ NULLÀÌ µÇ´Â °æ¿ì,ANYÀÇ °á°ú´Â Åë»ó NULLÀÌ µË´Ï´Ù. (±×´ÙÁö ¾ö¹ÐÇÏÁö ¾ÊÀº ºñ±³ ¿¬»êÀÚ¿¡¼´Â ´Ù¸¥ °á°ú°¡ µÉÁöµµ ¸ð¸¨´Ï´Ù. ) ¶ÇÇÑ, ¿ìº¯ÀÇ ¹è¿¿¡ NULL ¿ä¼Ò°¡ Æ÷ÇԵǾî ÀÖ°í, ºñ±³ÇÑ °á°ú°¡ true°¡ ¾Æ´Ñ °ªÀÏ °æ¿ì,ANYÀÇ °á°ú´Â false°¡ ¾Æ´Ï¶ó, NULLÀÌ µË´Ï´Ù. (¹Ýº¹ÀÌ µË´Ï´Ù¸¸, ¾ö¹ÐÇÑ ¿¬»êÀÚÀÇ °æ¿ìÀÔ´Ï´Ù. ) À̰ÍÀº, NULL¿¡ ´ëÇÑ, SQLÀÇ ³í¸®°ª Á¶ÇÕ¿¡ °üÇÑ Ç¥ÁØ ±ÔÄ¢¿¡ µû¸£´Â °ÍÀÔ´Ï´Ù.
row_constructor operator row_constructor
¾çº¯ ¸ðµÎSection 4.2.11·Î ¼³¸íÇÏ´Â ÇàÀÇ »ý¼ºÀÚ ÀÔ´Ï´Ù. ÀÌ 2°³ÀÇ Çà°ªÀº °°Àº Çʵå¼ö¸¦ °¡Á®¾ß ÇÕ´Ï´Ù. ¾çº¯Àº °¢°¢ Æò°¡µÇ¾î ÇàÀ¸·Î¼ ºñ±³µË´Ï´Ù. ÇàÀÇ ºñ±³´Â, operator °¡=,<>,<,<=,>,>=ÀÇ °æ¿ì, ¶Ç´Â, À̵é ÁßÀÇ Çϳª¿Í °°Àº Àǹ̸¦ °¡Áö´Â °æ¿ì¿¡ ÀÎÁ¤µË´Ï´Ù. (º¸´Ù ±¸Ã¼ÀûÀ¸·Î´Â, ¿¬»êÀÚ°¡ B-Tree ¿¬»êÀÚ Å¬·¡½ºÀÇ ¸â¹ö, ¶Ç´Â, B-Tree ¿¬»êÀÚ Å¬·¡½ºÀÇ=¸â¹öÀÇ ºÎÁ¤ÀÚÀ̸é, Çà ºñ±³ ¿¬»êÀÚ°¡ µÉ ¼ö°¡ ÀÖ½À´Ï´Ù. )
=(¿Í)°ú<>ÀÇ °æ¿ì, ´Ù¸¥ °Í°ú´Â µ¿ÀÛÀÌ ´Ù¼Ò ´Ù¸¨´Ï´Ù. 2°³ÀÇ ÇàÀº ´ëÀÀÇÏ´Â ¸ðµç ¿ä¼Ò°¡ ºñNULL ¹× µ¿ÀÏÇÑ °æ¿ì¿¡ µ¿ÀÏÇÏ´Ù°í º¸ÀÔ´Ï´Ù. ¿ä¼Ò Áß ÇÑ °³¶óµµ ºñNULL ¹× µ¿ÀÏÇÏÁö ¾ÊÀº °æ¿ì, 2°³ÀÇ ÇàÀº µ¿ÀÏÇÏÁö ¾Ê´Ù°í º¸ÀÔ´Ï´Ù. ±× À̿ܿ¡´Â ÇàÀÇ ºñ±³ °á°ú´Â ºÒ¸í(NULL)ÀÔ´Ï´Ù.
<,<=,>,>=ÀÇ °æ¿ì, ÇàÀÇ ¿ä¼Ò´Â ¿ÞÂÊ¿¡¼ ¿À¸¥ÂÊÀ¸·Î ºñ±³µË´Ï´Ù. ±×¸®°í, ºÎµî ¶Ç´Â NULLÀÇ Æí¼ºÀÌ ¹ß°ßµÇÀÚ¸¶ÀÚ Á¤ÁöÇÕ´Ï´Ù. ¿ä¼ÒÀÇ Æí¼ºÀÇ ¾î´À ÂÊÀÌ°Ç NULLÀÌ ÀÖÀ» °æ¿ì, Çà ºñ±³ÀÇ °á°ú´Â ºÒ¸í(NULL)ÀÔ´Ï´Ù. ¾Æ´Ï¸é, ¿ä¼ÒÀÇ Æí¼ºÀÇ ºñ±³¿¡ ÀÇÇØ °á°ú°¡ Á¤ÇØÁý´Ï´Ù. ¿¹¸¦ µé¸é,ROW(1,2, NULL) < ROW(1,3,0)´Â, 3¹øÂ°ÀÇ ¿ä¼ÒÀÇ Æí¼º±îÁö ÁøÇàµÇÁö ¾Ê±â ¶§¹®¿¡, NULLÀÌ ¾Æ´Ï¶ó, true¸¦ ¹ÝȯÇÕ´Ï´Ù.
Note: PostgreSQL 8.2 ¹öÁ¯ ÀÌÀüÀ¸·Î´Â,<,<=,> ,>=ÀÇ °æ¿ì SQL »ç¾ç¿¡ µû¸£°í ÀÖÁö ¾Ê¾Ò½À´Ï´Ù. ROW(a, b) < ROW(c, d)°ú °°Àº ºñ±³´Â Á¤È®ÇϰԴÂa < c OR (a = c AND b < d)ÀÔ´Ï´Ù¸¸,a < c AND b < d·Î¼ ½ÇÇàµÇ°í ÀÖ¾ú½À´Ï´Ù.
row_constructor IS DISTINCT FROM row_constructor
ÀÌ »ý¼ºÀÚ´Â<>Çà ºñ±³¿Í À¯»çÇÕ´Ï´Ù¸¸, NULL ÀԷ¿¡ ´ëÇØ¼ NULLÀ» »ý¼ºÇÏÁö ¾Ê´Â Á¡ÀÌ ´Ù¸¨´Ï´Ù. ±× ´ë½Å¿¡, ¸ðµç NULL°ªÀº ¸ðµç ºñNULL°ª°ú µ¿ÀÏÇÏÁö ¾ÊÀº(´Ù¸£´Ù) °ÍÀ¸·Î °£ÁÖµÇ°í ¶Ç, 2°³ÀÇ NULLÀº µ¿ÀÏÇÑ(´Ù¸£Áö ¾Ê´Ù) °ÍÀ¸·Î °£Áֵ˴ϴÙ. µû¶ó¼, °á°ú´Â Ç×»ó true³ª false°¡ µÇ¸ç, NULLÀÌ µÇÁö ¾Ê½À´Ï´Ù.
row_constructor IS NOT DISTINCT FROM row_constructor
ÀÌ »ý¼ºÀÚ´Â=Çà ºñ±³¿Í À¯»çÇÕ´Ï´Ù¸¸, NULL ÀԷ¿¡ ´ëÇØ¼ NULLÀ» »ý¼ºÇÏÁö ¾Ê´Â Á¡ÀÌ ´Ù¸¨´Ï´Ù. ´ë½Å¿¡, ¸ðµç NULL°ªÀº ¸ðµç ºñNULL°ª°ú µ¿ÀÏÇÏÁö ¾ÊÀº(´Ù¸£´Ù) °ÍÀ¸·Î °£ÁÖµÇ°í ¶Ç, 2°³ÀÇ NULLÀº µ¿ÀÏÇÑ(´Ù¸£Áö ¾Ê´Ù) °ÍÀ¸·Î °£Áֵ˴ϴÙ. µû¶ó¼, °á°ú´Â Ç×»ó true³ª false°¡ µÇ¸ç, NULLÀÌ µÇÁö ¾Ê½À´Ï´Ù.