| PostgreSQL 8.3.3¹®¼ | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Chapter 8. µ¥ÀÌÅÍ Å¸ÀÔ | Fast Forward | Next |
º¹ÇÕÇü Çà ȤÀº ·¹ÄÚµåÀÇ ±¸Á¶¸¦ ¼³¸íÇÕ´Ï´Ù. ±âº»ÀûÀ¸·Î´Â, ´Ü¼øÇÑ Çʵå¸í°ú ±× µ¥ÀÌÅÍÇüÀÇ ¸®½ºÆ®ÀÔ´Ï´Ù. PostgreSQL¿¡¼´Â, ´Ü¼øÇÑ ÇüÅ¿¡¼ »ç¿ëÇÒ ¼ö ÀÖ´Â ¹æ¹ý°ú °°Àº ¹æ¹ýÀ¸·Î º¹ÇÕÇüÀÇ °ªÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¸é, Å×À̺í¿Àº º¹ÇÕÇüÀÇ ÇüÅ·Π¼±¾ðÇÒ ¼ö ÀÖ½À´Ï´Ù.
2°¡ÁöÀÇ º¹ÇÕÇüÀÇ ¼±¾ðÀÇ ¿¹¸¦ º¸°Ú½À´Ï´Ù.
CREATE TYPE complex AS (
r double precision,
i double precision
);
CREATE TYPE inventory_item AS (
name text,
supplier_id integer,
price numeric
);
ÀÌ ±¸¹®Àº, Çʵå¸í°ú ±× ÇüŸ¸À» ÁöÁ¤ÇÒ ¼ö ÀÖ´Â Á¡À» Á¦¿ÜÇϰí´Â CREATE TABLE¿Í µ¿µîÇÕ´Ï´Ù. ÇöÀç´Â, Á¦¾à(NOT NULLµî)À» Æ÷ÇÔÇÒ ¼ö ¾ø½À´Ï´Ù. ASŰ¿öµå°¡ Áß¿äÇÑ °ÍÀÌ´Ï ÁÖÀÇÇØ ÁÖ¼¼¿ä. À̰ÍÀÌ ¾øÀ¸¸é ½Ã½ºÅÛÀº CREATE TYPEÀÇ Àǹ̸¦ ¿ÏÀüÈ÷ ´Ù¸£°Ô ÇØ¼®ÇØ, ÀÌ»óÇÑ ¿¡·¯ ±¸¹®ÀÌ µÇ¾î ¹ö¸³´Ï´Ù.
Á¤ÀÇ ³¡³ ÇüŸ¦ »ç¿ëÇØ, ÀÌÇÏ¿Í °°ÀÌ Å×À̺íÀ̳ª ÇÔ¼ö¸¦ »ý¼ºÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù.
CREATE TABLE on_hand (
item inventory_item,
count integer
);
INSERT INTO on_hand VALUES (ROW('fuzzy dice', 42, 1.99), 1000);
or functions:
CREATE FUNCTION price_extension(inventory_item, integer) RETURNS numeric AS 'SELECT $1.price * $2' LANGUAGE SQL; SELECT price_extension(item, 10) FROM on_hand;
Å×À̺íÀ» »ý¼ºÇÒ ¶§´Â, Ç×»ó Å×À̺í¸í°ú °°Àº À̸§ÀÇ º¹ÇÕÇüµµ ÀÚµ¿ÀûÀ¸·Î »ý¼ºµË´Ï´Ù. À̰ÍÀº, Å×À̺íÀÇ ÇàÇüÀ» Ç¥ÇöÇÏ´Â °ÍÀÔ´Ï´Ù. ¿¹¸¦ µé¸é,
CREATE TABLE inventory_item (
name text,
supplier_id integer REFERENCES suppliers,
price numeric CHECK (price > 0)
);
¸¦ ½Ç½ÃÇß´Ù°í Çϸé(ÀÚ), À§ÀÇ °Í°ú °°Àº inventory_item¶ó°í ÇÏ´Â º¹ÇÕÇü°ú °°ÀÌ ºÎÂ÷ÀûÀ¸·Î ÀÛ¼ºµÇ¾î ¶È°°ÀÌ »ç¿ëÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù. ±×·¯³ª, ÇöÀçÀÇ ½ÇÀå¿¡´Â, ´ÙÀ½°ú °°Àº Áß¿äÇÑ Á¦¾à»çÇ×ÀÌ ÀÖ´Â °Í¿¡ ÁÖÀÇÇØ ÁÖ¼¼¿ä. º¹ÇÕÇü¿¡´Â Á¦¾àÀ» °ü·ÃÁöÀ» ¼ö ¾øÀ¸¹Ç·Î, Å×À̺í Á¤ÀÇ¿¡ Æ÷ÇԵǴ Á¦¾àÀº Å×ÀÌºí ¿ÜºÎÀÇ º¹ÇÕÇüÀÇ °ª¿¡´Â Àû¿ëµÇÁö ¾Ê½À´Ï´Ù (ºÎºÐÀûÀÎ Â÷¼±Ã¥Àº, º¹ÇÕÇüÀÇ ¸â¹ö·Î¼ µµ¸ÞÀÎÇüÀ» »ç¿ëÇÏ´Â °ÍÀÔ´Ï´Ù).
º¹ÇÕÇüÀ» ¸®ÅÍ·² Á¤¼ö·Î¼ ±â¼úÇÏ·Á¸é , Çʵ尪À» ½±Ç¥·Î ´Ü¶ôÁö¾î, ±×°ÍµéÀ» °ýȣǥ½Ã ÇÔ. Çʵ尪À» ÀÌÁß ÀοëºÎÈ£·Î ÀÔ·ÂÇÒ °æ¿ì, ½°Ç¥³ª °ýȣǥ½Ã°¡ ÀÖ¾î¾ß¸¸ ÇÕ´Ï´Ù (º¸´Ù »ó¼¼ÇÑ °Í¿¡ ´ëÇÏ¿©´Â ´ÙÀ½¿¡ ¼³¸íÇÕ´Ï´Ù). µû¶ó¼, º¹ÇÕÇüÀÇ ÀϹÝÀûÀÎ ¼½ÄÀº ÀÌÇÏ¿Í °°ÀÌ µË´Ï´Ù.
'( val1 , val2 , ... )'
ÀÌÇÏ¿¡ ¿¹¸¦ ³ªÅ¸³À´Ï´Ù.
'("fuzzy dice",42,1.99)'
À̰ÍÀº À§¿¡ Á¤ÀÇµÈ inventory_itemÇüÀÇ À¯¿äÇÑ °ªÀÔ´Ï´Ù. Çʵ带 NULL·Î ÇÏ·Á¸é, ¸®½ºÆ®ÁßÀÇ ÇØ´ç À§Ä¡¸¦ ºñ¿ó´Ï´Ù. ¿¹¸¦ µé¸é, ÀÌÇÏÀÇ Á¤¼ö´Â 3¹øÂ°ÀÇ Çʵ忡 NULL¸¦ ÁöÁ¤Çϰí ÀÖ½À´Ï´Ù.
'("fuzzy dice",42,)'
NULL´Â ¾Æ´Ï°í °ø¹®ÀÚ¿·Î ÇÏ°í ½ÍÀº °ÍÀ̸é, ÀÌÇÏ¿Í °°ÀÌ ÀοëºÎÈ£¸¦ ÀÌÁßÀ¸·Î ±â¼úÇÕ´Ï´Ù.
'("",42,)'
À̰Ϳ¡ ÀÇÇØ, ÃÖÃÊÀÇ Çʵå´Â ºñNULLÀÇ °ø¹®ÀÚ¿¿¡, 3¹øÂ°ÀÇ Çʵå´Â NULL°¡ µË´Ï´Ù.
(½ÇÁ¦·Î´Â, ÀÌ·¯ÇÑ Á¤¼ö´Â Section 4.1.2.5¿¡¼ ¼³¸íÇÑ ÀϹÝÀûÀÎ Á¤¼öÇüÅÂÀÇ Æ¯¼öÇÑ °æ¿ì¿¡ Áö³ªÁö ¾Ê½À´Ï´Ù. ¿ì¼±, Á¤¼ö´Â ij¸¯ÅÍ ¶óÀÎÀ¸·Î Ãë±ÞµÇ¾î º¹ÇÕÇüÀÇ ÀÔ·Â º¯È¯ 󸮷Πº¸³»Áý´Ï´Ù. ¸í½ÃÀûÀÎ ÇüÅ ÁöÁ¤ÀÌ ÇÊ¿äÇÏ°Ô µÉÁöµµ ¸ð¸¨´Ï´Ù. )
¶Ç, ROW½Ä ±¸¹®µµ º¹ÇÕ°ªÀ» »ý¼ºÇÒ ¶§¿¡ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¾Æ¸¶ ´ëºÎºÐÀÇ °æ¿ì, À̰ÍÀº string-literal ±¸¹®º¸´Ù °£´ÜÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀοëºÎÈ£ºÎÀÇ º¹¼öÀÇ Ãþ¿¡ ´ëÇØ °í·ÁÇÒ Çʿ䰡 ¾ø½À´Ï´Ù. ÀÌ¹Ì ÀÌ ¹æ¹ýÀ» »ç¿ëÇϰí ÀÖ½À´Ï´Ù.
ROW('fuzzy dice', 42, 1.99)
ROW('', 42, NULL)
½Ä¾È¿¡ 2°³ ÀÌ»óÀÇ Çʵ尡 ÀÖÀ¸¸é, ROW Ű¿öµå´Â ½ÇÁ¦·Î´Â »ý·« ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯¹Ç·Î, ÀÌÇÏ¿Í °°ÀÌ °£·«ÈÇÒ ¼ö ÀÖ½À´Ï´Ù.
('fuzzy dice', 42, 1.99)
('', 42, NULL)
ROW½Ä ±¸¹®¿¡ ´ëÇØ¼´Â Section 4.2.11¿¡¼ º¸´Ù »ó¼¼ÇÏ°Ô ¼³¸íÇÕ´Ï´Ù.
º¹ÇÕÇü ¿ÀÇ Çʵ忡 ¾×¼¼½º ÇÏ·Á¸é, Å×À̺í¸íÀ¸·ÎºÎÅÍ Çʵ带 ¼±ÅÃÇÏ´Â °æ¿ìó·³ ¼Ò¼öÁ¡°ú Çʵå¸íÀ» ±â¼úÇÕ´Ï´Ù. »ç½Ç»ó, Å×À̺í¸íÀ¸·ÎºÎÅÍÀÇ ¼±Åðú ºñ½ÁÇÏ¿© ÆÄ¼¸¦ È¥¶õ½ÃŰÁö ¾Ê°Ô °ýÈ£¸¦ »ç¿ëÇØ¾ß ÇÏ´Â °æ¿ì°¡ ÀÚÁÖ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¸é, on_hand¶ó°í ÇÏ´Â Å×À̺íÀÇ ¿¹·ÎºÎÅÍ subfield¸¦ ¼±ÅÃÇÏ·Á°í ÇßÀ» °æ¿ì,
SELECT item.name FROM on_hand WHERE item.price > 9.99;
À̰ÍÀº, SQLÀÇ ±¸¹® ±ÔÄ¢¿¡ µû¶ó item°¡ Çʵå¸íÀÌ ¾Æ´Ñ Å×À̺í¸íÀ¸·Î¼ ÇØ¼®µÇ±â ¶§¹®¿¡ µ¿ÀÛÇÏÁö ¾Ê½À´Ï´Ù. ÀÌÇÏ¿Í °°ÀÌ ±â¼úÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù.
SELECT (item).name FROM on_hand WHERE (item).price > 9.99;
¶ÇÇÑ, Å×À̺í¸íµµ »ç¿ëÇØ¾ß ÇÏ´Â °æ¿ì(¿¹¸¦ µé¸é º¹¼ö Å×ÀÌºí¿¡ ´ëÇÑ Äõ¸®) ÀÌÇÏ¿Í °°ÀÌ µË´Ï´Ù.
SELECT (on_hand.item).name FROM on_hand WHERE (on_hand.item).price > 9.99;
À̰ÍÀ¸·Î, °ýÈ£ Ç¥½ÃµÈ °³Ã¼´Â Á¤È®ÇÏ°Ô item¿¿¡ÀÇ ÂüÁ¶·Î¼ ÇØ¼®µÇ¾î, subfield°¡ ¼±ÅÃÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù.
ºñ½ÁÇÑ ±¸¹®»óÀÇ ¹®Á¦´Â, º¹ÇÕÇüÀ¸·ÎºÎÅÍ Çʵ带 ¼±ÅÃÇÒ ¶§ Ç×»ó ¹ß»ýÇÕ´Ï´Ù. ¿¹¸¦ µé¸é, º¹ÇÕÇüÀÇ °ªÀ» µ¹·ÁÁÖ´Â ÇÔ¼öÀÇ °á°ú·ÎºÎÅÍ 1°³¸¸ Çʵ带 ¼±ÅÃÇÏ´Â °æ¿ì, ÀÌÇÏ¿Í °°ÀÌ ±â¼úÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù.
SELECT (my_func(...)).field FROM ...
Ãß°¡ °ýÈ£°¡ ¾øÀ¸¸é À̰ÍÀº ±¸¹® ¿¡·¯¸¦ ÀÏÀ¸Åµ´Ï´Ù.
º¹ÇÕÇüÀÇ ¿¿¡ ÇÏ´Â »ðÀÔ°ú °»½Å¿ëÀÇ ÀûÀýÇÑ ±¸¹®ÀÇ ¿¹¸¦ ¸î °¡Áö µé¾îº¸°Ú½À´Ï´Ù. ¿ì¼±, ¿Àüü¸¦ »ðÀÔ, °»½ÅÇÏ´Â ¿¹ÀÔ´Ï´Ù.
INSERT INTO mytab (complex_col) VALUES((1.1,2.2)); UPDATE mytab SET complex_col = ROW(1.1,2.2) WHERE ...;
ù ¹ø? ¿¹¿¡¼´Â ROW¸¦ »ý·« Çϰí, µÎ ¹øÂ°ÀÇ ¿¹¿¡¼´Â ROW¸¦ »ç¿ëÇϰí ÀÖ½À´Ï´Ù. ¾î´À ¹æ¹ýÀ¸·Îµç ½Ç½ÃÇÒ ¼ö ÀÖ½À´Ï´Ù.
ÀÌÇÏ¿Í °°ÀÌ Çϸé, º¹ÇÕÇüÀÇ ¿ÀÇ °³°³ÀÇ subfield¸¦ °»½ÅÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù.
UPDATE mytab SET complex_col.r = (complex_col).r + 1 WHERE ...;
¿©±â¼, SET µÚÀÇ ¿ÀÇ À̸§ ÁÖÀ§¿¡ °ýÈ£¸¦ ±â¼úÇÒ Çʿ䰡 ¾ø½À´Ï´Ù.(½ÇÁ¦·Î ±â¼úÇÒ ¼ö ¾ø´Â °Í) ±×·¯³ª, µîȣǥÀÇ ¿À¸¥ÂÊ¿¡¼ °°Àº ¿À» ÂüÁ¶ÇÏ´Â °æ¿ì¿¡´Â °ýÈ£°¡ ÇÊ¿äÇÔÀ¸·Î ÁÖÀÇÇØ ÁÖ¼¼¿ä.
¶Ç, INSERT¸¦ ´ë»óÀ¸·Î ÇØ subfield¸¦ ÁöÁ¤ÇÒ ¼öµµ ÀÖ½À´Ï´Ù.
INSERT INTO mytab (complex_col.r, complex_col.i) VALUES(1.1, 2.2);
¿ÀÇ subfield ¸ðµç °ªÀ» ÁÖÁö ¾ÊÀ¸¸é, ³ª¸ÓÁöÀÇ subfield´Â NULL°ªÀÌ µË´Ï´Ù.
º¹ÇÕÇüÀÇ ¿ÜºÎ ÅØ½ºÆ® Ç¥ÇöÀº, °³°³ÀÇ Çʵå¿ëÀÇ I/Oº¯È¯ ±ÔÄ¢¿¡ µû¶ó ÇØ¼®µÇ´Â Ç׸ñ±º°ú º¹ÇÕ ±¸Á¶¸¦ ÀǹÌÇÏ´Â Àå½ÄÀ¸·Î ±¸¼ºµË´Ï´Ù. ÀÌ Àå½ÄÀº, °ªÀüü¸¦ °ýÈ£((¹×))¿Í ÀÎÁ¢ÇÑ Ç׸ñ°£ ½°Ç¥(,)·Î ±¸¼ºµË´Ï´Ù. °ýÈ£ ¹ÛÀÇ °ø¹é ¹®ÀÚ´Â ¹«½ÃµÇÁö¸¸, °ýÈ£ÀÇ ³»ºÎ¿¡¼´Â Çʵ尪ÀÇ ÀϺηΠ°£ÁÖÇØÁý´Ï´Ù. °ø¹éÀÌ Àǹ̰¡ ÀÖ´ÂÁö ¾ø´ÂÁö¿¡ ´ëÇØ¼´Â, ±× ÇʵåÀÇ µ¥ÀÌÅÍÇü¿ëÀÇ ÀÔ·Â º¯È¯ ±ÔÄ¢¿¡ µû¸¨´Ï´Ù. ¿¹¸¦ µé¸é,
'( 42)'
¾ÈÀÇ °ø¹éÀº, ±× ÇʵåÇüÀÌ Á¤¼öÀÇ °æ¿ì´Â ¹«½ÃµË´Ï´Ù¸¸, ÅØ½ºÆ®ÀÇ °æ¿ì´Â ¹«½ÃµÇÁö ¾Ê½À´Ï´Ù.
»ó¼úÇÑ ´ë·Î, º¹ÇÕÇüÀÇ °ªÀ» ±â¼úÇÒ ¶§¿¡ °³°³ÀÇ Çʵ尪¿¡ µû¿ÈÇ¥¸¦ »ç¿ëÇÕ´Ï´Ù. ¸¸¾à, Çʵ尪ÀÌ º¹ÇÕÇü°ªÀÇ ÆÄ¼¸¦ È¥¶õ½ÃŰ´Â °æ¿ì¿¡´Â, Çʼö ÀÔ´Ï´Ù. ±¸Ã¼ÀûÀ¸·Î´Â, °ýÈ£, ½±Ç¥, µû¿ÈÇ¥, backslash¸¦ Æ÷ÇÔÇÑ ÇʵåÀÇ °æ¿ì, µû¿ÈÇ¥·Î Ç¥½ÃÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. ÀοëºÎÈ£·Î °ýº¹ÇÕÇüÀÇ Çʵ尪³»¿¡ µû¿ÈÇ¥³ª backslash°¡ Á¸ÀçÇÏ´Â °æ¿ì, ±× ¾Õ¿¡ backslash¸¦ ºÙ¿© ÁÖ¼¼¿ä (Å«µû¿ÈÇ¥ Ç¥½Ã°¡ µÈ Çʵ尪 ¾È¿¡ ÀÖ´Â Å«µû¿ÈÇ¥ ½ÖÀº Å« µû¿ÈÇ¥ ¹®ÀÚ ÀÚü¸¦ ³ªÅ¸³À´Ï´Ù. SQL ¹®ÀÚ ½ºÆ®¸µÀÇ ·ê¿¡ ÀÖ´Â ¹Ù¿¡ ÀÇÇϸé ÀÛÀº µû¿ÈÇ¥¿¡¼µµ À¯»çÇÏ°Ô Àû¿ëµË´Ï´Ù´Ù). ±×´ë·Î´Â º¹ÇÕÇü¿¡ ´ëÇÑ ±¸¹®À¸·Î¼ ÇØ¼®µÇ¾î ¹ö¸®´Â, ¸ðµç µ¥ÀÌÅÍ ¹®ÀÚ¸¦ º¸È£ÇÏ´Â ´Ù¸¥ ¹æ¹ýÀ¸·Î¼ backslash¿¡ ÀÇÇÑ À̽ºÄÉÀÌÇÁ¸¦ »ç¿ëÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù.
¿ÏÀüÈ÷ ºñ¾îÀÖ´Â Çʵ尪(½°Ç¥³ª °ýÈ£ÀÇ »çÀÌ¿¡ ÀüÇô ¹®ÀÚ°¡ ¾ø´Â °Í)Àº NULL¸¦ ³ªÅ¸³À´Ï´Ù. NULLÀÌ ¾Æ´Ñ °ø¹®ÀÚ¿À» °ªÀ¸·Î ÇÏ·Á¸é, ""°ú °°ÀÌ ±â¼úÇØ ÁÖ¼¼¿ä.
º¹ÇÕÇüÀÇ Ãâ·Â 󸮿¡¼´Â, ¸¸¾à Çʵ尪ÀÌ °ø¹®ÀÚ¿ÀÇ °æ¿ì³ª °ýÈ£, ½°Ç¥, µû¿ÈÇ¥, backslash, °ø¹é ¹®ÀÚ¸¦ Æ÷ÇÔÇÑ °æ¿ì¿¡´Â, ±× Çʵ尪À» µû¿ÈÇ¥·Î ÇÏ¿© Ãâ·ÂÇÕ´Ï´Ù (°ø¹é ¹®ÀÚ¿¡ ´ëÇÑ ÀÌ Ã³¸®´Â Áß¿äÇÏÁö´Â ¾Ê½À´Ï´Ù¸¸, °¡µ¶¼ºÀ» ³ôÀÔ´Ï´Ù). ÇʵåÄ¡³»¿¡ Æ÷ÇÔµÈ µû¿ÈÇ¥³ª backslash´Â ÀÌÁßÈ µË´Ï´Ù.
Note: SQL ¸í·É¿¡ ±â¼úÇÑ °ÍÀº ¹®ÀÚ¿ »ó¼ö°ª°ú º¹ÇÕÇüÀ¸·Î¼ ÇØ¼®µÊÀ» ±â¾ïÇØ ÁÖ¼¼¿ä. À̰ÍÀº ÇÊ¿äÇÑ backslashÀÇ ¼ö¸¦ ¹è·Î ÇÕ´Ï´Ù(À̽ºÄÉÀÌÇÁ ¹®ÀÚ¿ ±¸¹®À» °¡Á¤). ¿¹¸¦ µé¸é, º¹ÇÕÇüÀÇ °ª¾È¿¡ µû¿ÈÇ¥¿Í backslash¸¦ °¡Áö´Â textÇʵ忡 »ðÀÔÇÏ·Á¸é , ÀÌÇÏ¿Í °°ÀÌ ½á¾ß ÇÕ´Ï´Ù.
INSERT ... VALUES (E'("\\"\\\\")');¹®ÀÚ¿-¸®ÅÍ·² ÇÁ·Î¼¼¼·Î Á¦1 ·¹º§ÀÇ backslash¸¦ ¾ø¾Û´Ï´Ù. º¹ÇÕÇü°ªÀÇ ÆÄ¼¿¡°Ô °Ç³×Áö´Â °ÍÀº ("\"\\")¿Í °°ÀÌ µË´Ï´Ù. ±×¸®°í, textµ¥ÀÌÅÍÇüÀÇ ÀÔ·Â ÇÔ¼ö·Î °Ç³×Áö´Â ij¸¯ÅÍ ¶óÀÎÀº "\ÀÌ µË´Ï´Ù (¸¸¾à, ¿¹¸¦ µé¸é bytea¶ó°í ÇÏ´Â, Ưº°È÷ backslash¸¦ Ãë±ÞÇÏ´Â µ¥ÀÌÅÍÇüÀ» Ãë±ÞÇϰí ÀÖ´Â °æ¿ì, 1°³ÀÇ backslash¸¦ ÀúÀåµÈ º¹ÇÕÇüÀÇ Çʵ忡 ¾ò±â À§Çؼ ¸í·É³»ÀÇ 8°³ÀÇ backslash°¡ ÇÊ¿äÇÏ°Ô µË´Ï´Ù). ´Þ·¯ ÀοëºÎÈ£ ºÙÀ̰í(Section 4.1.2.2¸¦ ÂüÁ¶)¸¦ »ç¿ëÇØ, ÀÌ backslashÀÇ ÀÌÁßȸ¦ ¸·À» ¼ö°¡ ÀÖ½À´Ï´Ù.
Tip: --> The ROW constructor syntax is usually easier to work with than the composite-literal syntax when writing composite values in SQL commands. In ROW, individual field values are written the same way they would be written when not members of a composite. --> Åë»ó, SQL ¸í·É³»¿¡ º¹ÇÕÇüÀÇ °ªÀ» ¾µ ¶§, ROW»ý¼º ±¸¹®ÀÌ º¹ÇÕÇüÀÇ ¸®ÅÍ·² ±¸¹®º¸´Ù ÀÛ¾÷ÀÌ °£´ÜÇÕ´Ï´Ù. ROW¿¡¼´Â, º¹ÇÕÇüÀÇ ¸â¹ö°¡ ¾Æ´Ñ °ªÀ» ¾µ ¶§¿Í °°Àº ¹æ¹ýÀ¸·Î °³°³ÀÇ Çʵ尪À» ¾µ ¼ö°¡ ÀÖ½À´Ï´Ù.