±¸Á¶È À¯ÇüÀº ¼Ó¼ºÀ¸·Î Àß Á¤ÀÇµÈ ±¸Á¶°¡ µé¾î ÀÖ´Â ¿ÀºêÁ§Æ®¸¦ ¸ðµ¨ÈÇÒ ¶§ À¯¿ëÇÕ´Ï´Ù. ¼Ó¼ºÀº À¯ÇüÀÇ ÀνºÅϽº¸¦ ¼³¸íÇϴ Ư¼ºÀÔ´Ï´Ù. ¿¹¸¦ µé¾î, ±âÇÏÇÐÀû ¸ð¾çÀº µ¥Ä«¸£Æ®½Ä ÁÂÇ¥ ¸ñ·ÏÀ» ±× ¼Ó¼ºÀ¸·Î °¡Áö°í ÀÖÀ» ¼ö ÀÖ½À´Ï´Ù. »ç¶÷Àº À̸§, ÁÖ¼Ò µîÀÇ ¼Ó¼ºÀÌ ÀÖ½À´Ï´Ù. ºÎ¼¿¡´Â À̸§ ¶Ç´Â ´Ù¸¥ Á¾·ùÀÇ ID°¡ ÀÖ½À´Ï´Ù.
À¯ÇüÀ» ÀÛ¼ºÇÏ·Á¸é À¯ÇüÀÇ À̸§, ±× ¼Ó¼º À̸§ ±×¸®°í µ¥ÀÌÅÍ À¯ÇüÀ» ÁöÁ¤Çϰí, ¼±ÅÃÀûÀ¸·Î ÀÌ À¯ÇüÀÇ ÂüÁ¶ À¯ÇüÀ» ½Ã½ºÅÛ¿¡¼ Ç¥ÇöÇÏ´Â ¹æ¹ýÀ» ÁöÁ¤ÇØ¾ß ÇÕ´Ï´Ù. ¿©±â¿¡ BusinessUnit_t À¯ÇüÀ» ÀÛ¼ºÇÏ´Â SQLÀÌ ÀÖ½À´Ï´Ù.
CREATE TYPE BusinessUnit_t AS (Name VARCHAR(20), Headcount INT) REF USING INT MODE DB2SQL;
ASÀýÀº À¯Çü¿¡ ¿¬°üµÈ ¼Ó¼º Á¤ÀǸ¦ Á¦°øÇÕ´Ï´Ù. BusinessUnit_t´Â Name°ú HeadcountÀÇ µÎ ¼Ó¼ºÀÌ ÀÖ´Â À¯ÇüÀÔ´Ï´Ù. ±¸Á¶È À¯ÇüÀ» ÀÛ¼ºÇÏ·Á¸é CREATE TYPE¹®¿¡ MODE DB2SQLÀýÀ» Æ÷ÇÔ½ÃÄÑ¾ß ÇÕ´Ï´Ù. REF USINGÀý »ç¿ë¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº ÂüÁ¶ À¯Çü ¹× ±× Ç¥Çö À¯ÇüÀ» ÂüÁ¶ÇϽʽÿÀ.
±¸Á¶È À¯ÇüÀº ÀüÇüÀûÀÎ °ü°è µ¥ÀÌÅÍ À¯ÇüÀ» ´É°¡ÇÏ´Â µÎ °¡Áö ÁÖ¿ä È®ÀåÀ» Á¦°øÇÕ´Ï´Ù. °è½ÂÀÌ Æ¯¼º°ú ±¸Á¶È À¯ÇüÀÇ ÀνºÅϽº¸¦ Å×À̺íÀÇ ÇàÀ¸·Î ¶Ç´Â Ä÷³ÀÇ °ªÀ¸·Î ÀúÀåÇÏ´Â ±â´ÉÀÌ ±×°ÍÀÔ´Ï´Ù. ´ÙÀ½ Àý¿¡¼ ÀÌ·± ±â´ÉÀ» °£´ÜÇÏ°Ô ¼³¸íÇÕ´Ï´Ù.
±×¸² 7. ±¸Á¶È À¯Çü Employee_t´Â Person_t¿¡¼ °è½ÂÇÕ´Ï´Ù.
![]() |
CREATE TABLE Person OF Person_t ...
Å×À̺íÀÇ °¢ Ä÷³Àº ±× À̸§°ú µ¥ÀÌÅÍ À¯ÇüÀ» Ç¥½ÃµÈ ±¸Á¶È À¯ÇüÀÇ ¼Ó¼º Áß Çϳª¿¡¼ ÆÄ»ýµË´Ï´Ù. ÀÌ·± Å×À̺íÀ» À¯ÇüÈ Å×À̺íÀ̶ó°í ÇÕ´Ï´Ù.
CREATE TABLE Properties (ParcelNum INT, Photo BLOB(2K), Address Address_t) ...
±¸Á¶È À¯ÇüÀº »õ·Î ÀÛ¼ºµÈ À¯ÇüÀÌ ¿ø·¡ ±¸Á¶ À¯ÇüÀÇ ºÎ¼Ó À¯ÇüÀÎ ´Ù¸¥ ±¸Á¶È À¯ÇüÇÏ¿¡¼ ÀÛ¼ºµÉ ¼ö ÀÖ½À´Ï´Ù. ¿ø·¡ À¯ÇüÀº »óÀ§ À¯ÇüÀÔ´Ï´Ù. ºÎ¼Ó À¯ÇüÀº »óÀ§ À¯ÇüÀÇ ¸ðµç ¼Ó¼ºÀ» °è½ÂÇÏ°í ¼±ÅÃÀûÀ¸·Î ÀÚü Ãß°¡ ¼Ó¼ºÀ» °¡Áú ¼öµµ ÀÖ½À´Ï´Ù.
¿¹¸¦ µé¾î, µ¥ÀÌÅÍ ¸ðµ¨Àº °ü¸®ÀÚ¶ó´Â Á÷¿øÀÇ Æ¯¼ö À¯ÇüÀ» ³ªÅ¸³»¾ß ÇÕ´Ï´Ù. °ü¸®ÀÚ¿¡°Ô´Â °ü¸®ÀÚ°¡ ¾Æ´Ñ Á÷¿øº¸´Ù ´õ ¸¹Àº ¼Ó¼ºÀÌ ÀÖ½À´Ï´Ù. Manager_t À¯ÇüÀº Á÷¿ø¿¡ ´ëÇØ Á¤ÀÇµÈ ¼Ó¼ºÀ» °è½ÂÇÏÁö¸¸, ÀÌ´Â °ü¸®ÀÚ¿¡°Ô¸¸ Àû¿ëÇÒ ¼ö Àִ Ưº° º¸³Ê½º¿Í °°Àº ÀÚü Ãß°¡ ¼Ó¼º°ú ÇÔ²² Á¤ÀǵDZ⵵ ÇÕ´Ï´Ù. ÀÌ Ã¥ÀÇ ¿¹¿¡¼ »ç¿ëµÇ´Â À¯Çü °èÃþÀº ±×¸² 8¿¡ ÀÖ½À´Ï´Ù. Address_tÀÇ À¯Çü °èÃþÀº Ä÷³¿¡ ±¸Á¶È À¯Çü ÀνºÅϽº »ðÀÔ¿¡ Á¤ÀǵǾî ÀÖ½À´Ï´Ù.
±×¸² 8. À¯Çü °èÃþ (BusinessUnit_t ¹× Person_t)
![]() |
±×¸² 8¿¡¼ »ç¶÷ À¯Çü Person_t´Â °èÃþÀÇ ·çÆ® À¯ÇüÀÔ´Ï´Ù. Person_t´Â ¶ÇÇÑ ±× ¹Ø¿¡ ÀÖ´Â À¯ÇüÀÇ »óÀ§ À¯ÇüÀε¥, ÀÌ °æ¿ì Employee_t·Î ¸í¸íµÈ À¯Çü°ú Student_t·Î ¸í¸íµÈ À¯ÇüÀÔ´Ï´Ù. ºÎ¼Ó À¯Çü°ú »óÀ§ À¯Çü°£ÀÇ °ü°è´Â º¯ÇÕ´Ï´Ù. ´Ù½Ã ¸»Çؼ ºÎ¼Ó À¯Çü°ú »óÀ§ À¯Çü°£ÀÇ °ü°è´Â Àüü À¯Çü °èÃþ Àü¹Ý¿¡ °ÉÃÄ Á¸ÀçÇÕ´Ï´Ù. ±×·¯¹Ç·Î Person_t´Â Manager_t¿Í Architect_t À¯ÇüÀÇ »óÀ§ À¯ÇüÀ̱⵵ ÇÕ´Ï´Ù.
±¸Á¶È À¯Çü °³¿ä¿¡¼ Á¤ÀÇµÈ À¯Çü BusinessUnit_t¿¡´Â ºÎ¼Ó À¯ÇüÀÌ ¾ø½À´Ï´Ù. Ä÷³¿¡ ±¸Á¶È À¯Çü ÀνºÅϽº »ðÀÔ¿¡¼ Á¤ÀÇµÈ À¯Çü Address_t¿¡´Â Germany_addr_t, Brazil_addr_t, US_addr_tÀÇ ºÎ¼Ó À¯ÇüÀÌ ÀÖ½À´Ï´Ù.
À¯Çü Person_t¿¡ ´ëÇÑ CREATE TYPE¹®Àº Person_t¸¦ INSTANTIABLE·Î ¼±¾ðÇÕ´Ï´Ù. INSTANTIABLE ¶Ç´Â NOT INSTANTIABLEFÀýÀ» »ç¿ëÇÏ¿© ±¸Á¶È À¯ÇüÀ» ¼±¾ðÇÏ´Â °Í¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº ±¸Á¶È À¯ÇüÀÇ Ãß°¡ Ư¼ºÀ» ÂüÁ¶ÇϽʽÿÀ.
´ÙÀ½ SQL¹®Àº Person_t À¯Çü °èÃþÀ» ÀÛ¼ºÇÕ´Ï´Ù.
CREATE TYPE Person_t AS (Name VARCHAR(20), Age INT, Address Address_t) INSTANTIABLE REF USING VARCHAR(13) FOR BIT DATA MODE DB2SQL; CREATE TYPE Employee_t UNDER Person_t AS (SerialNum INT, Salary DECIMAL (9,2), Dept REF(BusinessUnit_t)) MODE DB2SQL; CREATE TYPE Student_t UNDER Person_t AS (SerialNum CHAR(6), GPA DOUBLE) MODE DB2SQL; CREATE TYPE Manager_t UNDER Employee_t AS (Bonus DECIMAL (7,2)) MODE DB2SQL; CREATE TYPE Architect_t UNDER Employee_t AS (StockOption INTEGER) MODE DB2SQL;
Person_t¿¡´Â Name, Age, AddressÀÇ ¼¼ °¡Áö ¼Ó¼ºÀÌ ÀÖ½À´Ï´Ù. ÀÌ ¼Ó¼ºÀÇ ºÎ¼Ó À¯ÇüÀÎ Employee_t¿Í Student_t´Â °¢°¢ Person_tÀÇ ¼Ó¼ºÀ» °è½ÂÇϰí, ƯÁ¤ À¯Çü¿¡ °íÀ¯ÇÑ ¿©·¯ °³ÀÇ Ãß°¡ ¼Ó¼ºÀÌ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, Á÷¿ø ¹× Çлý¿¡°Ô ÀÏ·Ã ¹øÈ£°¡ ÀÖ´õ¶óµµ, Çлý ÀÏ·Ã ¹øÈ£¿¡ »ç¿ëµÇ´Â Çü½ÄÀº Á÷¿ø ÀÏ·Ã ¹øÈ£¿¡ »ç¿ëµÇ´Â Çü½Ä°ú ´Ù¸¨´Ï´Ù.
ÁÖ: | Person_t À¯Çü¿¡¼ ÀÛ¼ºµÈ À¯ÇüÈ Å×ÀÌºí¿¡´Â ±¸Á¶È À¯Çü Address_tÀÇ Address Ä÷³ÀÌ ÀÖ½À´Ï´Ù. ¸ðµç ±¸Á¶È À¯Çü Ä÷³Àº ±× Ä÷³ÀÇ ±¸Á¶È À¯Çü¿¡ ´ëÇØ º¯È¯ ÇÔ¼ö¸¦ Á¤ÀÇÇØ¾ß ÇÕ´Ï´Ù. º¯È¯ ÇÔ¼ö Á¤ÀÇ¿¡ ´ëÇÑ ³»¿ëÀº È£½ºÆ® ¾ð¾î ÇÁ·Î±×·¥¿¡ ´ëÇÑ ¸ÊÇÎ ÀÛ¼º: º¯È¯ ÇÔ¼ö¸¦ ÂüÁ¶ÇϽʽÿÀ. |
°á±¹ Manager_t¿Í Architect_t´Â µÑ´Ù Employee_tÀÇ ºÎ¼Ó À¯ÇüÀÔ´Ï´Ù. ÀÌ´Â Employee_tÀÇ ¸ðµç ¼Ó¼ºÀ» °è½ÂÇÏ°í ±× À¯Çü¿¡ ¸Âµµ·Ï È®ÀåÇÕ´Ï´Ù. ±×·¯¹Ç·Î, À¯Çü Manager_tÀÇ ÀνºÅϽº¿¡´Â Name, Age, Address, SerialNum, Salary, Dept Bonus µîÀÇ 7°¡Áö ¼Ó¼ºÀÌ ÀÖ½À´Ï´Ù.
ÀÛ¼ºÇÑ ¸ðµç ±¸Á¶È À¯Çü¿¡ ´ëÇØ DB2´Â ÀÚµ¿À¸·Î µ¿¹Ý À¯ÇüÀ» ÀÛ¼ºÇÕ´Ï´Ù. µ¿¹Ý À¯ÇüÀº ÂüÁ¶ À¯ÇüÀ̶ó°í Çϸç, ÂüÁ¶ÇÏ´Â ±¸Á¶È À¯ÇüÀº ÂüÁ¶µÈ À¯ÇüÀ̶ó°í ÇÕ´Ï´Ù. À¯ÇüÈ Å×À̺íÀº À¯ÇüÈ Å×ÀÌºí¿¡¼ÀÇ ±¸Á¶È À¯Çü »ç¿ë¿¡ ¼³¸íµÈ ´ë·Î ÂüÁ¶ À¯ÇüÀ» Ưº°ÇÑ ¿ëµµ·Î »ç¿ëÇÒ ¼ö ÀÖ°Ô ÇÕ´Ï´Ù. SQL¹®¿¡¼ ´Ù¸¥ »ç¿ëÀÚ Á¤ÀÇ À¯Çü°ú °°ÀÌ ÂüÁ¶ À¯ÇüÀ» »ç¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù. SQl¹®¿¡¼ ÂüÁ¶ À¯ÇüÀ» »ç¿ëÇÏ·Á¸é REF(type-name)À» »ç¿ëÇϽʽÿÀ. ¿©±â¼ type-nameÀº ÂüÁ¶µÈ À¯ÇüÀ» ³ªÅ¸³À´Ï´Ù.
DB2´Â ÂüÁ¶ À¯ÇüÀ» À¯ÇüÈ Å×ÀÌºí¿¡ ÀÖ´Â ¿ÀºêÁ§Æ® ½Äº°ÀÚ Ä÷³ÀÇ À¯ÇüÀ¸·Î »ç¿ëÇÕ´Ï´Ù. ¿ÀºêÁ§Æ® ½Äº°ÀÚ´Â À¯ÇüÈ Å×ÀÌºí °èÃþ¿¡ ÀÖ´Â Çà ¿ÀºêÁ§Æ®¸¦ °íÀ¯ÇÏ°Ô ½Äº°ÇÕ´Ï´Ù. DB2´Â ¶ÇÇÑ ÂüÁ¶ À¯ÇüÀ» »ç¿ëÇÏ¿© ÂüÁ¶¸¦ À¯ÇüÈ Å×ÀÌºí¿¡ ÀÖ´Â Çà¿¡ ÀúÀåÇÕ´Ï´Ù. ÂüÁ¶ À¯ÇüÀ» »ç¿ëÇÏ¿© Å×ÀÌºí¿¡ ÀÖ´Â °¢ ¿ÀºêÁ§Æ®¸¦ ÂüÁ¶ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÂüÁ¶ »ç¿ë¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº ÂüÁ¶ À¯Çü »ç¿ëÀ» ÂüÁ¶ÇϽʽÿÀ. À¯ÇüÈ Å×ÀÌºí¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº À¯ÇüÈ Å×ÀÌºí¿¡¼ÀÇ ¿ÀºêÁ§Æ® ÀúÀåÀ» ÂüÁ¶ÇϽʽÿÀ.
ÂüÁ¶´Â ¸í¹éÇÏ°Ô À¯Çü ÁöÁ¤µË´Ï´Ù. ±×·¯¹Ç·Î Ç¥Çö½Ä¿¡¼ À¯ÇüÀ» »ç¿ëÇÒ ¼ö ÀÖ¾î¾ß ÇÕ´Ï´Ù. À¯Çü °èÃþÀÇ ·çÆ® À¯ÇüÀ» ÀÛ¼ºÇÒ ¶§ CREATE TYPE¹®ÀÇ REF USINGÀýÀ» »ç¿ëÇÏ¿© ÂüÁ¶ÀÇ ±âº» À¯ÇüÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÂüÁ¶ ±âº» À¯ÇüÀº Ç¥Çö À¯ÇüÀ̶ó°í ÇÕ´Ï´Ù. REF USINGÀýÀ» »ç¿ëÇÏ¿© Ç¥Çö À¯ÇüÀ» ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é, DB2´Â VARCHAR(16) FOR BIT DATAÀÇ ±âº» µ¥ÀÌÅÍ À¯ÇüÀ» »ç¿ëÇÕ´Ï´Ù. ·çÆ® À¯ÇüÀÇ Ç¥Çö À¯ÇüÀº ±× ¸ðµç ºÎ¼Ó À¯Çü¿¡¼ °è½ÂµË´Ï´Ù. REF USINGÀýÀº °èÃþÀÇ ·çÆ® À¯ÇüÀ» Á¤ÀÇÇÒ ¶§¸¸ À¯È¿ÇÕ´Ï´Ù. ÀÌ Àý Àü¹Ý¿¡ °ÉÃÄ »ç¿ëµÈ ¿¹¿¡¼ BusinessUnit_t À¯ÇüÀÇ Ç¥Çö À¯ÇüÀº INTEGERÀÎ ¹Ý¸é Person_tÀÇ Ç¥Çö À¯ÇüÀ» VARCHAR(13)ÀÔ´Ï´Ù.
DB2´Â ¾çÂÊ µð·ºÅ丮¿¡¼ ÂüÁ¶ À¯Çü°ú ±× Ç¥Çö À¯Çü °£¿¡ °ªÀ» À¯Çüº¯È¯ÇÏ´Â ÇÔ¼ö¸¦ ÀÚµ¿À¸·Î ÀÛ¼ºÇÕ´Ï´Ù. CREATE TYPE¹®¿¡´Â SQL ÂüÁ¶¼¿¡¼ ¼³¸íµÈ ´ë·Î ÀÌ·± µÎ À¯Çüº¯È¯ ÇÔ¼öÀÇ À̸§À» ¼±ÅÃÇÒ ¼ö ÀÖ°Ô ÇÏ´Â ¼±ÅÃÀû CAST WITHÀýÀÌ ÀÖ½À´Ï´Ù. ±âº»ÀûÀ¸·Î, À¯Çüº¯È¯ ÇÔ¼öÀÇ À̸§Àº ±¸Á¶È À¯Çü°ú ±× ÂüÁ¶ Ç¥Çö À¯ÇüÀÇ À̸§°ú °°½À´Ï´Ù. ¿¹¸¦ µé¾î, ±¸Á¶È À¯Çü °èÃþ ÀÛ¼ºÀÇ CREATE TYPE Person_t¹®Àº ´ÙÀ½ ÇÔ¼ö¸¦ ÀÚµ¿À¸·Î ÀÛ¼ºÇÕ´Ï´Ù.
CREATE FUNCTION VARCHAR(REF(Person_t)) RETURNS VARCHAR
DB2´Â Á¶ÀÛÀ» ¹ÝÀü½ÃŰ´Â ÇÔ¼ö¸¦ ÀÛ¼ºÇϱ⵵ ÇÕ´Ï´Ù.
CREATE FUNCTION Person_t(VARCHAR(13)) RETURNS REF(Person_t)
»õ °ªÀ» À¯ÇüÈ Å×ÀÌºí¿¡ »ðÀÔÇϰųª ÂüÁ¶ °ªÀ» ´Ù¸¥ °ª°ú ºñ±³ÇÒ ¶§¸¶´Ù ÀÌ À¯Çüº¯È¯ ÇÔ¼ö¸¦ »ç¿ëÇÕ´Ï´Ù.
DB2´Â ¶ÇÇÑ =, <>, <, <=, > ±×¸®°í >=°ú °°Àº ºñ±³ ¿¬»êÀÚ¸¦ »ç¿ëÇÏ¿© ÂüÁ¶ À¯ÇüÀ» ºñ±³ÇÏ´Â ÇÔ¼ö¸¦ ÀÛ¼ºÇÕ´Ï´Ù. ÂüÁ¶ À¯ÇüÀÇ ºñ±³ ¿¬»êÀÚ¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ Á¤º¸´Â SQL ÂüÁ¶¼¸¦ ÂüÁ¶ÇϽʽÿÀ.
ÀÛ¼ºÇÏ´Â ¸ðµç ±¸Á¶È À¯ÇüÀº DB2¿¡¼ ±¸Á¶È À¯Çü °ªÀ» ±¸¼º, °üÂû ¶Ç´Â ¼öÁ¤ÇÒ ¶§ »ç¿ëÇÏ´Â ÇÔ¼ö ¹× ¸Þ¼Òµå ¼¼Æ®¸¦ ¾Ï½ÃÀûÀ¸·Î ÀÛ¼ºÇÏ°Ô ÇÕ´Ï´Ù. Áï, ¿¹¸¦ µé¾î Person_t À¯Çü¿¡ ´ëÇØ DB2´Â À¯ÇüÀ» ÀÛ¼ºÇÒ ¶§ ´ÙÀ½ ÇÔ¼ö¿Í ¸Þ¼Òµå¸¦ ÀÚµ¿À¸·Î ÀÛ¼ºÇÕ´Ï´Ù.
CREATE FUNCTION Person_t ( ) RETURNS Person_t
Manager_t ºÎ¼Ó À¯Çü¿¡ ´ëÇØ ±¸¼ºÀÚ ÇÔ¼ö´Â ´ÙÀ½ ¸í·É¹®ÀÌ ½ÇÇàµÈ °Íó·³ ÀÛ¼ºµË´Ï´Ù.
CREATE FUNCTION Manager_t ( ) RETURNS Manager_t
Ä÷³¿¡ »ðÀÔÇÒ À¯ÇüÀÇ ÀνºÅϽº¸¦ ±¸¼ºÇÏ·Á¸é º¯È¯ ¸Þ¼Òµå¿Í ÇÔ²² ±¸¼ºÀÚ ÇÔ¼ö¸¦ »ç¿ëÇϽʽÿÀ. À¯ÇüÀÌ Ä÷³ ´ë½Å Å×ÀÌºí¿¡ ÀúÀåµÇ¸é ±¸¼ºÀÚ ÇÔ¼ö¸¦ º¯È¯ ¸Þ¼Òµå¿¡¼ »ç¿ëÇÏ¿© À¯ÇüÀÇ ÀνºÅϽº¸¦ »ðÀÔÇÏÁö ¾Ê¾Æµµ µË´Ï´Ù. µ¥ÀÌÅ͸¦ À¯ÇüÈ Å×ÀÌºí¿¡ »ðÀÔÇÏ´Â °Í¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº ±¸Á¶È À¯Çü °ªÀÌ ÀÖ´Â Çà »ðÀÔÀ» ÂüÁ¶ÇϽʽÿÀ.
¿¹¸¦ µé¾î, DB2°¡ age ¼Ó¼º¿¡ ´ëÇØ ÀÛ¼ºÇÏ´Â º¯È¯ ¸Þ¼Òµå´Â ¸¶Ä¡ ´ÙÀ½ ¸í·É¹®ÀÌ ½ÇÇàµÈ °Í°ú °°½À´Ï´Ù.
ALTER TYPE Person_t ADD METHOD AGE(int) RETURNS Person_t;
¿ÀºêÁ§Æ® º¯È¯¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº ±¸Á¶È À¯Çü °ªÀÇ °Ë»ö ¹× ¼öÁ¤À» ÂüÁ¶ÇϽʽÿÀ.
¿¹¸¦ µé¾î, DB2°¡ Person_t À¯ÇüÀÇ age ¼Ó¼º¿¡ ´ëÇØ ÀÛ¼ºÇÏ´Â °üÂû ¸Þ¼Òµå´Â DB2¿¡¼ ´ÙÀ½ ¸í·ÉÀ» ¹ßÇàÇÑ °Í°ú °°½À´Ï´Ù.
ALTER TYPE Person_t ADD METHOD AGE() RETURNS INTEGER;
°üÂû ¸Þ¼Òµå »ç¿ë¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº ±¸Á¶È À¯Çü °ªÀÇ °Ë»ö ¹× ¼öÁ¤À» ÂüÁ¶ÇϽʽÿÀ.
±¸Á¶È À¯Çü¿¡¼ ¸Þ¼Òµå¸¦ È£ÃâÇÏ·Á¸é ¸Þ¼Òµå È£Ãâ ¿¬»êÀÚ '..'¸¦ »ç¿ëÇϽʽÿÀ. ¸Þ¼Òµå È£Ãâ¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº SQL ÂüÁ¶¼¸¦ ÂüÁ¶ÇϽʽÿÀ.
±¸Á¶È À¯ÇüÀÇ µ¿ÀÛÀ» Á¤ÀÇÇÏ·Á¸é »ç¿ëÀÚ Á¤ÀÇ ¸Þ¼Òµå¸¦ ÀÛ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù. ±¸º° À¯Çü¿¡ ´ëÇØ ¸Þ¼Òµå¸¦ ÀÛ¼ºÇÒ ¼ö ¾ø½À´Ï´Ù. ¸Þ¼Òµå ÀÛ¼ºÀº ·çƾÀ» ÀÛ¼ºÇÏ´Â °Í°ú ºñ½ÁÇÕ´Ï´Ù. ´Ü, ±× ¸Þ¼Òµå¸¦ ƯÈ÷ ÇÑ À¯Çü¿¡ ´ëÇØ ÀÛ¼ºµÇ¹Ç·Î ±× À¯Çü°ú µ¿ÀÛÀº ¹ÐÁ¢ÇÏ°Ô ÅëÇյǾî ÀÖ½À´Ï´Ù.
¸Þ¼Òµå ½ºÆåÀº CREATE METHOD¹®À» ¹ßÇàÇϱâ Àü¿¡ À¯Çü¿¡ ¿¬°üµÇ¾î ÀÖ¾î¾ß ÇÕ´Ï´Ù. ´ÙÀ½ ¸í·É¹®Àº calc_bonus¶ó°í ÇÏ´Â ¸Þ¼Òµå¿¡ ´ëÇÑ ¸Þ¼Òµå ½ºÆåÀ» Employee_t À¯Çü¿¡ Ãß°¡ÇÕ´Ï´Ù.
ALTER TYPE Employee_t ADD METHOD calc_bonus (rate DOUBLE) RETURNS DECIMAL(7,2) LANGUAGE SQL CONTAINS SQL NO EXTERNAL ACTION DETERMINISTIC;
ÀÏ´Ü ¸Þ¼Òµå ½ºÆåÀ» À¯Çü¿¡ ¿¬°ü½ÃŰ¸é ¸Þ¼Òµå¸¦ ¸Å¼Òµå ½ºÆå¿¡ µû¶ó ¿ÜºÎ ¸Þ¼Òµå ¶Ç´Â SQL º»¹® ¸Þ¼Òµå·Î ÀÛ¼ºÇÏ¿© À¯ÇüÀÇ µ¿ÀÛÀ» Á¤ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½ ¸í·É¹®Àº Employee_t À¯Çü°ú °°Àº ½ºÅ°¸¶¿¡ »óÁÖÇÏ´Â calc_bonus¶ó´Â SQL ¸Þ¼Òµå¸¦ µî·ÏÇÕ´Ï´Ù.
CREATE METHOD calc_bonus (rate DOUBLE) FOR Employee_t RETURN SELF..salary * rate;
calc_bonus¶ó´Â ¸Þ¼Òµå¸¦ ¿øÇÏ´Â ´ë·Î ÀÛ¼ºÇÒ ¼ö Àִµ¥, ¸Å°³º¯¼öÀÇ ¼ö ¶Ç´Â À¯ÇüÀÌ ´Ù¸£°Å³ª ´Ù¸¥ À¯Çü °èÃþ¿¡ ÀÖ´Â À¯Çü¿¡ ´ëÇØ Á¤ÀǵǾî¾ß ÇÕ´Ï´Ù. ´Ù½Ã ¸»Çؼ Architect_t¿¡ ´ëÇØ ¸Å°³º¯¼ö À¯Çü°ú °°Àº ¼öÀÇ ¸Å°³º¯¼ö¸¦ °¡Áø calc_bonus¶ó´Â ¶Ç´Ù¸¥ ¸Þ¼Òµå¸¦ ÀÛ¼ºÇÒ ¼ö ¾ø½À´Ï´Ù.
ÁÖ: | DB2´Â ÇöÀç µ¿Àû µð½ºÆÐÄ¡¸¦ Áö¿øÇÏÁö ¾Ê½À´Ï´Ù. Áï, ÇÑ À¯Çü¿¡ ´ëÇØ ¸Þ¼Òµå¸¦ ¼±¾ðÇÑ ´ÙÀ½ µ¿ÀÏÇÑ ¼öÀÇ ¸Å°³º¯¼ö¸¦ »ç¿ëÇÏ¿© ºÎ¼Ó À¯Çü¿¡ ´ëÇØ ¸Þ¼Òµå¸¦ ´Ù½Ã Á¤ÀÇÇÒ ¼ö ¾ø½À´Ï´Ù. ÀϽÃÀûÀÎ ÇØ°áÃ¥À¸·Î TYPE ¼ú¾î¸¦ »ç¿ëÇÏ¿© µ¿Àû À¯ÇüÀ» °áÁ¤ÇÑ ´ÙÀ½, TREAT ASÀýÀ» »ç¿ëÇÏ¿© °¢ µ¿Àû À¯Çü¿¡ ´ëÇØ ´Ù¸¥ ¸Þ¼Òµå¸¦ È£ÃâÇÒ ¼ö ÀÖ½À´Ï´Ù. ºÎ¼Ó À¯ÇüÀ» ó¸®ÇÏ´Â º¯È¯ ÇÔ¼öÀÇ ¿¹´Â DB2¿¡¼ ºÎ¼Ó À¯Çü µ¥ÀÌÅÍ °Ë»ö(¹ÙÀÎµå¾Æ¿ô)¿¡¼ ÂüÁ¶ÇϽʽÿÀ. |
¸Þ¼Òµå µî·Ï, ÀÛ¼º ±×¸®°í È£Ãâ¿¡ ´ëÇØ¼´Â »ç¿ëÀÚ Á¤ÀÇ ÇÔ¼ö(UDFs)¿Í ¸Þ¼Òµå ¹× »ç¿ëÀÚ Á¤ÀÇ ÇÔ¼ö(UDF)¿¡¼ ÂüÁ¶ÇϽʽÿÀ.
±¸Á¶È À¯ÇüÀÇ ÀνºÅϽº¸¦ À¯ÇüÀÇ °¢ ¼Ó¼ºÀÌ º°µµÀÇ Ä÷³¿¡ ÀúÀåµÇ´Â À¯ÇüÈ Å×ÀÌºí¿¡¼ ÇàÀ¸·Î ÀúÀåÇϰųª, À¯ÇüÀÇ ¸ðµç ¼Ó¼ºÀÌ ´ÜÀÏ Ä÷³¿¡ ÀúÀåµÇ´Â Ä÷³¿¡¼ ¿ÀºêÁ§Æ®·Î ÀúÀåÇÒ ¼ö ÀÖ½À´Ï´Ù. À¯ÇüÈ Å×ÀÌºí¿¡´Â ½Äº°ÀÇ ¼Ó¼ºÀÌ ÀÖ½À´Ï´Ù. Áï, ´Ù¸¥ Å×ÀÌºí¿¡¼ ÂüÁ¶¸¦ »ç¿ëÇÏ¿© ÀνºÅϽºÀÇ ¼Ó¼ºÀ» ¾×¼¼½ºÇÒ ¼ö ÀÖ½À´Ï´Ù. ´Ù¸¥ Å×ÀÌºí¿¡¼ ÀνºÅϽº¸¦ ÂüÁ¶ÇÏ·Á¸é À¯ÇüÈ Å×À̺íÀ» »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. ¿ÀºêÁ§Æ®¸¦ ´Ù¸¥ Å×ÀÌºí¿¡¼ ½Äº°ÇÏÁö ¾Ê¾Æµµ µÇ¸é ¿ÀºêÁ§Æ®¸¦ Ä÷³¿¡ ÀúÀåÇϽʽÿÀ.
¿ÀºêÁ§Æ®°¡ Å×À̺í ÇàÀ¸·Î ÀúÀåµÇ¸é Å×À̺íÀÇ °¢ Ä÷³¿¡´Â ¿ÀºêÁ§Æ®ÀÇ ¼Ó¼ºÀÌ Çϳª¾¿ µé¾î ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, '»ç¶÷' ÀνºÅϽº¸¦ 'À̸§' Ä÷³°ú '³ªÀÌ' Ä÷³ÀÌ ÀÖ´Â Å×ÀÌºí¿¡ ÀúÀåÇÒ ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½Àº PersonÀÇ ÀνºÅϽº¸¦ ÀúÀåÇÏ´Â CREATE TABLE¹®ÀÇ ¿¹ÀÔ´Ï´Ù.
CREATE TABLE Person OF Person_t (REF IS Oid USER GENERATED)
PersonÀÇ ÀνºÅϽº¸¦ Å×ÀÌºí¿¡ »ðÀÔÇÏ·Á¸é ´ÙÀ½ ±¸¹®À» »ç¿ëÇϽʽÿÀ.
INSERT INTO Person (Oid, Name, Age) VALUES(Person_t('a'), 'Andrew', 29);
Oid | À̸§ | ³ªÀÌ | ÁÖ¼Ò |
---|---|---|---|
a | Andrew | 29 |
ÇÁ·Î±×·¥Àº À¯ÇüÈ Å×À̺íÀÇ Ä÷³À» ¾×¼¼½ºÇÏ¿© ¿ÀºêÁ§Æ®ÀÇ ¼Ó¼ºÀ» ¾×¼¼½ºÇÕ´Ï´Ù.
UPDATE Person SET Age=30 WHERE Name='Andrew';
ÀÌÀü UPDATE¹® ÀÌÈÄ Å×À̺íÀº ´ÙÀ½°ú °°½À´Ï´Ù.
Ç¥ 11. °»½Å ÈÄÀÇ Person À¯ÇüÈ Å×À̺í
Oid | À̸§ | ³ªÀÌ | ÁÖ¼Ò |
---|---|---|---|
a | Andrew | 30 |
|
Employee_t¶ó´Â Person_t ¼ºêÅ×À̺íÀÌ ÀÖÀ¸¹Ç·Î, Employee_t ÀνºÅϽº´Â Person Å×ÀÌºí¿¡ ÀúÀåµÉ ¼ö ¾ø°í ´Ù¸¥ Å×ÀÌºí¿¡ ÀúÀåµÇ¾î¾ß ÇÕ´Ï´Ù. ÀÌ Å×À̺íÀ» ¼ºêÅ×À̺íÀ̶ó°í ÇÕ´Ï´Ù. ´ÙÀ½ REATE TABLE¹®Àº Person Å×ÀÌºí ¾Æ·¡¿¡ Employee ¼ºêÅ×À̺íÀ» ÀÛ¼ºÇÕ´Ï´Ù.
CREATE TABLE Employee OF Employee_t UNDER Person INHERIT SELECT PRIVILEGES (SerialNum WITH OPTIONS NOT NULL, Dept WITH OPTIONS SCOPE BusinessUnit);
±×¸®°í Employee Å×ÀÌºí¿¡ ´Ù½Ã »ðÀÔÇÏ¸é ´ÙÀ½°ú °°½À´Ï´Ù.
INSERT INTO Employee (Oid, Name, Age, SerialNum, Salary) VALUES (Employee_t('s'), 'Susan', 39, 24001, 37000.48)
Ç¥ 12. Employer À¯ÇüÈ ¼ºêÅ×À̺í
Oid | À̸§ | ³ªÀÌ | ÁÖ¼Ò | SerialNum | Salary | Dept |
---|---|---|---|---|---|---|
s | Susan | 39 | 24001 | 37000.48 |
´ÙÀ½ Á¶È¸¸¦ ½ÇÇàÇϸé SusanÀÇ Á¤º¸°¡ ¸®Åϵ˴ϴÙ.
SELECT * FROM Employee WHERE Name='Susan';
ÀÌ·± µÎ Å×ÀÌºí¿¡ ´ëÇØ Èï¹Ì·Î¿î °ÍÀº Person Å×ÀÌºí¿¡¼ SQL¹®À»
½ÇÇàÇÏ´Â °Í¸¸À¸·Îµµ 'Á÷¿ø'°ú '»ç¶÷' ¸ðµÎ¿¡ ´ëÇÑ ÀνºÅϽº¸¦ ¾×¼¼½ºÇÒ ¼ö
ÀÖ´Ù´Â °ÍÀÔ´Ï´Ù. ÀÌ ±â´ÉÀ» ´ëü °¡´É¼ºÀ̶ó°í
ÇÏ°í ±¸Á¶È À¯ÇüÀÇ Ãß°¡ Ư¼º¿¡¼ ¼³¸íµË´Ï´Ù. À¯Çü °èÃþ¿¡¼ ´õ ³ôÀº
À§Ä¡¿¡ ÀÖ´Â ÀνºÅϽº¸¦ °¡Áö°í ÀÖ´Â Å×À̺íÀ» Á¶È¸Çϸé, °èÃþ¿¡¼ ´õ ³·Àº
À§Ä¡¿¡ ÀÖ´Â À¯ÇüÀÇ ÀνºÅϽº¸¦ ÀÚµ¿À¸·Î ¾ò°Ô µË´Ï´Ù. ´Ù½Ã ¸»ÇØ Person
Å×À̺íÀº ³í¸®ÀûÀ¸·Î SELECT, UPDATE ¹× DELETE¹®ÀÎ °Íó·³ Ç¥½ÃµË´Ï´Ù.
Ç¥ 13. Person Å×ÀÌºí¿¡´Â Person°ú Employee ÀνºÅϽº°¡ ÀÖ½À´Ï´Ù.
Oid | À̸§ | ³ªÀÌ | ÁÖ¼Ò |
---|---|---|---|
a | Andrew | 30 | (³Î(NULL)) |
s | Susan | 39 | (³Î(NULL)) |
´ÙÀ½ Á¶È¸¸¦ ½ÇÇàÇϸé (»ç¶÷) Andrew¿Í (Á÷¿ø) Susan¿¡ ´ëÇÑ ¿ÀºêÁ§Æ® ½Äº°ÀÚ ¹× Person_t Á¤º¸¸¦ ¾ò°Ô µË´Ï´Ù.
SELECT * FROM Person;
´ëü °¡´É¼º¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº ±¸Á¶È À¯ÇüÀÇ Ãß°¡ Ư¼ºÀ» ÂüÁ¶ÇϽʽÿÀ.
À¯ÇüÈ Å×À̺í ÇϳªÀÇ ¿ÀºêÁ§Æ®¿Í ´Ù¸¥ Å×À̺íÀÇ ¿ÀºêÁ§Æ®°£ °ü°è¸¦ Á¤ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù. µ¿ÀÏÇÑ À¯ÇüÈ Å×À̺íÀÇ ¿ÀºêÁ§Æ®°£ °ü°è¸¦ Á¤ÀÇÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ºÎ¼ÀÇ ÀνºÅϽº°¡ µé¾î ÀÖ´Â À¯ÇüÈ Å×À̺íÀ» Á¤ÀÇÇß´Ù°í °¡Á¤ÇϽʽÿÀ. Employee Å×ÀÌºí¿¡¼ ºÎ¼ ¹øÈ£¸¦ À¯Áöº¸¼öÇÏ´Â ´ë½Å, Employee Å×À̺íÀÇ Dept Ä÷³¿¡´Â BusinessUnit Å×ÀÌºí¿¡ ÀÖ´Â ºÎ¼ Áß Çϳª¿¡ ´ëÇÑ ³í¸®Àû Æ÷ÀÎÅͰ¡ µé¾î ÀÖ½À´Ï´Ù. ÀÌ·± Æ÷ÀÎÅ͸¦ ÂüÁ¶¶ó°í ÇÏ¸ç ±×¸² 9¿¡¼ ¼³¸íµË´Ï´Ù.
±×¸² 9. Employee_t¿¡¼ BusinessUnit_t·ÎÀÇ ±¸Á¶È À¯Çü ÂüÁ¶
![]() |
Áß¿ä»çÇ×: ÂüÁ¶´Â ÂüÁ¶ Á¦¾àÁ¶°Ç°ú µ¿ÀÏÇÑ ±â´ÉÀ» ¼öÇàÇÏÁö ¾Ê½À´Ï´Ù. Á¸ÀçÇÏÁö ¾Ê´Â ºÎ¼¸¦ ÂüÁ¶ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ºÎ¼¿Í Á÷¿ø°£¿¡ ¹«°á¼ºÀ» À¯Áöº¸¼öÇÏ´Â °ÍÀÌ Áß¿äÇϸé, ÀÌ·± µÎ Å×ÀÌºí°£¿¡ ÂüÁ¶ Á¦ÇÑÁ¶°ÇÀ» Á¤ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù. ÂüÁ¶ÀÇ ½ÇÁ¦ ´É·ÂÀº Å×ÀÌºí°£ÀÇ °ü°è¸¦ Ž»öÇÏ´Â Á¶È¸¸¦ ÀÛ¼ºÇÒ ¼ö ÀÖ´Â ±â´ÉÀ» Á¦°øÇÑ´Ù´Â µ¥ ÀÖ½À´Ï´Ù. Á¶È¸´Â °ü°è¸¦ ÂüÁ¶ ÇØÁ¦ÇÏ°í Æ÷ÀÎÆ®µÈ ¿ÀºêÁ§Æ®¸¦ ÀνºÅϽºÈÇÕ´Ï´Ù. ÀÌ ÀÛ¾÷À» ¼öÇàÇÒ ¶§ »ç¿ëÇÑ ¿¬»êÀÚ´Â ÂüÁ¶ ÇØÁ¦ ¿¬»êÀÚ¶ó°í Çϸç, ->¿Í °°½À´Ï´Ù.
¿¹¸¦ µé¾î, Employee Å×ÀÌºí¿¡¼ ´ÙÀ½ Á¶È¸´Â ÂüÁ¶ ÇØÁ¦ ¿¬»êÀÚ¸¦ »ç¿ëÇÏ¿© DB2¿¡°Ô Dept Ä÷³¿¡¼ BusinessUnit Å×À̺í·ÎÀÇ °æ·Î¸¦ µû¸£µµ·Ï Áö½ÃÇÕ´Ï´Ù. ÂüÁ¶ ÇØÁ¦ ¿¬»êÀÚ´Â Name Ä÷³ÀÇ °ªÀ» ¸®ÅÏÇÕ´Ï´Ù.
SELECT Name, Salary, Dept->Name FROM Employee;
À¯ÇüÈ Å×ÀÌºí¿¡¼ Á¶È¸¸¦ ÀÛ¼ºÇÏ´Â °Í¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ Á¤º¸´Â À¯ÇüÈ Å×À̺í Á¶È¸¸¦ ÂüÁ¶ÇϽʽÿÀ.
Ä÷³¿¡ ¿ÀºêÁ§Æ®¸¦ ÀúÀåÇϸé DB2 ³»Àå µ¥ÀÌÅÍ À¯ÇüÀ¸·Î ÀûÀýÈ÷ ¸ðµ¨ÈµÉ ¼ö ¾ø´Â ¾÷¹« ¿ÀºêÁ§Æ®¿¡ ´ëÇÑ »ç½ÇÀ» ¸ðµ¨ÈÇÒ ¶§ À¯¿ëÇÕ´Ï´Ù. ´Ù½Ã ¸»Çؼ, ¾÷¹« ¿ÀºêÁ§Æ®(Á÷¿ø, ºÎ¼ µî)¸¦ À¯ÇüÈ Å×ÀÌºí¿¡ ÀúÀåÇÒ ¼ö ÀÖÁö¸¸, ÀÌ ¿ÀºêÁ§Æ®¿¡´Â ±¸Á¶È À¯ÇüÀ» »ç¿ëÇÏ¿© °¡Àå Àß ¸ðµ¨ÈµÇ´Â ¼Ó¼ºÀÌ ÀÖÀ» ¼ö ÀÖ½À´Ï´Ù.
¿¹¸¦ µé¾î, ÀÀ¿ëÇÁ·Î±×·¥ÀÌ ÁÖ¼ÒÀÇ Æ¯Á¤ ºÎºÐÀ» ¾×¼¼½ºÇØ¾ß ÇÑ´Ù°í °¡Á¤ÇϽʽÿÀ. ÁÖ¼Ò¸¦ ±¸Á¶ÈµÇÁö ¾ÊÀº ¹®ÀÚ¿·Î ÀúÀåÇÏ´Â ´ë½Å, À̸¦ ±×¸² 10¿¡¼¿Í °°ÀÌ ±¸Á¶È ¿ÀºêÁ§Æ®·Î ÀúÀåÇÒ ¼ö ÀÖ½À´Ï´Ù.
±×¸² 10. ±¸Á¶È À¯ÇüÀ¸·Î¼ÀÇ ÁÖ¼Ò ¼Ó¼º
![]() |
¶ÇÇÑ, ÁÖ¼ÒÀÇ À¯Çü °èÃþÀ» Á¤ÀÇÇÏ¿© ¿©·¯ ³ª¶ó¿¡¼ »ç¿ëµÇ´Â ¼·Î ´Ù¸¥ ÁÖ¼Ò Çü½ÄÀ» ¸ðµ¨ÈÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ¿ìÆí¹øÈ£ Äڵ尡 ÀÖ´Â ¹Ì±¹ ÁÖ¼Ò À¯Çü°ú ÀÌ¿ô ¼Ó¼ºÀÌ ÇÊ¿äÇÑ ºê¶óÁú ÁÖ¼Ò À¯ÇüÀ» µÑ´Ù Æ÷ÇÔ½Ãų ¼ö ÀÖ½À´Ï´Ù. Address_t À¯Çü °èÃþÀº Ä÷³¿¡ ±¸Á¶È À¯Çü ÀνºÅϽº »ðÀÔ¿¡ Á¤ÀǵǾî ÀÖ½À´Ï´Ù.
¿ÀºêÁ§Æ®°¡ Ä÷³ °ªÀ¸·Î ÀúÀåµÇ¸é, ¼Ó¼ºÀº Å×À̺íÀÇ Çà¿¡ ÀúÀåµÈ ¿ÀºêÁ§Æ®¿Í °°ÀÌ ¿ÜºÎÀûÀ¸·Î Ç¥ÇöµÇÁö ¾Ê½À´Ï´Ù. ´ë½Å ¸Þ¼Òµå¸¦ »ç¿ëÇÏ¿© ±× ¼Ó¼ºÀ» ó¸®ÇØ¾ß ÇÕ´Ï´Ù. DB2´Â °üÂû ¸Þ¼Òµå¸¦ »ý¼ºÇÏ¿© ¼Ó¼ºÀ» ¸®ÅÏÇϰí, º¯È¯ ¸Þ¼Òµå¸¦ »ý¼ºÇÏ¿© ¼Ó¼ºÀ» º¯°æÇÕ´Ï´Ù. ´ÙÀ½ ¿¹´Â °üÂû ¸Þ¼Òµå Çϳª¿Í º¯È¯ ¸Þ¼Òµå µÎ °³¸¦ »ç¿ëÇÕ´Ï´Ù. Çϳª´Â Number ¼Ó¼ºÀ» À§ÇÑ °ÍÀ̰í, ´Ù¸¥ Çϳª´Â Street ¼Ó¼ºÀ» À§ÇÑ °ÍÀ¸·Î ÁÖ¼Ò¸¦ º¯°æÇÕ´Ï´Ù.
UPDATE Employee SET Address=Address..Number('4869')..Street('Appletree') WHERE Name='Franky' AND Address..State='CA';
¾ÕÀÇ ¿¹¿¡¼ UPDATE¹®ÀÇ SETÀýÀº Number¿Í Street º¯È¯ ¸Þ¼Òµå¸¦ È£ÃâÇÏ¿© Address_t À¯ÇüÀÇ ÀνºÅϽº ¼Ó¼ºÀ» °»½ÅÇÕ´Ï´Ù. WHEREÀýÀº ¼ú¾î°¡ µÎ °³ÀÎ °»½Å ¸í·É¹® Á¶ÀÛÀ» Á¦ÇÑÇÕ´Ï´Ù. Çϳª´Â Name Ä÷³ÀÇ µ¿µî¼º ºñ±³À̰í, ´Ù¸¥ Çϳª´Â Address Ä÷³ÀÇ State °üÂû ¸Þ¼Òµå¸¦ È£ÃâÇÏ´Â µ¿µî¼º ºñ±³ÀÔ´Ï´Ù.
ÀÌ¿Í ºñ½ÁÇÏ°Ô Address_t À¯ÇüÀ¸·Î Á¤ÀÇµÈ Ä÷³¿¡´Â ¹Ì±¹ ÁÖ¼Ò ¶Ç´Â ºê¶óÁú ÁÖ¼ÒÀÇ ÀνºÅϽº°¡ ÀÖ½À´Ï´Ù.
ÀÌ¿Í ´Þ¸® INSERT Á¶ÀÛÀº INSER¹®¿¡¼ ÁöÁ¤µÈ Å×ÀÌºí¿¡¸¸ Àû¿ëµË´Ï´Ù. Employee Å×ÀÌºí¿¡ »ðÀÔÇϸé, Employee_t ¿ÀºêÁ§Æ®°¡ Person Å×ÀÌºí °èÃþ¿¡ ÀÛ¼ºµË´Ï´Ù.
±¸Á¶È À¯ÇüÀ» ¸Å°³º¯¼ö·Î ÇÔ¼ö¿¡ Àü´ÞÇϰųª ÇÔ¼ö¿¡¼ °á°ú·Î Àü´ÞÇÏ¸é ºÎ¼Ó À¯Çü ÀνºÅϽº¸¦ ´ëüÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ½ºÄ®¶ó ÇÔ¼ö¿¡ Address_t À¯ÇüÀÇ ¸Å°³º¯¼ö°¡ ÀÖÀ¸¸é, US_addr_t¿Í °°Àº ±× ºÎ¼Ó À¯Çü Áß ÇϳªÀÇ ÀνºÅϽº¸¦ Address_tÀÇ ÀνºÅϽº ´ë½Å Àü´ÞÇÒ ¼ö ÀÖ½À´Ï´Ù. Å×À̺í ÇÔ¼ö´Â ±¸Á¶È À¯Çü Ä÷³À» ¸®ÅÏÇÒ ¼ö ¾ø½À´Ï´Ù.
Ä÷³À̳ª Å×À̺íÀº ÇϳªÀÇ À¯ÇüÀ¸·Î Á¤ÀǵÇÁö¸¸ ´Ù¸¥ À¯ÇüÀÇ ÀνºÅϽº°¡ µé¾î ÀÖÀ» ¼öµµ ÀÖÀ¸¹Ç·Î, Á¤ÀÇ¿¡ »ç¿ëµÈ À¯Çü°ú ½ÇÁ¦ ·±Å¸Àӽà ¸®ÅϵǴ ÀνºÅϽº À¯ÇüÀ» ±¸ºÐÇÏ´Â °ÍÀÌ Áß¿äÇÕ´Ï´Ù. Ä÷³, Çà ¶Ç´Â ÇÔ¼ö ¸Å°³º¯¼öÀÇ ±¸Á¶È À¯ÇüÀÇ Á¤ÀǸ¦ Á¤Àû À¯ÇüÀ̶ó°í ÇÕ´Ï´Ù. ±¸Á¶È À¯Çü ÀνºÅϽºÀÇ ½ÇÁ¦ À¯ÇüÀ» µ¿Àû À¯ÇüÀ̶ó°í ÇÕ´Ï´Ù. µ¿Àû À¯Çü¿¡ ´ëÇÑ Á¤º¸¸¦ °Ë»öÇÏ·Á¸é, ÀÀ¿ëÇÁ·Î±×·¥Àº ±âŸ À¯Çü-°ü·Ã ³»Àå ÇÔ¼ö¿¡¼ ¼³¸íµÈ TYPE_NAME, TYPE_SCHEMA ¹× TYPE_IDÀÇ ³»Àå ÇÔ¼ö¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.