¿¬ÇÕ µ¥ÀÌÅͺ£À̽º¿¡ Á¦ÃâµÈ Á¶È¸·Î ´ÜÀÏ µ¥ÀÌÅÍ ¼Ò½º·Î »ý¼ºµÇ´Â °á°ú¸¦ ¿äûÇÒ ¼ö ÀÖÁö¸¸ º¸Åë º¹¼ö µ¥ÀÌÅÍ ¼Ò½º·Î »ý¼ºµÇ´Â °á°ú¸¦ ¿äûÇÕ´Ï´Ù. ÀϹÝÀûÀÎ Á¶È¸´Â º¹¼ö µ¥ÀÌÅÍ ¼Ò½º¿¡ ºÐ»êµÇ¹Ç·Î ºÐ»ê ¿äûÀ̶ó ÇÕ´Ï´Ù.
ÀÌ Àý¿¡¼´Â
ÀϹÝÀûÀ¸·Î ºÐ»ê ¿äûÀº ¼¼ °¡Áö SQL Ç¥±â¹ý Áß Çϳª ÀÌ»óÀ» »ç¿ëÇÏ¿© ºÎ¼Ó Á¶È¸, ÁýÇÕ ¿¬»êÀÚ ¹× Á¶ÀÎ subselect µî µ¥ÀÌÅ͸¦ °Ë»öÇÒ À§Ä¡¸¦ ÁöÁ¤ÇÕ´Ï´Ù. ÀÌ Àý¿¡´Â ´ÙÀ½ ½Ã³ª¸®¿À ¹®¸ÆÀÇ ¿¹°¡ ÀÖ½À´Ï´Ù. ¿¬ÇÕ ¼¹ö´Â OS/390¿ë DB2 Universal Database µ¥ÀÌÅÍ ¼Ò½º, AS/400¿ë DB2 Universal Database µ¥ÀÌÅÍ ¼Ò½º ¹× Oracle µ¥ÀÌÅÍ ¼Ò½º¿¡ ¾×¼¼½ºÇϵµ·Ï ±¸¼ºµÇ¾î ÀÖ½À´Ï´Ù. Á÷¿ø Á¤º¸¸¦ Æ÷ÇÔÇÑ Å×À̺íÀº °¢ µ¥ÀÌÅÍ ¼Ò½º¿¡ ÀúÀåµË´Ï´Ù. ¿¬ÇÕ ¼¹ö¿¡¼´Â Å×À̺íÀÌ ÀÖ´Â À§Ä¡¸¦ Áö½ÃÇÏ´Â º°¸í UDB390_EMPLOYEES, AS400_EMPLOYEES ¹× ORA_EMPLOYEES·Î ÀÌ·± Å×À̺íÀ» ÂüÁ¶ÇÕ´Ï´Ù.(º°¸íÀº µ¥ÀÌÅÍ ¼Ò½º¸¦ ÂüÁ¶ÇÒ Çʿ䰡 ¾ø½À´Ï´Ù. ÀÌ ½Ã³ª¸®¿ÀÀÇ º°¸íÀº Å×À̺íÀÌ ´Ù¸¥ RDBMS¿¡ ÀÖ´Ù´Â »ç½Ç¸¸À» °Á¶Çϱâ À§ÇØ ÂüÁ¶ÇÕ´Ï´Ù.) ORA_EMPLOYEES ¿Ü¿¡, Oracle µ¥ÀÌÅÍ ¼Ò½º¿¡´Â Á÷¿øÀÌ »ç´Â ±¹°¡¿¡ ´ëÇÑ Á¤º¸¸¦ Æ÷ÇÔÇÑ ORA_COUNTRIES º°¸íÀÇ Å×À̺íÀÌ ÀÖ½À´Ï´Ù.
AS400_EMPLOYEES Å×ÀÌºí¿¡´Â ¾Æ½Ã¾Æ¿¡ »ç´Â Á÷¿øÀÇ ÀüÈ ¹øÈ£°¡ ÀÖ½À´Ï´Ù. ¶ÇÇÑ ÀÌ·± ÀüÈ ¹øÈ£¿Í ¿¬°üµÈ ±¹°¡ Äڵ嵵 ÀÖÁö¸¸ Äڵ尡 Ç¥½ÃÇÏ´Â Å×ÀÌºí¿¡¼ ±¹°¡´Â ³ª¿ÇÏÁö ¾Ê½À´Ï´Ù. ÄÚµå¿Í ±¹°¡´Â ORA_COUNTRIES Å×ÀÌºí¿¡ ³ª¿µÇ¾î ÀÖ½À´Ï´Ù. ´ÙÀ½ Á¶È¸¿¡¼´Â ºÎ¼Ó Á¶È¸¸¦ »ç¿ëÇÏ¿© Áß±¹ÀÇ ±¹°¡ Äڵ带 ¾Ë¾Æ³»¸ç SELECT¿Í WHEREÀýÀ» »ç¿ëÇÏ¿©, ´ÙÀ½°ú °°Àº ƯÁ¤ Äڵ尡 ÇÊ¿äÇÑ ÀüÈ ¹øÈ£¸¦ °¡Áø AS400_EMPLOYEESÀÇ Á÷¿øÀ» ³ª¿ÇÕ´Ï´Ù.
SELECT name, telephone FROM djadmin.as400_employees WHERE country_code IN (SELECT country_code FROM djadmin.ora_countries WHERE country_name = 'CHINA')
¿¬ÇÕ ¼¹ö¿¡¼´Â ´ÙÀ½°ú °°ÀÌ ¼¼ °¡Áö ÁýÇÕ ¿¬»êÀÚ¸¦ Áö¿øÇÕ´Ï´Ù.
ÀÌ ÁýÇÕ ¿¬»êÀÚ¸¦ »ç¿ëÇϸé SELECT¹®À» µÎ °³ ÀÌ»ó ¸¸Á·½ÃŰ´Â ÇàÀ» °áÇÕÇÒ ¼ö ÀÖ½À´Ï´Ù.
ÀÌ ÁýÇÕ ¿¬»êÀÚ¸¦ »ç¿ëÇÏ¸é µÎ ¹øÂ°°¡ ¾Æ´Ñ ù¹øÂ° SELECT¹®À» ÃæÁ·½ÃŰ´Â ÇàÀ» °Ë»öÇÒ ¼ö ÀÖ½À´Ï´Ù.
ÀÌ ÁýÇÕ ¿¬»êÀÚ¸¦ »ç¿ëÇÏ¸é µÎ SELECT¹®À» ÃæÁ·½ÃŰ´Â ÇàÀ» °Ë»öÇÒ ¼ö ÀÖ½À´Ï´Ù.
Áߺ¹ ÇàÀÌ °á°ú¿¡¼ Á¦°ÅµÇÁö ¾Ê¾Æ Ãß°¡ Á¤·ÄÇÒ Çʿ䰡 ¾øÀ½À» Áö½ÃÇÏ´Â ALL ÇÇ¿¬»êÀÚ°¡ ¼¼ ÁýÇÕ ¿¬»êÀÚ ¸ðµÎ¿¡ Æ÷Ç﵃ ¼ö ÀÖ½À´Ï´Ù.
°¢ Å×À̺íÀÌ ´Ù¸¥ µ¥ÀÌÅÍ ¼Ò½º¿¡ ÀÖ´Â °æ¿ì¿¡µµ ´ÙÀ½ Á¶È¸´Â AS400_EMPLOYEES ¹× UDB390_EMPLOYEES¿¡ ³ªÅ¸³ ¸ðµç Á÷¿ø À̸§°ú ±¹°¡ Äڵ带 °Ë»öÇÕ´Ï´Ù.
SELECT name, country_code FROM as400_employees INTERSECT SELECT name, country_code FROM udb390_employees
°ü°èÇü Á¶ÀÎÀº µÎ °³ ÀÌ»óÀÇ Å×ÀÌºí¿¡¼ °Ë»öÇÑ Ä÷³ÀÇ Á¶ÇÕÀÌ ÀÖ´Â °á°ú ¼¼Æ®¸¦ »ý¼ºÇÕ´Ï´Ù. °á°ú ¼¼Æ® ÇàÀÇ Å©±â¸¦ Á¦ÇÑÇÏ´Â Á¶°ÇÀ» ÁöÁ¤ÇØ¾ß ÇÕ´Ï´Ù.
¾Æ·¡ Á¶È¸´Â µÎ Å×ÀÌºí¿¡ ³ª¿µÈ ±¹°¡ Äڵ带 ºñ±³ÇÏ¿© Á÷¿ø À̸§°ú ÇØ´ç ±¹°¡ À̸§À» °áÇÕÇÕ´Ï´Ù. °¢ Å×À̺íÀº ´Ù¸¥ µ¥ÀÌÅÍ ¼Ò½º¿¡ ÀÖ½À´Ï´Ù.
SELECT t1.name, t2.country_name FROM djadmin.as400_employees t1, djadmin.ora_countries t2 WHERE t1.country_code = t2.country_code
¿¬ÇÕ ½Ã½ºÅÛ »ç¿ëÀÚ´Â ¼¹ö ¿É¼ÇÀ̶ó ÇÏ´Â ¸Å°³º¯¼ö¸¦ »ç¿ëÇÏ¿© µ¥ÀÌÅÍ ¼Ò½º¿¡ Àüü·Î Àû¿ëµÇ´Â Á¤º¸¸¦ Àü¿ª īŻ·Î±×¿¡ Á¦°øÇϰųª DB2¿Í µ¥ÀÌÅÍ ¼Ò½º »çÀÌÀÇ »óÈ£ÀÛ¿ëÀ» Á¦¾îÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, µ¥ÀÌÅÍ ¼Ò½ºÀÇ ±âº» ¿ªÇÒÀ» ÇÏ´Â ÀνºÅϽºÀÇ ½Äº°ÀÚ¸¦ īŻ·Î±×ÈÇϱâ À§ÇØ µ¥ÀÌÅͺ£À̽º °ü¸®ÀÚ°¡ ¼¹ö ¿É¼Ç "³ëµå"¿¡ °ªÀ¸·Î ½Äº°ÀÚ¸¦ ÇÒ´çÇÕ´Ï´Ù.
¸î °¡Áö ¼¹ö ¿É¼ÇÀº DB2¿Í µ¥ÀÌÅÍ ¼Ò½º »çÀÌÀÇ ÁÖ¿ä ¿µ¿ª, Á¶È¸ ÃÖÀûȸ¦ ³ªÅ¸³À´Ï´Ù. ¿¹¸¦ µé¾î, "varchar_no_trailing_blanks" Ä÷³ ¿É¼ÇÀ» »ç¿ëÇÏ¿© DB2 ÃÖÀûÈ ¾Ë°í¸®Áò¿¡ µÚ °ø¹éÀÌ ¾ø´Â ƯÁ¤ µ¥ÀÌÅÍ ¼Ò½º VARCHAR Ä÷³À» ¾Ë·Á ÁÙ ¼ö ÀÖµíÀÌ, "varchar_no_trailing_blanks"¶ó°íµµ ÇÏ´Â ¼¹ö ¿É¼ÇÀ» »ç¿ëÇÏ¿© µ¥ÀÌÅÍ ¼Ò½ºÀÇ VARCHAR Ä÷³¿¡ µÚ °ø¹éÀÌ ¾ø´Ù´Â »ç½ÇÀ» ÃÖÀûÈ ¾Ë°í¸®Áò¿¡ ¾Ë·Á ÁÙ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·± Á¤º¸¸¦ »ç¿ëÇÏ¿© ÃÖÀûÈ ¾Ë°í¸®ÁòÀ¸·Î ¾×¼¼½º Àü·«À» ÀÛ¼ºÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ¼´Â Ç¥ 27¿¡¼ ÀÚ¼¼ÇÑ ³»¿ëÀ» ÂüÁ¶ÇϽʽÿÀ.
¶ÇÇÑ Oracle µ¥ÀÌÅÍ ¼Ò½º¿¡ Ç÷£ ÈùÆ®¶ó ÇÏ´Â ¸í·É¹® ÀϺθ¦ Á¦°øÇϵµ·Ï DB2¸¦ ¼³Á¤ÇÏ´Â °ªÀ¸·Î ¼¹ö ¿É¼Ç "plan_hints"¸¦ ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. Ç÷£ ÈùÆ®´Â Oracle ÃÖÀûÈ ¾Ë°í¸®ÁòÀÇ ÀÛ¾÷À» µ½½À´Ï´Ù. ƯÈ÷ Ç÷£ ÈùÆ®¸¦ ÅëÇØ ÃÖÀûÈ ¾Ë°í¸®ÁòÀº Å×ÀÌºí¿¡ ¾×¼¼½ºÇÒ ¶§ »ç¿ëÇÒ »öÀÎÀ̳ª °á°ú ¼¼Æ®ÀÇ µ¥ÀÌÅ͸¦ °Ë»öÇÒ ¶§ »ç¿ëÇÒ Å×À̺í Á¶ÀÎ ¼ø¼¿Í °°Àº ¹®Á¦¸¦ ½±°Ô °áÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.
ÀϹÝÀûÀ¸·Î µ¥ÀÌÅͺ£À̽º °ü¸®ÀÚ°¡ ¿¬ÇÕ ½Ã½ºÅÛ¿¡ ´ëÇØ ¼¹ö ¿É¼ÇÀ» ¼³Á¤ÇÕ´Ï´Ù. ±×·¯³ª ÇÁ·Î±×·¡¸Ó°¡ Á¶È¸¸¦ ÃÖÀûÈÇÏ´Â µ¥ À¯¿ëÇÑ ¿É¼ÇÀ» Ȱ¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ORACLE1°ú ORACLE2 µ¥ÀÌÅÍ ¼Ò½ºÀÇ °æ¿ì plan_hints ¼¹ö ¿É¼ÇÀº ±âº»°ª 'n'(¾Æ´Ï¿À, ÀÌ µ¥ÀÌÅÍ ¼Ò½º¿¡ Ç÷£ ÈùÆ®¸¦ Á¦°øÇÏÁö ¾Ê½À´Ï´Ù)À¸·Î ¼³Á¤µË´Ï´Ù. ¶ÇÇÑ ORACLE1°ú ORACLE2 µ¥ÀÌÅÍ¿¡ ´ëÇÑ ºÐ»ê ¿äûÀ» ÀÛ¼ºÇϸç, ÀÌ·± µ¥ÀÌÅÍ ¼Ò½ºÀÇ ÃÖÀûÈ ¾Ë°í¸®Áò¿¡¼ ÀÌ µ¥ÀÌÅÍ¿¡ ¾×¼¼½ºÇÏ´Â Àü·«À» Çâ»ó½ÃŰ´Â µ¥ Ç÷£ ÈùÆ®°¡ À¯¿ëÇϸ®¶ó ¿¹»óÇÒ °æ¿ì¸¦ °¡Á¤Çغ¾½Ã´Ù. ÀÀ¿ëÇÁ·Î±×·¥ÀÌ ¿¬ÇÕ µ¥ÀÌÅͺ£À̽º¿¡ ¿¬°áµÇ¾î ÀÖ´Â µ¿¾È 'y'(¿¹, Ç÷£ ÈùÆ®¸¦ Á¦°øÇÕ´Ï´Ù)ÀÇ ¼³Á¤À¸·Î ±âº»°ªÀ» °ãÃľµ ¼ö ÀÖ½À´Ï´Ù. ¿¬°áÀÌ ¿Ï·áµÇ¸é ¼³Á¤ÀÌ ÀÚµ¿À¸·Î 'n'À¸·Î ¹ÝÀüµË´Ï´Ù.
¿¬ÇÕ µ¥ÀÌÅͺ£À̽º¿¡ ´ëÇÑ ¿¬°á Áß ¼¹ö ¿É¼Ç ¼³Á¤À» °Á¦ÇÏ·Á¸é SET SERVER OPTION¹®À» »ç¿ëÇϽʽÿÀ. ¼³Á¤À» Àû¿ëÇÏ·Á¸é CONNECT¹® µÚ ¿À¸¥ÂÊ¿¡ ¸í·É¹®À» ÁöÁ¤ÇØ¾ß ÇÕ´Ï´Ù. ¶ÇÇÑ ¸í·É¹®À» µ¿ÀûÀ¸·Î ÁغñÇÏ´Â °ÍÀÌ ÁÁ½À´Ï´Ù.
SET SERVER OPTION¹®¿¡ ´ëÇØ¼´Â SQL ÂüÁ¶¼¿¡¼ ÀÚ¼¼ÇÑ ³»¿ëÀ» ÂüÁ¶ÇϽʽÿÀ. ¸ðµç ¼¹ö ¿É¼Ç°ú ±× ¼³Á¤¿¡ ´ëÇØ¼´Â °ü¸® ¾È³»¼: ±¸ÇöÀÇ ³»¿ëÀ» ÂüÁ¶ÇϽʽÿÀ.