ÆÁ¸ðÀ½

¿À¶óŬ ¿Â¶óÀÎ ½Ç½À

SQL Á» ¹è¿öº¼·Á¸é ÀÌ°Í Àú°Í ±ò¾Æ¾ß ÇÒ °ÍÀÌ ¸¹´Ù. DBMSµµ ¹°·Ð ÇÊ¿äÇÏ°í Äõ¸®Åøµµ µû·Î ¼³Ä¡ÇØ¾ß ÇÑ´Ù. ÀÌ·± ¹ø°Å·Î¿î Áغñ °úÁ¤¾øÀÌ SQL ½Ç½À¸¸ ÇØ º¸°í ½Í´Ù¸é ¿À¶óŬÀÇ ´ÙÀ½ »çÀÌÆ®¿¡¼­ ¿Â¶óÀÎÀ¸·Î ½Ç½ÀÇØ º¼ ¼ö ÀÖ´Ù.

 

https://livesql.oracle.com/

 

¿Â¶óÀο¡¼­ DBMS ¼­ºñ½º¸¦ Àá½Ã ºô·Á ¾²°í Äõ¸®ÅøÀº À¥ ÆäÀÌÁö·Î ´ëüÇÏ´Â Çü½ÄÀÌ´Ù. Á¢¼ÓÇÏ¸é ´ÙÀ½ ÆäÀÌÁö°¡ ³ªÅ¸³­´Ù.

¿©±ê Start Coding Now ¹öÆ°À» ´©¸£¸é ·ÎÄÿ¡ ¾Æ¹«°Íµµ ¼³Ä¡ÇÏÁö ¾Ê¾Æµµ À¥ ºê¶ó¿ìÀú »ó¿¡¼­ Äõ¸® ½Ç½ÀÀ» ÇÒ ¼ö ÀÖ´Ù. °øÂ¥·Î ºô·Á ¾²´Â ¼­ºñ½ºÀ̹ǷΠ´©°¡ ¾²´ÂÁö´Â ¾Ë¾Æ¾ß ÇÏ´Ï ·Î±×ÀÎÀ» ¿ä±¸ÇÑ´Ù.

¿À¶óŬ °èÁ¤ÀÌ ÀÖ´Ù¸é ¹Ù·Î ·Î±×ÀÎÇÏ¸é µÇ°í ¾ø´Ù¸é °èÁ¤À» ¸¸µé¾î¾ß ÇÑ´Ù. ¼­ºñ½º¸¦ ¹ÞÀ¸·Á¸é ½ÅºÐÀ» ¹àÈ÷±âµµ ÇØ¾ß ÇÏÁö¸¸ ½Ç½ÀÁßÀÎ ¼¼¼ÇÀ» ÀúÀåÇÏ·Á¸é ¾ÆÀ̵𰡠ÇÊ¿äÇÏ´Ù. ¾îÂ÷ÇÇ ¿À¶óŬ SQLÀ» ¹è¿ì·Á¸é ȸ¿ø°¡ÀÔÀº ÇʼöÀÌ´Ï °¡ÀÔÇÏÀÚ.

·Î±×ÀÎÇÏ¸é ½Ç½ÀÇÒ ¼ö ÀÖ´Â ÆäÀÌÁö·Î À̵¿ÇÑ´Ù. ÀüüÀûÀÎ ¸ð¾çÀº Äõ¸®Åø°ú À¯»çÇÏ´Ù. ¿öÅ©½ÃÆ®¿¡ Äõ¸®¹®À» ÀÔ·ÂÇÏ°í Run ¹öÆ°À» ´©¸£°Å³ª Ctrl+Enter¸¦ ´©¸£¸é ½ÇÇà °á°ú¸¦ ¾Æ·¡ÂÊ¿¡ º¸¿©ÁØ´Ù.

¿©±â¼­ Å×À̺íÀ» ¸¸µé°í ·¹Äڵ嵵 »ðÀÔÇÑ ÈÄ ÀÌ·± Àú·± Äõ¸®¸¦ ³¯·Á°¡¸ç ½Ç½ÀÇÏ¸é µÈ´Ù. ´Ü ¿©±â¼­ ¸¸µç Å×À̺í°ú ·¹ÄÚµå´Â ¼¼¼ÇÁß¿¡¸¸ À¯È¿Çϸç ÀçÁ¢¼ÓÇÏ¸é ¸®¼ÂµÈ´Ù. ÀúÀåÇØ µÎ·Á¸é Save ¹öÆ°À» ´­·¯ ¼¼¼ÇÀ» ÀúÀåÇØ µÐ´Ù.

°£ÆíÇÏ´Ù´Â ¸é¿¡¼­ ÈǸ¢ÇÑ ½Ç½Àµµ±¸ÀÌÁö¸¸ ¾Æ¹«·¡µµ Á¦¾àÀº ÀÖÀ» ¼ö¹Û¿¡ ¾ø´Ù. ½Ç½À¿ë µµ±¸·Î °èÁ¤ »ý¼ºÀ̳ª ±ÇÇÑ ºÎ¿©, ÃÖÀûÈ­ °°Àº DBMSÀÇ °í±Þ ±â´ÉÀ» ´Ù È°¿ëÇÒ ¼ö´Â ¾ø´Ù. ½Ç½ÀÇÏ´ø ¼¼¼ÇÀÌ ÀÏÁ¤ ±â°£¸¸ ÀúÀåµÇ¸ç °¡²û ÀÏ¿äÀÏÀº °øºÎÇÏÁö ¸»°í ½¬¾î¶ó´Â ¸Þ½ÃÁö°¡ ¶ß±âµµ ÇÑ´Ù.

ÁøÂ¥ DBMS³ª Äõ¸®ÅøÀ» °®Ãß¾î ³õ°í ½Ç½ÀÇÏ´Â °Í¿¡ ºñÇÒ¹Ù´Â ¸øµÇÁö¸¸ °£ÆíÇÏ°Ô ½Ç½ÀÇØ º¼ ¶§´Â ³ª¸§ ¾µ¸¸ÇÏ´Ù. ȸ»ç¿¡¼­ °ø¿ëÀ¸·Î ¾²´Â DB¿¡ Å×À̺íÀ» ÇԺηΠ¸¸µé ¼ö ¾ø°í ÀÚÄ© ½Ç¼öÇÏ¸é »ç°í¸¦ Ä¥ ¼öµµ ÀÖ´Ù. ¿Â¶óÀÎ ½Ç½À ȯ°æÀº ±×·± Á¦¾àÀ̳ª À§ÇèÀÌ ¾ø¾î ¸¶À½´ë·Î ¸¸µé¾î º¼ ¼ö ÀÖ°í ¸ðµç ½Ãµµ¸¦ ´Ù ÇØ º¼ ¼ö ÀÖ´Ù.

NULLÀÇ Á¤·Ä ¼ø¼­

NULLÀº °ªÀÌ ¾Æ´Ï¶ó Ư¼öÇÑ »óÅ¿©¼­ ÀϹÝÀûÀÎ °ª°ú ´ë¼Ò¸¦ ºñ±³ÇÒ ¼ö ¾ø´Ù. NULLÀÌ °ª¿¡ ºñÇØ Å«Áö, ÀÛÀºÁö °áÁ¤ÇÒ ¼ö ¾øÀ¸¸ç Ç¥ÁØ¿¡µµ µüÈ÷ Á¤ÇØÁø ±ÔÁ¤ÀÌ ¾ø´Ù. NULLÀ» ¾î¶»°Ô Á¤ÀÇÇϳª º° ¹®Á¦´Â ¾øÁö¸¸ °á°ú¼ÂÀ» Á¤·ÄÇÏ¿© Ãâ·ÂÇÒ ¶§ ½É¹ÌÀûÀÎ ¹®Á¦°¡ ¹ß»ýÇÑ´Ù. ´ÙÀ½ Äõ¸®¹®À» ½ÇÇàÇØ º¸ÀÚ.

 

SELECT * FROM tStaff ORDER BY score;

 

Á÷¿ø Å×À̺íÀ» ¼ºÃëµµ¿¡ µû¶ó Á¤·ÄÇÏ´Â Äõ¸®¹®ÀÌµÇ scoreÇʵ忡 NULLÀÌ µÎ °³ ÀÖ´Ù. ÀÌ Çʵ尡 ¾îµð¿¡ Ãâ·ÂµÇ´ÂÁö °üÂûÇØ º¸ÀÚ. ¼ºÃëµµ°¡ ÀÖ´Â Á÷¿øÀº ´ç¿¬È÷ ¼ºÃëµµ¼øÀ¸·Î Á¤·ÄÇ쵂 ¼ºÃëµµ°¡ NULLÀÎ Á÷¿øÀÌ ¾îµð¿¡ ³ªÅ¸³ª´Â°¡°¡ ¹®Á¦ÀÌ´Ù.

 

¿ÞÂÊÀº SQL ¼­¹ö, ¿À¸¥ÂÊÀº ¿À¶óŬ¿¡¼­ÀÇ ½ÇÇà °á°úÀÌ´Ù. SQL ¼­¹ö´Â NULLÀ» °¡Àå ÀÛÀº °ªÀ¸·Î Æò°¡ÇÏ¿© Á¦ÀÏ ¸ÕÀú Ãâ·ÂÇϴµ¥ ºñÇØ ¿À¶óŬÀº NULLÀ» °¡Àå Å« °ªÀ¸·Î Æò°¡ÇÏ¿© ¸¶Áö¸·¿¡ Ãâ·ÂÇÑ´Ù. MySQL, MariaDB´Â SQL ¼­¹ö¿Í ¸¶Âù°¡Áö·Î NULLÀ» °¡Àå ÀÛÀº °ªÀ¸·Î Ãë±ÞÇÑ´Ù.

¾î¶²°Ô ¸Â´Ù°í ´ÜÁ¤ÇÒ ¼ö ¾øÁö¸¸ ¾î¶²°Ô ´õ ÀûÇÕÇÑ°¡´Â ÃëÇâÀ̳ª °á°ú¼ÂÀÇ »ç¿ë ¸ñÀû¿¡ µû¶ó °¥¸± ¼ö ÀÖ´Â ¹®Á¦ÀÌ´Ù. ¾Ë ¼öµµ ¾ø´Â °ªÀ» Á¦ÀÏ ¸ÕÀú Ãâ·ÂÇÏ´Â °ÍÀÌ º¸±â ½ÈÀ» ¼öµµ ÀÖ°í Á¦ÀÏ Å« °ªÀ¸·Î Ãë±ÞÇÏ´Â °Íµµ ¹º°¡ ¾î»öÇÏ´Ù. ORDER BYÀÇ µÚ¿¡ desc¸¦ ºÙÀÌ¸é ¹Ý´ëÀÇ °á°ú°¡ ³ª¿ÀÁö¸¸ ÀÌ °æ¿ì °ªÀÌ ÀÖ´Â ·¹ÄÚµåÀÇ ¼ø¼­µµ ¿µÇâÀ» ¹Þ¾Æ NULL°ªÀÇ ¼ø¼­¸¸ Á¶Á¤ÇÏ´Â ¸í·ÉÀº ¾Æ´Ï´Ù.

±×·¡¼­ NULLÀ» ¾î´À À§Ä¡¿¡ Ãâ·ÂÇÒ °ÍÀÌÁö º°µµ·Î ÁöÁ¤ÇØ¾ß ÇÑ´Ù. NULL°ªÀÇ Á¤·Ä ¼ø¼­¸¦ ÁöÁ¤Çϴ ǥÁØ ¹®¹ýÀº ¾ø°í DBMS¸¶´Ù °íÀ¯ÇÑ ¿É¼ÇÀ» Á¦°øÇÑ´Ù. ¿À¶óŬÀÌ °¡Àå ±ò²ûÇÏ´Ù.

 

SELECT * FROM tStaff ORDER BY score NULLS first ¶Ç´Â last;

 

ORDER BY µÚ¿¡ NULLS first ¶Ç´Â NULLS last ±¸¹®À¸·Î NULLÀÇ À§Ä¡¸¦ Á÷Á¢ ÁöÁ¤ÇÑ´Ù. µðÆúÆ®´Â lastÀ̸ç ÇÊ¿ä½Ã first·Î ¹Ù²Ü ¼ö ÀÖ´Ù. ´ÙÀ½ ¸í·ÉÀ» ½ÇÇàÇØ º¸ÀÚ.

 

SELECT * FROM tStaff ORDER BY score NULLS first;

 

NULL first°¡ ¾Æ´Ï¶ó NULLS firstÀÓÀ» À¯ÀÇÇÑ´Ù. ÀÌ·¸°Ô Çϸé MSSQLÀ̳ª MariaDB¿Í °°ÀÌ NULLÀ» ¸ñ·ÏÀÇ Á¦ÀÏ Ã³À½¿¡ Ãâ·ÂÇÑ´Ù. ¸¶¸®¾Æ´Â ´ÙÀ½ ±¸¹®À» »ç¿ëÇÑ´Ù.

 

SELECT * FROM tStaff ORDER BY score IS NULL ASC, score;

 

NULLÀÎ »óÅ¿¡ ´ëÇØ ¿À¸§Â÷¼ø Á¤·ÄÇϸé NULLÀÌ Á¦ÀÏ ¾Æ·¡·Î À̵¿ÇÏ¸ç ³»¸²Â÷¼ø Á¤·ÄÇϸé Á¦ÀÏ À§·Î ¿Ã¶ó¿Â´Ù. ±×¸®°í 2Â÷ Á¤·Ä ±âÁØÀ¸·Î score¸¦ ÁöÁ¤Çϸé NULL ¾Æ´Ñ Çà³¢¸® ¼ºÀû¼øÀ¸·Î Á¤·ÄµÈ´Ù.

NULL¿©ºÎ·Î 1Â÷ Á¤·Ä, score·Î 2Â÷ Á¤·ÄÇÏ´Â °ÍÀÌ´Ù. ÆòÀÌÇÑ °Å °°Áö¸¸ ÀÌ ±¸¹®Àº ¸¶¸®¾Æ¿¡¼­¸¸ µÇ¸ç MSSQLÀ̳ª ¿À¶óŬÀº Áö¿øÇÏÁö ¾Ê´Â´Ù. MSSQLÀº CASE¹®À¸·Î NULL ¿©ºÎ¸¦ Æò°¡ÇÏ¿© 1Â÷ Á¤·ÄÇÏ°í score·Î 2Â÷ Á¤·ÄÇÑ´Ù.

 

SELECT * FROM tStaff ORDER BY CASE WHEN score IS NULL THEN 1 ELSE 0 END, score;

 

NULL¿©ºÎ¿¡ µû¶ó 1 ¶Ç´Â 0ÀÇ °ªÀ» ¸¸µç ÈÄ ÀÌ °ªÀ» 1Â÷ Á¤·Ä ±âÁØÀ¸·Î »ç¿ëÇÏ°í NULLÀÌ ¾Æ´Ñ °æ¿ì´Â ¼ºÀû¼øÀ¸·Î Á¤·ÄÇÑ´Ù. ¼¼ DBMS ¸ðµÎ ¾î¶² ¹æ¹ýÀ» ¾²µç°£¿¡ ¿øÇÏ´Â ¼ø¼­´ë·Î Ãâ·ÂÇÒ ¼ö´Â ÀÖ´Ù.

NULLÀ» Á¦ÀÏ ¾ÕÀ̳ª µÚ°¡ ¾Æ´Ñ Áß°£¿¡ µ¹ ¼öµµ ÀÖ´Ù. À̶§´Â NULLÀ» ƯÁ¤°ªÀ¸·Î °¡Á¤ÇÏ´Â NVL, ISNULL ÇÔ¼ö¸¦ »ç¿ëÇÑ´Ù. NULLÀ» ÃæºÐÈ÷ Å« °ªÀ̳ª ÃæºÐÈ÷ ÀÛÀº °ªÀ¸·Î ġȯÇÏ¸é ¿øÇÏ´Â ÀÚ¸®¿¡ Ãâ·ÂÇÒ ¼ö µÈ´Ù. 

 

¿À¶óŬ : SELECT * FROM tStaff ORDER BY NVL(score, -1);

MSSQL : SELECT * FROM tStaff ORDER BY ISNULL(score, 101);

 

»ç½Ç ÀÌ °æ¿ì´Â Á¡¼öÀÇ ¹üÀ§°¡ 0~100±îÁöÀÓÀ» ¸íÈ®È÷ ¾Ë ¼ö Àֱ⠶§¹®¿¡ ¾µ ¼ö ÀÖ´Â ¹æ¹ýÀÌ´Ù. ¹üÀ§ ¹Ù±ùÀÇ °ªÀ» ÁöÁ¤ÇÔÀ¸·Î½á °­Á¦·Î Á¦ÀÏ Ã³À½À̳ª ¾Õ¿¡ ¹èÄ¡ÇÑ´Ù. º° ½Ç¿ë¼ºÀº ¾øÁö¸¸ ISNULL(score, 50)À̳ª NVL(score, 50)À¸·Î ÁöÁ¤Çϸé NULLÀ» Áß°£Âë¿¡ Ç¥½ÃÇÒ ¼öµµ ÀÖ´Ù. ¸¶¸®¾Æ´Â ÀÌ»óÇÏ°Ôµµ NULLIF(score, 101)·Î Çصµ ¸»À» µèÁö ¾Ê´Â´Ù.

GREATEST

µÑ Áß Å« °ªÀ» ã´Â´Ù. ¿¹¸¦ µé¾î Çö±Ý°¡, Ä«µå°¡ Áß ºñ½Ñ °¡°ÝÀ» ã±â. Å×ÀÌºí µû·Î ¸¸µé±â ±ÍÂúÀ¸´Ï tCityÀÇ popu, area·Î ºñ±³ÇØ º¸ÀÚ. ¼³¸¶ ´ÙÀ½°ú °°ÀÌ »ý°¢ÇÏ´Â »ç¶÷Àº ¾ø±â¸¦

 

SELECT name, popu, area, MAX(popu, area) value FROM tCity;

 

ÀÏ¹Ý ÇÁ·Î±×·¡¹Ö ¾ð¾î¿¡¼­ÀÇ MAX¿Í´Â ´Ù¸£´Ù. MAX´Â Á¾À¸·Î ·¹ÄÚµå »çÀÌÀÇ ÇÑ ÇʵåÁß Á¦ÀÏ Å« °ªÀ» ã´Â Áý°è ÇÔ¼öÀÌ´Ù. °°Àº ·¹ÄÚµåÀÇ ÇʵåÁß Å« °ªÀ» ã´Â ÇÔ¼ö´Â GREATESTÀÌ´Ù. ¿©·¯ °³ÀÇ °ªÀ» ÁÖ¸é ±× Áß Á¦ÀÏ Å« °ªÀ» ã¾Æ ¸®ÅÏÇÑ´Ù.

 

SELECT name, popu, area, GREATEST(popu, area) value FROM tCity;

 

ÀÛÀº°ªÀ» ã´Â ÇÔ¼ö´Â LEASTÀÌ´Ù. ¿À¶óŬ, ¸¶¸®¾Æ¸¸ µÊ. MSSQLÀº CASE »ç¿ë

 

SELECT name, popu, area,

      CASE

               WHEN popu > area THEN popu

               ELSE area

      END value

FROM tCity;

 

MSSQL¿¡ ÀÌ°Ô ¿Ö ¾ø´ÂÁö Âü ÀǾƽº·´´Ù. ÇÔ¼ö·Î ¸¸µé¾î µÎ°í ¾µ ¼ö´Â ÀÖ´Ù. ±×·¯³ª ŸÀÔº°·Î µû·Î ¸¸µé°Å³ª ¸ðµç ŸÀÔÀ» Æ÷°ýÇÏ´Â ¹ü¿ë ŸÀÔÀ» »ç¿ëÇØ¾ß ÇÑ´Ù. ÇÔ¼ö°¡ ¾ø¾î ºÒÆíÇÏ´Ù.

DISTINCT¿Í GROUP BY

ÀÌ µÎ ¸í·ÉÀº ºñ½ÁÇÑ °ªÀ» ÇÕÃÄ Áߺ¹À» Á¦°ÅÇÑ´Ù´Â ¸é¿¡¼­ ±â´ÉÀÌ °ÅÀÇ ºñ½ÁÇÏ´Ù. ½ÇÁ¦·Î ³»ºÎ ¾Ë°í¸®Áòµµ ºñ½ÁÇؼ­ ¾î´À Á¤µµ ¼­·Î ´ëüµµ °¡´ÉÇÏ´Ù. ºÎ¼­ÀÇ Á¾·ù¸¦ ±¸ÇÏ°í ½Í´Ù¸é ´ÙÀ½ µÎ ¸í·É Áß Çϳª¸¦ »ç¿ëÇÑ´Ù.

 

SELECT DISTINCT depart FROM tStaff;

SELECT depart FROM tStaff GROUP BY depart;

 

µÑ ´Ù ¼¼ °³ÀÇ ºÎ¼­ À̸§À» Ãâ·ÂÇÑ´Ù. DISTINCT´Â Ãâ·ÂÇÒ ¶§ Áߺ¹À» Á¦°ÅÇÏ°í GROUP BY´Â ±×·ìÀ» ³ª´­ ¶§ Áߺ¹À» Á¦°ÅÇÑ ÈÄ Ãß·ÁÁø ºÎ¼­¸íÀ» Ãâ·ÂÇÑ´Ù. ºÎ¼­¸íÀ» Çѹø¸¸ ¾²´Â DISTINCT°¡ ±¸¹®ÀÌ Á» ´õ ´Ü¼øÇÏ´Ù. ±×·ìÇÎ ±âÁØÀÌ 2°³ ÀÌ»óÀ̾ È¿°ú °°´Ù.

 

SELECT DISTINCT depart, gender FROM tStaff;

SELECT depart, gender FROM tStaff GROUP BY depart, gender;

 

±âÁØÀÌ ´Ã¾î³ª¸é DISTINCTÀÇ ±¸¹®ÀÌ ´õ ª°Ô º¸ÀδÙ. µÑ ´Ù ±×·ìÇÎ ±âÁØÀÇ Á¶ÇÕÀ» ±¸ÇÑ ÈÄ Á¶ÇÕ³»ÀÇ Áߺ¹À» Á¦°ÅÇÑ´Ù. ºÎ¼­º°, ¼ºº°·Î ±×·ìÇÎÇÏ¿© 5°³ÀÇ °á°ú¼ÂÀ» º¸¿© ÁØ´Ù. ¿ø·¡ 6°³¿©¾ß ÇÏÁö¸¸ Ãѹ«ºÎ¿¡ ¿©Á÷¿øÀÌ ¾ø¾î 5°³ÀÇ ±×·ì¸¸ ³ª¿Â´Ù. µÎ ¸í·ÉÀº ³»ºÎ ¾Ë°í¸®ÁòÀÌ °°¾Æ ¿ëµµ»ó ´ëü °¡´ÉÇÏ´Ù.

¹°·Ð ¾à°£ÀÇ Â÷ÀÌÁ¡µµ Àִµ¥ Áߺ¹À» Á¦°ÅÇÑ ÈÄ Á¤·Ä±îÁö ¼öÇàÇÏ´ÂÁö°¡ ´Ù¸£´Ù. ±×·¯³ª Á¤·Ä ¹æ½ÄÀº µÎ ±¸¹®ÀÇ Â÷À̺¸´Ù DBMS¸¶´Ù ´Ù¸¥ °æ¿ì°¡ ´õ ¸¹À¸¸ç ½ÉÁö¾î °°Àº DBMSµµ ¹öÀüº°·Î Â÷ÀÌ°¡ ÀÖ´Ù. Á¶»çÇØ º¸¸é ´ÙÀ½°ú °°´Ù.

 

¿À¶óŬ : µÑ ´Ù Á¤·ÄÇÏÁö ¾Ê´Â´Ù. µÎ ±¸¹®ÀÇ ¼ø¼­´Â °°´Ù. 10g ÀÌÀü¿¡´Â Á¤·ÄÀ» Çß¾ú´Ù.

MSSQL : µÑ ´Ù Á¤·ÄÇÑ´Ù. µÎ ±¸¹®ÀÇ ¼ø¼­´Â °°´Ù.

¸¶¸®¾Æ : DISTINCT´Â Á¤·ÄÇÏÁö ¾Ê°í GROUP BY´Â Á¤·ÄÇÑ´Ù.

 

°á°ú¼ÂÀ» Á¤·ÄÇÑ´Ù°í ¼­ºñ½º°¡ ÁÁ´Ù°í Æò°¡ÇÒ ¼ö´Â ¾øÀ¸¸ç ¾µµ¥ ¾ø´Â ÁþÀ» ÇÏ¿© ½Ã°£À» ³¶ºñÇÏ´Â °ÍÀÌ´Ù. ¾îÂ÷ÇÇ Ãâ·Â ¼ø¼­´Â º° Àǹ̰¡ ¾ø°í ORDER BY·Î ¿øÇÏ´Â Á¤·ÄÀ» ¼öÇàÇÒ ¼ö ÀÖ¾î »ç½Ç Áß¿äÇÑ Â÷ÀÌÁ¡Àº ¾Æ´Ï´Ù.

¾Ë°í¸®Áò ±¸Çö ¹æ½Ä¿¡ µû¶ó ¼º´É¿¡µµ ¾à°£ÀÇ Â÷ÀÌ°¡ ÀÖ´Ù. DISTINCT°¡ Àӽà Å×À̺íÀ» »ç¿ëÇÏ¿© ´À¸° ¸éÀÌ ÀÖ°í Á¤·Ä »ý·«À¸·Î ´õ ºü¸¥¸éµµ ÀÖ¾î °á±¹ Å« Â÷ÀÌ´Â ¾ø´Ù. ¼º´É Â÷À̵µ DBMS¸¶´Ù ´Þ¶ó Àý´ëÀûÀÌÁö´Â ¾Ê´Ù. µÎ ±¸¹®ÀÇ °¡Àå Å« Â÷ÀÌÁ¡Àº »ç¿ëóÀÌ´Ù. Áý°è ÇÔ¼ö¿Í ÇÔ²² µÎ ±¸¹®À» »ç¿ëÇØ º¸ÀÚ.

 

SELECT COUNT(DISTINCT depart) FROM tStaff;

SELECT COUNT(depart) FROM tStaff GROUP BY depart;

 

À§ÂÊ ¸í·ÉÀº ºÎ¼­ÀÇ °³¼ö¸¦ Á¶»çÇϸç 3ÀÌ Ãâ·ÂµÈ´Ù. ¾Æ·¡ÂÊ ¸í·ÉÀº ºÎ¼­º°·Î ³ª´« ÈÄ ºÎ¼­¿¡ ¼ÓÇÑ »ç¶÷ÀÇ °³¼ö¸¦ Á¶»çÇÑ´Ù. GROUP BY·Î Á¶»çÇؼ­´Â ºÎ¼­ °³¼ö¸¦ Á¶»çÇϱ⠾î·Æ´Ù. Á¤ ÇÏ·Á¸é ¼­ºê Äõ¸®·Î °¨½Ñ ÈÄ ·¹ÄÚµå °³¼ö¸¦ ¼¼¾î¾ß ÇÑ´Ù.

 

SELECT COUNT(*) FROM (SELECT depart FROM tStaff GROUP BY depart) A;

 

º¸´Ù½ÃÇÇ Áý°è ÇÔ¼ö¿Í »ç¿ëÇÒ ¶§´Â DISTINCT°¡ ´õ °£ÆíÇÏ´Ù. GROUP BY´Â ÇÊµå ¸®½ºÆ®¿¡ Áý°è ÇÔ¼ö¸¦ ¾µ ¼ö ÀÖ´Ù´Â ÀåÁ¡ÀÌ ÀÖ´Ù. ´ÙÀ½ ¸í·ÉÀº ºÎ¼­º° ¿ù±Þ ÃÑÇÕÀ» ±¸ÇÑ´Ù.

 

SELECT depart, SUM(salary) FROM tStaff GROUP BY depart;

 

ºÎ¼­º°·Î ±×·ìÇÎÇÏ°í °¢ ±×·ì¿¡ ´ëÇØ Áý°è ÇÔ¼ö¸¦ Àû¿ëÇÏ¿© ÇÑ °á°ú¼Â¿¡ ±ò²ûÇÏ°í º¸°í¼­¸¦ Ãâ·ÂÇÑ´Ù. DISTINCT·Î´Â ÀÌ·± °á°ú¼ÂÀ» ¸¸µé±â ½±Áö ¾Ê´Ù.

Áߺ¹À» Á¦°ÅÇÑ °á°ú¸¸ ±¸ÇÒ ¶§´Â DISTINCT°¡ °£ÆíÇÏ´Ù. ±×·¯³ª ±×·ìÇÎ ÇÑ ÈÄ Áý°è³ª ÇÊÅ͸µ±îÁö ÇØ¾ß ÇÑ´Ù¸é À̶§´Â GROUP BY¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù. GROUP BY´Â HAVING Àý·Î Áý°èÈÄÀÇ °á°ú±îÁö ÇÊÅ͸µÇÒ ¼ö ÀÖ°í ROLL UP, CUBE·Î ¼Ò°è±îÁö »ÌÀ» ¼ö ÀÖ¾î ±â´ÉÀÌ ´õ ¸¹´Ù.

rownumÀÇ ÇÑ°è

rownum ÀÇ»çÄ÷³Àº ½ÇÁ¦ Å×ÀÌºí¿¡ ÀÖ´Â Çʵ尡 ¾Æ´Ï¶ó Äõ¸®¹® ½ÇÇàÁß¿¡ ºÙÀÌ´Â ¼ø¹øÀÌ´Ù. ÀÌ ¼ø¹øÀÌ ¸Å°ÜÁö´Â Á¤È®ÇÑ ½ÃÁ¡Àº WHERE ÀýÀÇ Á¶°ÇÀ» Àû¿ëÇÏ¿© °á°ú¼ÂÀ» ¸¸µé ¶§ÀÌ´Ù. ´ÙÀ½ Äõ¸®¹®À¸·Î À̸¦ È®ÀÎÇÒ ¼ö ÀÖ´Ù.

 

SELECT rownum, tCity.* FROM tCity WHERE metro = 'n';

SELECT rownum, tCity.* FROM tCity WHERE metro = 'n' ORDER BY area DESC;

 

±¤¿ª½Ã°¡ ¾Æ´Ñ µµ½Ã ¸ñ·ÏÀ» Á¶»çÇϸç rownumÀ» °°ÀÌ Ãâ·ÂÇß´Ù. ÀÌ Á¶°Ç¿¡ ¸Â´Â µµ½Ã ¸ñ·Ï¿¡ ¼ø¹øÀÌ Â÷·Ê´ë·Î ¸Å°ÜÁø´Ù. ¿©±â¿¡ ¸éÀû ³»¸²Â÷¼øÀ¸·Î Á¤·ÄÇÏ´Â ±¸¹®À» ³Ö¾î º¸¸é °á°ú´Â ´ÙÀ½°ú °°´Ù.

 

WHEREÀý¸¸ Àû¿ëÇÒ ¶§´Â rownumÀÌ ¼ø¼­´ë·Î ¸Å°ÜÁöÁö¸¸ ¿©±â¿¡ ORDER BY¸¦ Àû¿ëÇϸé rownum±îÁöµµ °°ÀÌ Á¤·ÄµÇ¾î ¹ö¸°´Ù. Á¶°ÇÀ» Àû¿ëÇÏ¿© ÇÑÇà ÇÑÇàÀ» ¸¸µé ¶§¸¶´Ù ¼ø¹øÀ» ¸Å±â´Â ½ÄÀ̸ç Á¶°ÇÀ» ´Ù Àû¿ëÇÑ ÈÄ¿¡´Â ÀÌ¹Ì ¼ø¹øÀÌ ´Ù ºÎ¿©µÇ¾ú´Ù. ÀÌ »óÅ¿¡¼­ Á¤·ÄÀ» ÇÏ´Ï ¼ø¹øµµ Á¤·Ä ´ë»óÀÌ µÇ¾î ¹ö¸°´Ù. ±×·¡¼­ rownumÀº Á¤·ÄÇÑ ÈÄ¿¡´Â ¾Æ¹«Â¦¿¡µµ ¾µ¸ð ¾ø´Â °ªÀÌ´Ù.

¿À¶óŬÀÇ Äõ¸® ¿£ÁøÀº WHERE ÀýÀÇ Á¶°ÇÀ» ¸¸Á·ÇÏ´Â ·¹Äڵ带 ãÀ» ¶§¸¶´Ù 1ºÎÅÍ ¼ø¼­´ë·Î Áõ°¡ÇÏ´Â ¼ø¹øÀ» ¸Å±ä´Ù. ¸¸¾à ù¹ø° Çà Çϳª¸¸ º¸°í ½Í´Ù¸é rownum = 1 Á¶°ÇÀ» ºÙÀÌ¸é µÈ´Ù.

 

SELECT * FROM tCity WHERE rownum = 1;

 

ÀÌ·¯¸é Á¦ÀÏ Ã¹ ÇàÀÎ ¼­¿ïÀÌ Ãâ·ÂµÈ´Ù. ¼­¿ï ´ÙÀ½ÀÇ ºÎ»êÀº Çà¹øÈ£°¡ 2¹øÀ̹ǷΠÁ¦¿ÜµÇ°í ±× ÈÄÀÇ Ç൵ ´Ù Á¦¿ÜµÇ¾î °á±¹ ¼­¿ï¸¸ Á¶°ÇÀ» ¸¸Á·ÇÑ´Ù. ±×·¸´Ù¸é µÎ ¹ø° Çุ º¸°í ½ÍÀ» ¶§´Â ´ÙÀ½°ú °°ÀÌ ÇÏ¸é µÉ °Å °°´Ù.

 

SELECT * FROM tCity WHERE rownum = 2;

 

¿¹»ó°ú´Â ´Þ¸® ÀÌ ¹®ÀåÀº ¾Æ¹« °Íµµ Ãâ·ÂÇÏÁö ¾Ê´Â´Ù. ù ÇàÀÎ ¼­¿ï¿¡ Çà¹øÈ£ 1À» ºÙÀÌ°í º¸´Ï 2ÇàÀÌ ¾Æ´Ï¾î¼­ Á¶°ÇÀ» ¸¸Á·ÇÏÁö ¾Ê´Â´Ù. ±×·¡¼­ ¼­¿ïÀº °á°ú¼Â¿¡¼­ Á¦¿ÜµÈ´Ù. ´ÙÀ½ÇàÀÎ ºÎ»êÀ» ÀÐÀº ÈÄ ¶Ç Çà¹øÈ£ 1À» ºÙÀδÙ. ÀÌ Ç൵ 2¹øÀº ¾Æ´Ï¹Ç·Î Á¦¿ÜµÈ´Ù. °á±¹ 1¹øÀ» ¸ÕÀú ¸¸Á·ÇÏ´Â ·¹Äڵ尡 ¾øÀ¸´Ï 2¹ø ·¹ÄÚµå´Â ¶§·Á Á׿©µµ ³ª¿Ã ¼ö°¡ ¾ø´Ù.

ÀÌ·± ½ÄÀÌ´Ù º¸´Ï rownumÀº ±×º¸´Ù ÀÛÀº ·¹Äڵ带 Á¦ÇÑÇÏ´Â ¿ëµµ·Î´Â ¾µ ¼ö ÀÖÁö¸¸ ±× ÀÌÈÄÀÇ ·¹Äڵ带 Á¦ÇÑÇÏ´Â ¿ëµµ·Î´Â ¾µ ¼ö ¾ø´Ù. rownum°ú ÇÔ²² ¾µ ¼ö ÀÖ´Â ¿¬»êÀÚ´Â <=, < »ÓÀ̸ç Ư¼öÇÏ°Ô = 1¸¸ °¡´ÉÇÏ´Ù. 4¹ø ÀÌÈÄÀÇ Çุ Ãâ·ÂÇÏ´Â ´ÙÀ½ Á¶°Ç¹®À» ÀÛ¼ºÇØ º¸ÀÚ.

 

SELECT * FROM tCity WHERE rownum >= 4;

 

ÀÌ ¹®Àå ¿ª½Ã ¾Æ¹« °Íµµ Ãâ·ÂÇÏÁö ¾Ê´Â´Ù. ÀÌÀ¯´Â WHERE rownum = 2¿¡ ÇØ´çÇÏ´Â ÇàÀÌ Çϳªµµ ¾ø´Â °Í°ú °°´Ù. 2¹ø Ç൵ ¸ø ã´Âµ¥ 4¹ø ÀÌ»óÀÇ ÇàÀ» ¾î¶»°Ô ã°Ú´Â°¡? ´õ Å« ÂÊÀ» ãÁö ¸øÇÏ´Ï BETWEEN AND Á¶°ÇÀ¸·Î ¹üÀ§¸¦ Á¦ÇÑÇÏ´Â °Íµµ ´ç¿¬È÷ ¾ÈµÈ´Ù.

ÀÌ ¹®ÀåÀÌ µ¿ÀÛÇÏÁö ¾Ê´Â ÀÌÀ¯´Â ºÐ¸í ÀÖÁö¸¸ Ãʺ¸ÀÚ°¡ º¸±â¿¡´Â Á÷°üÀûÀÌÁö ¸øÇÏ´Ù. °Ô´Ù°¡ ³í¸®ÀûÀ¸·Î Ʋ¸° ¹®ÀåÀº ¾Æ´Ï¾î¼­ ±×³É ħ¹¬ÇÒ »ÓÀÌ´Ù. °á°ú¼ÂÀÌ ³ª¿ÀÁö ¾ÊÀ» »Ó ¿Ö ¾ÈµÈ´Ù´Â ¿¡·¯ ¸Þ½ÃÁöµµ ¾ø¾î ³»ºÎ ±¸Á¶¸¦ ¸ð¸£¸é ´õ Çò°¥¸®´Â ±¸¹®ÀÌ´Ù.

¹®Á¦ÀÇ ±Ùº» ¿øÀÎÀº Çà¼ö¸¦ Á¦ÇÑÇÏ´Â ¹®¹ýÀÌ Á¶°ÇÀ» Á¡°ËÇÏ´Â ±¸¹®À¸·Î µÇ¾î ÀÖ´Ù´Â Á¡ÀÌ´Ù. ÀÌ µÑÀº º°°³ÀÇ µ¿ÀÛÀ̾î¾ß Çϴµ¥ Çà¼ö¸¦ ºÙ¿© °¡¸ç Á¶°ÇÀ» Á¡°ËÇÏ´Ï »ó½Ä°ú´Â ´Ù¸£°Ô µ¿ÀÛÇÑ´Ù. °á±¹ ¿À¶óŬÀÇ rownum ÀÇ»ç Ä÷³Àº ¾ÕÂʺÎÅÍ n°³¸¦ ãÀ» ¶§¸¸ Á¦ÇÑÀûÀ¸·Î ¾µ ¼ö ÀÖ´Ù.

LISTAGG ÇÔ¼ö

LISTAGG ÇÔ¼ö´Â ¿©·¯ ÇàÀÇ °ªÀ» Çϳª·Î ÇÕÃÄ ±ä ¹®ÀÚ¿­ Çʵå·Î »ý¼ºÇÑ´Ù. ¿À¶óŬ 9¿¡¼­´Â XMLAGG, 10¿¡¼­´Â WM_CONCAT ÇÔ¼ö¸¦ »ç¿ëÇßÀ¸³ª 11g R2 ºÎÅÍ´Â LISTAGG¸¦ ÁÖ·Î »ç¿ëÇÑ´Ù. ±âº» Çü½ÄÀº ´ÙÀ½°ú °°´Ù.

 

LISTAGG(Ä÷³, ±¸ºÐÀÚ) WITHIN GROUP(ORDER BY Á¤·ÄÇʵå)

 

±¸ºÐÀÚ ÀÌÇÏ´Â »ý·« °¡´ÉÇÏ´Ù. ´ÙÀ½ ¸í·ÉÀº tCityÀÇ µµ½Ã¸íÀ» ÄÞ¸¶·Î ±¸ºÐÇÏ¿© ³ª¿­ÇÑ´Ù. nameÀÌ CHAR ŸÀÔÀ̾ µÚÂÊ °ø¹éÀ» Á¦°ÅÇϱâ À§ÇØ TRIM ÇÔ¼ö·Î °¨½Õ´Âµ¥ VARCHAR ŸÀÔÀ̶ó¸é ±×·² ÇÊ¿ä°¡ ¾ø´Ù.

 

SELECT LISTAGG(TRIM(name), ', ') FROM tCity;

°¢ µµ½Ã´Â ÄÞ¸¶¿Í °ø¹é Çϳª·Î ±¸ºÐÇÑ´Ù. °¡Àå ÀϹÝÀûÀÎ ¸ñ·Ï ÇüÅÂÀÌ¸ç °ø¹éÀ» »©°í ÄÞ¸¶¸¸ ³Ö¾îµµ µÇÁö¸¸ ³Ê¹« µü ºÙ¾î ÀÖÀ¸¸é ´ä´äÇØ º¸ÀδÙ. ±¸ºÐÀÚ¸¦ »ý·«Çϸé NULLÀÌ Àû¿ëµÇ¾î ¸ðµç µµ½Ã¸íÀ» ºÙ¿© Ãâ·ÂÇÑ´Ù. ÀÓÀÇÀÇ ¹®ÀÚ¿­À» ±¸ºÐÀÚ·Î »ç¿ëÇÒ ¼ö ÀÖ´Ù.

 

SELECT LISTAGG(TRIM(name), ' -> ') FROM tCity;

SELECT LISTAGG(TRIM(name), ' Âï°í ') FROM tCity;

 

LISTAGG´Â ´ë»ó Ä÷³À» ¿À¸§Â÷¼øÀ¸·Î Á¤·ÄÇÏ¿© ÇÕÄ£´Ù. ±×·¡¼­ ºÎ»êÀÌ Á¦ÀÏ ¸ÕÀú ¿À°í ȫõÀÌ °¡Àå ³ªÁß¿¡ ¿Â´Ù. ¸ñ·Ï ³»ÀÇ ¼ø¼­¸¦ Á¶Á¤ÇÏ·Á¸é Á¤·ÄÇØ¾ß Çϴµ¥ À̸§ ¿ª¼øÀ¸·Î Ãâ·ÂÇØ º¸ÀÚ. Á¤·Ä ¸í·ÉÀº ´ç±Ù ORDER BYÀýÀÌÁö¸¸ ¿¹»ó ¿Ü·Î ´ÙÀ½ ¸í·ÉÀº È¿°ú°¡ ¾ø´Ù.

 

SELECT LISTAGG(TRIM(name), ', ') FROM tCity ORDER BY name DESC;

 

¿¡·¯´Â ¹ß»ýÇÏÁö ¾ÊÁö¸¸ ORDER BY¸¦ ºÙÀ̳ª ¸¶³ª ¸ñ·ÏÀº ¿©ÀüÈ÷ À̸§¼øÀÌ´Ù. ¿Ö³ÄÇϸé LISTAGG´Â ¿¬»êÀÚ¿©¼­ ORDER BY º¸´Ù ¿ì¼±¼øÀ§°¡ ³ô±â ¶§¹®ÀÌ´Ù. LISTAGG´Â ¸ðµÎ ÇÕÃÄ 1ÇàÀ» »ý¼ºÇϴµ¥ ±× 1ÇàÀÇ Ãâ·Â ¼ø¼­¸¦ ÁöÁ¤ÇØ ºÃÀÚ ¾Æ¹« Àǹ̵µ ¾ø°í È¿°úµµ ¾ø´Ù.

¸ñ·ÏÀ» ¸¸µç ÈÄ ³»ºÎÀÇ Ç׸ñÀ» Á¤·ÄÇÒ ¼ö´Â ¾ø´Â ³ë¸©ÀÌ°í ¸ñ·ÏÀ» ¸¸µé ¶§ Á¤·ÄÇØ¾ß ÇÑ´Ù. ±×·¡¼­ LISTAGG µÚ¿¡ º°µµÀÇ Á¤·Ä ±¸¹®ÀÌ µû·Î ÀÖ´Ù. WITHIN GROUP ¾È¿¡ ORDER BY ÀýÀ» ³Ö¾î Á¤·Ä ÈÄ ÇÕÄ£´Ù. ´ÙÀ½ ¸í·ÉÀº À̸§ ³»¸²Â÷¼øÀ¸·Î ¸ñ·ÏÀ» »ý¼ºÇÑ´Ù.

 

SELECT LISTAGG(TRIM(name), ', ') WITHIN GROUP (ORDER BY name DESC) FROM tCity;

¹°·Ð ²À À̸§¼øÀ¸·Î¸¸ Á¤·ÄÇØ¾ß ÇÏ´Â °ÍÀº ¾Æ´Ï°í ÀÓÀÇÀÇ Ä÷³À» ±âÁØÀ¸·Î Á¤·ÄÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½ ¸í·ÉÀº Àα¸¼øÀ¸·Î, Å×À̺íÀÇ ¿ø·¡ ¼ø¼­´ë·Î Á¤·ÄÇÑ´Ù. rowid ÀÇ»ç Ä÷³À¸·Î Á¤·ÄÇϸé ÀÔ·ÂÇÑ ¼ø¼­´ë·Î ¸ñ·ÏÀ» ÀÛ¼ºÇϴµ¥ ÀÌ´Â °ð Á¤·ÄÇÏÁö ¾Ê´Â °Í°ú °°´Ù.

 

SELECT LISTAGG(TRIM(name), ', ') WITHIN GROUP (ORDER BY popu) FROM tCity;

SELECT LISTAGG(TRIM(name), ', ') WITHIN GROUP (ORDER BY rowid) FROM tCity;

 

º°´Ù¸¥ ÁöÁ¤ÀÌ ¾øÀ¸¸é Å×ÀÌºí³»ÀÇ ¸ðµç ÇàÀÌ º´ÇÕ ´ë»óÀÌ´Ù. tCityÀÇ ¸ðµç µµ½Ã°¡ ´Ù ¸ñ·Ï¿¡ Æ÷ÇԵǾú´Ù. ÀϺΠÇุ º´ÇÕÇÏ·Á¸é Á¶°ÇÀ» ÁöÁ¤Çϴµ¥ À̶§´Â ¹°·Ð WHERE ÀýÀ» »ç¿ëÇÑ´Ù. ´ÙÀ½ ¸í·ÉÀº ±¤¿ª½Ã´Â Á¦¿ÜÇÏ°í ³ª¿­ÇÑ´Ù. ºÎ»ê°ú ¼­¿ïÀÌ Á¦¿ÜµÈ´Ù.

 

SELECT LISTAGG(TRIM(name), ', ') FROM tCity WHERE METRO = 'n';

Á¤·Ä°ú Á¶°ÇÀ» µ¿½Ã¿¡ ÁöÁ¤ÇÏ´Â °Íµµ ¹°·Ð °¡´ÉÇÏ´Ù. WHERE´Â µÚ¿¡ ºÙ°í ORDER BY´Â WITHIN GROUP ¾È¿¡¼­ ÁöÁ¤ÇÑ´Ù. ´ÙÀ½ ¸í·ÉÀº 'õ'À¸·Î ³¡³ª´Â µµ½Ã¸¦ ¸éÀû¼øÀ¸·Î Á¤·ÄÇÏ¿© ¸ñ·ÏÀ» ÀÛ¼ºÇÑ´Ù.

 

SELECT LISTAGG(TRIM(name), ', ') WITHIN GROUP (ORDER BY area) FROM tCity WHERE TRIM(name) LIKE '%õ';

´ÙÀ½Àº Áߺ¹ ¸ñ·Ï Á¦°Å¿¡ ´ëÇØ ¾Ë¾Æº¸ÀÚ. µµ½Ã¸íÀº Áߺ¹ÀÌ ¾ø¾î Çϳª¾¿¸¸ ³ªÅ¸³ª´Âµ¥ Áߺ¹ÀÌ ÀÖÀ» °æ¿ì´Â °°Àº Ç׸ñÀÌ ¿©·¯ ¹ø ³ªÅ¸³ª±âµµ ÇÑ´Ù. Áö¿ª¸íÀÎ regionÀ» ¸ñ·ÏÀ¸·Î ÀÛ¼ºÇÏ¿© Ãâ·ÂÇØ º¸ÀÚ.

 

SELECT LISTAGG(region, ', ') FROM tCity;

Áö¿ªÀ» Àß ³ª¿­ÇÏÁö¸¸ °æ±â, Àü¶ó, °­¿ø µîÀÇ Ç׸ñÀÌ Áߺ¹µÇ¾î ÀÖ´Ù. Áߺ¹¾øÀÌ ¸ñ·ÏÀ» ¸¸µé·Á¸é DISTINCT Å°¿öµå¸¦ »ç¿ëÇÑ´Ù.

 

SELECT LISTAGG(DISTINCT region, ', ') FROM tCity;

Áߺ¹¾øÀÌ Áö¿ª¸í¸¸ Àß »Ì¾Æ³½´Ù. ±×·¯³ª ÀÌ ¸í·ÉÀº µÉ ¼öµµ ÀÖ°í ¾ÈµÉ ¼öµµ ÀÖ´Ù. ¿ø·¡ LISTAGG´Â DISTINCT¸¦ Áö¿øÇÏÁö ¾Ê¾Ò´Ù. ±×·¡¼­ ¿¹Àü ÇÔ¼öÀÎ WM_CONCAT ÇÔ¼ö¸¦ ´ë½Å »ç¿ëÇÏ°ï Çß¾ú´Âµ¥ ´ÙÇàÈ÷ ¿À¶óŬ 19cºÎÅÍ´Â DISTINCT¸¦ Áö¿øÇÑ´Ù.

IBM DB2µµ ÀÌ ±¸¹®À» Àß Áö¿øÇϴµ¥ ¿À¶óŬÀº µµÀÔÀÌ Á» ´Ê¾ú´Ù. ±× ÀÌÀü ¹öÀü¿¡¼­´Â ÀÌ ±â´ÉÀÌ ¾ø¾î Áߺ¹À» ¸ÕÀú Á¦°ÅÇÑ ÈÄ ¸ñ·ÏÀ» ¸¸µé¾ú´Ù.

 

SELECT LISTAGG(region, ', ') FROM (SELECT DISTINCT region FROM tCity);

ÀζóÀκ信 DISTINCT Å°¿öµå¸¦ »ç¿ëÇÏ¿© Áߺ¹À» ¸ÕÀú Á¦°ÅÇÏ°í ÀÌ Å×ÀÌºí¿¡¼­ region Ä÷³À» ¸ñ·ÏÀ¸·Î ¸¸µé¸é µÈ´Ù. ±×·¯³ª º¸´Ù½ÃÇÇ LISTAGG·Î Á¶»çÇÑ ¸ñ·Ï°ú´Â ´Þ¸® Á¤·ÄÀ» ÇÏÁö ¾Ê´Â ¹®Á¦°¡ ÀÖ´Ù. Á¤È®ÇÏ°Ô °°Àº ±¸¹®À» ¸¸µé·Á¸é Á¤·ÄÀ» µû·Î ÇØ¾ß ÇÑ´Ù.

 

SELECT LISTAGG(region, ', ') WITHIN GROUP (ORDER BY region) FROM (SELECT DISTINCT region FROM tCity);

 

¿À¶óŬ 19cºÎÅÍ´Â ÀÌ·² ÇÊ¿ä°¡ ¾øÁö¸¸ Ç×»ó ÃֽŠ¹öÀü¿¡¼­ ½ÇÇàÇÑ´Ù°í º¸ÀåÇÒ ¼ö ¾ø¾î ȣȯ¼ºÀº ¿ÀÈ÷·Á ÀÌ ±¸¹®ÀÌ ´õ ÁÁ´Ù. Àß ¸¸µé¾î ³ù´Âµ¥ 12c ¹öÀü ½Ã½ºÅÛÀ¸·Î ¿Å±â¸é µÇ´ø °Íµµ ¾ÈµÇ´Â °æ¿ì°¡ Á¾Á¾ ÀÖ´Ù. ±×·¡¼­ ¾î¶² ±â´ÉÀÌ ¾ðÁ¦ µé¾î °¬´ÂÁöµµ Àß ¾Ë¾Æ µÎ¾î¾ß ÇÑ´Ù.

´ÙÀ½Àº ±×·ìÇÎ ¸ñ·ÏÀ» ÀÛ¼ºÇØ º¸ÀÚ. Àüü ¸ñ·ÏÀÌ ¾Æ´Ñ ±×·ìº° ¸ñ·ÏÀ» ÀÛ¼ºÇÏ·Á¸é GROUP BY ±¸¹®À» »ç¿ëÇÑ´Ù. ´ÙÀ½ ¸í·ÉÀº Áö¿ªº° µµ½Ã ¸ñ·ÏÀ» Á¶»çÇÑ´Ù.

 

SELECT region, LISTAGG(TRIM(name), ', ') FROM tCity GROUP BY region;

1Â÷¿øÀÇ ±æ´Ù¶õ Á¤º¸¸¦ 2Â÷¿øÀÇ Ç¥Çü½ÄÀ¸·Î °£·«ÇÏ°Ô ¿ä¾àÇؼ­ º¸¿©ÁÖ´Â ½Ç¿ë¼º ³ôÀº ±¸¹®ÀÌ´Ù. ¾î´À Áö¿ª¿¡ ¾î´À µµ½Ã°¡ ÀÖ´ÂÁö ÇÑ´«¿¡ ÆľÇÇÒ ¼ö ÀÖ´Ù. ¸ñ·ÏÀº ÃÖ´ë 4000¹ÙÀÌÆ®±îÁö ÀÛ¼ºÇÒ ¼ö ÀÖ¾î À¢¸¸ÇÑ ±æÀÌ´Â ÃæºÐÈ÷ ¼ö¿ëÇÑ´Ù.

¸¸¾à À§ ¸ñ·ÏÀ» Áö¿ª¼øÀ¸·Î Á¤·ÄÇÏ°í ½Í´Ù¸é µÚ¿¡ ORDER BY regionÀ» µ¡ºÙÀδÙ. WITHIN GROUP ³»ÀÇ ORDER BY´Â ¸ñ·Ï³»ÀÇ ¼ø¼­ÀÌ°í ¹®ÀåÀÇ ORDER BY´Â Àüü °á°ú¼ÂÀÇ ¼ø¼­ÀÌ´Ù. ´ÙÀ½ ¸í·ÉÀº Áö¿ª¼øÀ¸·Î Á¤·ÄÇ쵂 ÇÑ Áö¿ªÀÇ µµ½Ã´Â À̸§ ¿ª¼øÀ¸·Î Á¤·ÄÇÑ´Ù.

 

SELECT region, LISTAGG(TRIM(name), ', ') WITHIN GROUP (ORDER BY name DESC) FROM tCity GROUP BY region ORDER BY region;

LISTAGG ¸í·É ÀÚü¿¡µµ PARTITION BY ±¸¹®À¸·Î ±×·ìÇÎÀ» ÇÒ ¼ö ÀÖ´Ù. ±×·¯³ª ±â´ëÇÏ´Â °Í°ú´Â °á°ú°¡ Á¶±Ý ´Ù¸£´Ù. PARTITION BY´Â °°Àº ±×·ì¿¡ ¼ÓÇÑ Ç׸ñÀ» ÇÕÃÄ ÁÖÁö¸¸ ¸Å Ç׸ñ¸¶´Ù ±×·ìÀ» »õ·Î ¸¸µé¾î Áߺ¹ÀÌ ¹ß»ýÇÑ´Ù.

 

SELECT region, LISTAGG(TRIM(name), ', ') OVER (PARTITION BY region) FROM tCity;

Áï, ȫõ¿¡ ´ëÇØ Áö¿ªÀÌ °°Àº ÃáõÀ» ÇÕÄ¡°í Ãáõ¿¡ ´ëÇؼ­µµ °°Àº °­¿øµµ¿¡ Àִ ȫõÀ» ÇÕÄ£´Ù. ÀÌ·± ½ÄÀÌ´Ï Áö¿ªº°·Î µµ½Ã °³¼ö¸¸Å­ Áߺ¹ÀÌ ¹ß»ýÇÑ´Ù. ¸¸¾à Á¤ Áߺ¹À» ¾ø¾Ö°í ½Í´Ù¸é Àüü¸¦ °¨½Ñ ÈÄ Áö¿ª°ú ¸ñ·ÏÀ¸·Î ±×·ìÇÎÀ» ´Ù½Ã ÇÏ¸é µÈ´Ù.

 

SELECT * FROM (

      SELECT region, LISTAGG(TRIM(name), ', ') OVER (PARTITION BY region) AS list FROM tCity

) GROUP BY region, list;

 

ÀÌ·¸°Ô ÇÏ¸é ¾ÖÃÊ¿¡ GROUP BY·Î »ÌÀº ¸ñ·Ï°ú °°¾ÆÁø´Ù. ÀÌ·± º¹ÀâÇÑ ±¸¹®À» ¾µ ¹Ù¿¡¾ß ±»ÀÌ PARTITION BY¸¦ ¾µ ÇÊ¿ä°¡ ¾ø´Ù. ´Ü¼øÈ÷ ±×·ìº° ¸ñ·ÏÀÌ ÇÊ¿äÇÏ´Ù¸¸ GROUP BY°¡ ÈξÀ °£°áÇÏ°í ½±´Ù.

LISTAGGÀÇ PARTITION BY´Â °¢ Çà¿¡ ´ëÇØ °³º°ÀûÀ¸·Î ±×·ìÇÎÀ» ¼öÇàÇÑ´Ù. Áï Áö¿ªÀÌ ÁÖ°¡ ¾Æ´Ï¶ó µµ½Ã°¡ ÁÖÀ̸ç ÇØ´ç µµ½Ã¿Í °°Àº Áö¿ªÀÇ µµ½Ã ¸ñ·ÏÀ» ±×·ìÈ­Çؼ­ º¸¿©ÁØ´Ù. ´ÙÀ½ °á°ú°¡ ÇÊ¿äÇÏ´Ù¸é PARTITION BY¸¦ »ç¿ëÇÏ´Â °ÍÀÌ ÀûÀýÇÏ´Ù.

 

SELECT name, region, LISTAGG(TRIM(name), ', ') OVER (PARTITION BY region) FROM tCity;

°¢ µµ½ÃÀÇ Á¤º¸¸¦ Ãâ·ÂÇ쵂 ¼Ò¼Ó Áö¿ª°ú °°Àº ÀÌ¿ô µµ½ÃÀÇ ¸ñ·ÏÀ» Á¶»çÇÑ °ÍÀÌ´Ù. ÀÌ·² ¶§´Â PARTITION BY°¡ ½Ç¿ëÀûÀÌ´Ù. ±×·ìÇÎ Á¶°ÇÀº ÀÓÀÇÀûÀ̾ Áߺ¹ÀÌ ÀÖ´Â ¾î¶² Ä÷³À̵çÁö ±×·ìÇÎÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½ ¸í·ÉÀº ±¤¿ª½Ã/ºñ±¤¿ª½Ã·Î ±×·ìÇÎÇÑ´Ù.

 

SELECT name, region, LISTAGG(TRIM(name), ', ') OVER (PARTITION BY metro) FROM tCity;

µµ½Ã ¸ñ·ÏÀ» Ãâ·ÂÇÏ¸ç °°Àº ±¤¿ª½Ã´Â ¾îµðÀÎÁö, ÀÚ±â¿Í °°Àº ºñ±¤¿ª½Ã´Â ¶Ç ¾îµð°¡ ÀÖ´ÂÁö »Ì¾Æº¼ ¼ö ÀÖ´Ù.

XLMELEMENT¿Í XMLAGG ÇÔ¼öµµ ºñ½ÁÇÑ µ¿ÀÛÀ» ¼öÇàÇÑ´Ù. ÃÖÁ¾ ¸í·É¸¸ º¸¸é º¹ÀâÇÏ°í Á¤½ÅÀÌ ¾ø¾î º¸ÀÌ´Ï ´Ü°èº°·Î µµ½Ã¸í ¸ñ·ÏÀ» ÀÛ¼ºÇÏ´Â Äڵ带 ÀÛ¼ºÇØ º¸ÀÚ. ¸ÕÀú XMLELEMENT ¸í·ÉÀ¸·Î µµ½Ã¸íÀ» ¿¤¸®¸ÕÆ®·Î ¸¸µç´Ù.

 

SELECT XMLELEMENT(element, TRIM(name)).getStringVal() FROM tCity;

 

¿¤¸®¸ÕÆ®¸í°ú Çʵå¸íÀ» ÁöÁ¤Çϸé Çʵ带 ¿¤¸®¸ÕÆ®·Î °¨½Ñ´Ù. element·Î ÁöÁ¤Çߴµ¥ ¾îÂ÷ÇÇ ÀÓ½ÃÀûÀÎ ¿¤¸®¸ÕÆ®¿©¼­ A³ª B·Î Á൵ »ó°ü ¾ø´Ù. GetStringVal ÇÔ¼ö´Â ¿¤¸®¸ÕÆ®¸¦ ¹®ÀÚ¿­·Î ¹Ù²ã¼­ º¸¿©Áִµ¥ °á°ú È®ÀοëÀÌ´Ù. ÀÌ ¸Þ¼­µå°¡ ¾øÀ¸¸é (XMLTYPE)À̶ó°í¸¸ ³ª¿Í ³»ºÎ¸¦ º¼ ¼ö ¾ø´Ù.

µµ½Ã¸í¸¸ ³ª¿­ÇÏ¸é ±¸ºÐÀÌ ¾ÈµÇ¹Ç·Î Áß°£¿¡ ±¸ºÐÀÚ¸¦ ³Ö¾î ÁØ´Ù. µÎ ¹ø° Àμö·Î ±¸ºÐÀÚ¸¦ ÁöÁ¤Çصµ µÇ°í µµ½Ã¸í ¾Õ¿¡ ±¸ºÐÀÚ ¹®ÀÚ¿­À» µ¡ ºÙ¿©µµ µÈ´Ù. ±¸ºÐÀÚ¸¦ µÚ¿¡ ³Ö¾îµµ »ó°ü ¾øÁö¸¸ ³ªÁß¿¡ À߶󳻱Ⱑ ±ÍÂú¾Æ º¸Åë ¾Õ¿¡ ºÙÀδÙ.

 

SELECT XMLELEMENT(element, ', ',TRIM(name)).getStringVal() FROM tCity;

SELECT XMLELEMENT(element, ', ' || TRIM(name)).getStringVal() FROM tCity;

¸ðµç µµ½Ã¸í ¾Õ¿¡ ÄÞ¸¶¿Í °ø¹éÀ» Ãß°¡Çß´Ù. ´ÙÀ½Àº ¿¤¸®¸ÕÆ®ÀÇ ÅؽºÆ®¸¸ ÃßÃâÇÑ´Ù. Extract ¸Þ¼­µå·Î ÅؽºÆ®¸¸ Ã߸®¸é ¾çÂÊÀÇ Å±װ¡ ¶³¾îÁø´Ù. À̹ø¿¡µµ ³»¿ë È®ÀÎÀ» À§ÇØ getStringVal È£ÃâÀÌ ÇÊ¿äÇÏ´Ù.

 

SELECT (XMLELEMENT(element, ', ',TRIM(name))).Extract('//text()').getStringVal() FROM tCity;

ÀÌ·¸°Ô ¸¸µç ¸ñ·ÏÀ» XMLAGG ¸Þ¼­µå·Î Çϳª·Î ÇÕÃÄ Ãâ·ÂÇÑ´Ù. À§ Ãâ·Â¹®ÀÇ ¸ðµç ÇàÀÌ ÇϳªÀÇ ±ä ¹®ÀÚ¿­ ¸ñ·ÏÀ¸·Î ÇÕÃÄÁø´Ù.

 

SELECT XMLAGG(XMLELEMENT(element, ', ',TRIM(name))).Extract('//text()').getStringVal() FROM tCity;

µµ½ÃÀÇ À̸§¸¸À¸·Î ¸ñ·ÏÀ» ÀÛ¼ºÇß´Ù. ¿©±â¼­ ¹®Á¦´Â Á¦ÀÏ ¾Õ¿¡ ÀÖ´Â ÄÞ¸¶Àε¥ ÀÌ°Ç ÇÊ¿ä ¾øÀ¸´Ï Á¦°ÅÇØ¾ß ÇÑ´Ù. ±¸ºÐÀÚ¸¦ µÚ¿¡ ºÙ¿´¾îµµ Á¦°ÅÇØ¾ß ÇÏ´Â °ÍÀº ¸¶Âù°¡ÁöÀÌ´Ù. SUBSTR ÇÔ¼ö·Î Á¦ÀÏ ¾ÕÀÇ ¹®ÀÚ Çϳª¸¸ Á¦°ÅÇÏ¸é µÈ´Ù. À̶§´Â ¸®ÅÏŸÀÔÀÌ ¹®ÀÚ¿­À̹ǷΠGetStringVal ÇÔ¼ö´Â ÇÊ¿äÄ¡ ¾Ê´Ù.

 

SELECT SUBSTR(XMLAGG(XMLELEMENT(x, ', ', TRIM(name))).Extract('//text()'), 2) FROM tCity;

¿øÇÏ´Â ¸ñ·Ï¸¸ ±ò²ûÇÏ°Ô Ãâ·ÂÇß´Ù. Á¤·Ä ¼ø¼­¸¦ ÁöÁ¤ÇÒ ¶§´Â ¿¤¸®¸ÕÆ®·Î ÃßÃâÇÒ ¶§ ORDER BY ÀýÀ» ÁöÁ¤ÇÑ´Ù. ´ÙÀ½ ¸í·ÉÀº À̸§ ³»¸²Â÷¼øÀ¸·Î Á¤·ÄÇÏ¿© ¸ñ·ÏÀ» ¸¸µç´Ù.

 

SELECT SUBSTR(XMLAGG(XMLELEMENT(x, ', ', TRIM(name)) ORDER BY name DESC).Extract('//text()'), 2) FROM tCity;

 

XMLAGG´Â ¿À¶óŬ9ºÎÅÍ »ç¿ëÇÒ ¼ö ÀÖ°í 4000¹ÙÀÌÆ®°¡ ³Ñ´Â ¸ñ·ÏÀ» ¸¸µé ¼öµµ ÀÖ¾î Á» ´õ ¹ü¿ëÀûÀÌ´Ù. ±×·¯³ª Çü½ÄÀÌ º¹ÀâÇÏ°í ´Ü°è°¡ ±æ¾î °£ÆíÇÏ°Ô ¸ñ·ÏÀ» ±¸ÇÒ ¶§´Â LISTAGG°¡ ´õ ½±´Ù.

MSSQL¿¡µµ ºñ½ÁÇÑ ÇÔ¼ö°¡ ÀÖ´Ù. 2017 ÀÌ»óÀÇ ¹öÀü¿¡¼­´Â STRING_AGG ÇÔ¼ö¸¦ »ç¿ëÇϴµ¥ LIST_AGG¿Í »ç¿ë¹ýÀÌ À¯»çÇÏ´Ù.

 

SELECT STRING_AGG(TRIM(name), ', ') FROM tCity;

 

2017ÀÌÇÏÀÇ ¹öÀü¿¡¼­´Â FOR XML PATH ±¸¹®À» »ç¿ëÇÑ´Ù. XMLAGG¿Í À¯»çÇÑ ±¸¹®ÀÌ´Ù. °úÁ¤Àº Á» º¹ÀâÇѵ¥ °á°ú¸¸ º¸ÀÌ¸é ´ÙÀ½°ú °°´Ù.

 

SELECT STUFF((SELECT ', ' + TRIM(name) FROM tCity FOR XML PATH('')),1,1,'');

 

ű׸í°ú °ø¹é Á¦°ÅÇÏ°í ¸ðµÎ ÇÕÄ£ ÈÄ ¾ÕÂÊ ÄÞ¸¶ Çϳª¸¦ Á¦°ÅÇÏ´Â ½ÄÀ̶ó XMLAGG¿Í ÀýÂ÷°¡ ºñ½ÁÇÏ´Ù. ´õ ÀÚ¼¼ÇÑ À̷аú ±¸¹®À» µû·Î ¿¬±¸ÇØ ºÁµµ µÇ°ÚÁö¸¸ »ç¿ë¸¸À» ¸ñÀûÀ¸·Î ÇÑ´Ù¸é À§ ±¸¹®À» º¹»çÇÑ ÈÄ Á¶±Ý¸¸ ÀÀ¿ëÇÏ¸é µÈ´Ù.

´ÙÁß Ä÷³ ÇǺ¿

ÇǺ¿Àº º¸Åë ÇϳªÀÇ Ä÷³¿¡ ´ëÇØ ¿·À¸·Î µ¹¸®´Â °ÍÀÌÁö¸¸ ¿©·¯ °³ÀÇ Ä÷³¿¡ ´ëÇؼ­µµ ȸÀüÇÒ ¼ö ÀÖ´Ù. tSeason¿¡¼­ °èÀýº° ÆǸŷ® »Ó¸¸ ¾Æ´Ï¶ó Á¤º¸ÀÇ °³¼öµµ °°ÀÌ Á¶»çÇÏ°í ½Í´Ù°í ÇØ º¸ÀÚ. À̶§´Â sale Ä÷³¿¡ ´ëÇØ SUM°ú COUNT Áý°è ÇÔ¼ö¸¦ °¢°¢ ÁöÁ¤ÇÑ´Ù.

 

SELECT * FROM tSeason2 PIVOT (SUM(sale) AS total, COUNT(sale) AS num FOR season IN ('º½', '¿©¸§', '°¡À»', '°Ü¿ï')) pvt;

 

tSeason¿¡´Â µ¹¸±¸¸ÇÑ Ä÷³ÀÌ sale ¹Û¿¡ ¾ø¾î °°Àº Ä÷³¿¡ ´ëÇØ SUM°ú COUNT¸¦ °¢°¢ ÁöÁ¤Çß´Ù. ÀÌ·¯¸é °¢ °èÀýº°·Î 2°³ÀÇ Áý°è Ä÷³ÀÌ »ý¼ºµÇ´Âµ¥ Ä÷³³¢¸® ±¸ºÐÇϱâ À§ÇØ Áý°è °á°ú¿¡ º°¸íÀ» ¹Ýµå½Ã ÁöÁ¤ÇØ¾ß ÇÑ´Ù. °á°ú´Â ´ÙÀ½°ú °°´Ù.

 

 

Çʵå¸í_Áý°èº°¸í Çü½ÄÀ¸·Î Çʵ带 »ý¼ºÇÑ´Ù. º½¿¡ ´ëÇØ TOTAL°ú SUM °¢ Ä÷³ÀÌ »ý¼ºµÇ¸ç ³ª¸ÓÁö °èÀýµµ ¸¶Âù°¡ÁöÀÌ´Ù. PIVOT ´ÙÀ½ÀÇ Ä÷³ °³¼ö¿Í IN ÀýÀÇ °ª °³¼öÀÇ °ö¸¸Å­ Ä÷³À» ¸¸µç´Ù.

FOR ÀýÀÇ ÇǺ¿ ´ë»ó Ä÷³µµ ¿©·¯ °³ ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù. ÀÌ °æ¿ì IN Àý¿¡´Â ´ë»ó Ä÷³ÀÇ Á¶ÇÕÀ» ½á ÁÖ°í º°¸íµµ ÁöÁ¤ÇØ¾ß ÇÑ´Ù. ¸ÕÀú ¾Õ¿¡¼­ ¸¸µé¾ú´ø ´ÙÀ½ µÎ ±¸¹®À» º¹½ÀÇØ º¸ÀÚ.

 

SELECT * FROM tTraffic PIVOT (SUM(traffic) FOR car IN ('½Â¿ëÂ÷', 'Æ®·°')) pvt;

SELECT * FROM tTraffic PIVOT (SUM(traffic) FOR hour IN ('1', '2', '3')) pvt;

 

°¢°¢ ÅëÇà·®À» Â÷Á¾º°, ½Ã°£º°·Î ÇǺ¿ÇÑ °ÍÀÌ´Ù. ÀÌ ±¸¹®À» ¿Ïº®ÇÏ°Ô ÀÌÇØÇÏ°í ÀÖ¾î¾ß ´ÙÁß Ä÷³ ÇǺ¿À» ¿¬±¸ÇØ º¼ ¼ö ÀÖ´Ù. ´ÙÀ½ ¸í·ÉÀº Â÷Á¾°ú ½Ã°£¿¡ ´ëÇØ µ¿½Ã¿¡ ÇǺ¿ÇÏ¿© °¢ Â÷Á¾ÀÌ °¢ ½Ã°£´ë¿¡ ¾ó¸¶³ª ÅëÇß´ÂÁö ¿ä¾àÇÑ´Ù.

 

SELECT * FROM tTraffic PIVOT (SUM(traffic) FOR (car, hour) IN (

    ('½Â¿ëÂ÷', '1') AS S1, ('½Â¿ëÂ÷', '2') AS S2, ('½Â¿ëÂ÷', '3') AS S3,

    ('Æ®·°', '1') AS T1, ('Æ®·°', '2') AS T2, ('Æ®·°', '3') AS T3)) pvt;

 

FOR ¹®¿¡ car¿Í hour Ä÷³À» ÁöÁ¤ÇÏ¿© µÎ Ä÷³ÀÇ °ª¿¡ ´ëÇØ È¸ÀüÇ϶ó°í Áö½ÃÇÑ´Ù. IN Àý¿¡´Â µÎ Ä÷³°ªÀÇ Á¶ÇÕÀ» ³ª¿­ÇÏ¸ç °¢ Á¶ÇÕ¿¡ ´ëÇØ º°¸íµµ ÁöÁ¤ÇÑ´Ù. S1 Ä÷³Àº ½Â¿ëÂ÷ÀÇ 1½Ã ÅëÇà·®ÀÌ°í T2´Â Æ®·°ÀÇ 2½Ã ÅëÇà·®À̶ó´Â ¶æÀÌ´Ù. °á°ú´Â ´ÙÀ½°ú °°´Ù.

º°¸íÀ» »ý·«ÇÏ¸é µÎ Ä÷³ÀÇ °ªÀ» _·Î ¿¬°áÇÑ Ä÷³À» »ý¼ºÇÑ´Ù. °ªÀÇ ±æÀÌ°¡ ÀÏÁ¤Çϸé ÀÌ ÆíÀÌ Àбâ´Â ´õ ÆíÇÏÁö¸¸ °á°ú Ä÷³À» ÂüÁ¶ÇϱⰡ ¹ø°Å·Î¿öÁø´Ù.

¾ÖÃÊÀÇ ÅëÇà·® Å×ÀÌºí¿¡ ºñÇØ ³ë¼±¸¸ ³²°ÜµÎ°í Â÷Á¾°ú ½Ã°£ÀÌ ¸ðµÎ Ä÷³À¸·Î º¯È¯µÇ¾î ¿ä¾àÀûÀÎ Á¤º¸¸¦ »ý¼ºÇÑ´Ù. °ü½É¾ø´Â Á¶ÇÕÀº »ý·«Çصµ »ó°ü ¾ø´Ù. ¿¹¸¦ µé¾î ½Â¿ëÂ÷ÀÇ 3½Ã ÅëÇà·®Àº »©°í ½Í´Ù¸é ('½Â¿ëÂ÷', '3') AS S3¸¦ »© ¹ö¸®¸é µÈ´Ù. 

´ÙÁß Ä÷³ ÇǺ¿À» Çѹø¿¡ ÀÌÇØÇϱâ´Â »ç½Ç ½±Áö ¾Ê´Ù. ÇǺ¿ ÀÚüµµ Á÷°üÀûÀÌÁö ¾Ê°í ÃÖÁ¾ °á°ú¸¦ ÀÌÇØÇϱ⵵ ½±Áö ¾Ê´Ù. °Ü¿ì ÀÌÇØÇ߾ Àß ¿Ü¿öÁöÁöµµ ¾Ê°í ÀÀ¿ëÀº ´õ ¾î·Æ´Ù. Çò°¥¸°´Ù¸é óÀ½ºÎÅÍ Çϳª¾¿ ¼ø¼­´ë·Î ´Ù½Ã º¹½ÀÇÏ¸ç ³»ºÎ µ¿ÀÛÀ» Àß À¯ÃßÇØ º¸´Â ¹æ¹ý¹Û¿¡ ¾ø´Ù.

¿À¶óŬ ÆÁ

©¸· ©¸·ÇÑ ¿À¶óŬ Äõ¸® °ü·Ã ÆÁÀ» ¼Ò°³ÇÑ´Ù. »ç¿ëÀÚ¿Í DB µîÀ» ´Ù·ç°í °ü¸®ÇÏ´Â ¿©·¯ °¡Áö ±â¹ýÀ» ÀÍÈú ¼ö ÀÖ´Ù.

 

- ÇöÀç Á¢¼ÓÇÑ °èÁ¤À» È®ÀÎÇÑ´Ù. ¾÷¹« ȯ°æ¿¡¼­´Â ¸ñÀû¿¡ µû¶ó ·Î±×ÀÎÇÏ´Â °èÁ¤À» ¼±ÅÃÇϴµ¥ ¿¹¸¦ µé¾î Å×À̺íÀ» ¸¸µé°Å³ª ¼öÁ¤ÇÒ ¶§´Â °ü¸®ÀÚ °èÁ¤À», ´Ü¼øÈ÷ Àб⸸ ÇÒ ¶§´Â »ç¿ëÀÚ °èÁ¤À» ¾²´Â °ÍÀÌ ¾ÈÀüÇÏ´Ù. Äõ¸®Ã¢À» ¿Å°Ü ´Ù´Ï´Ù º¸¸é Áö±Ý ¾î´À °èÁ¤À¸·Î ·Î±×ÀÎÇß´ÂÁö ±ôºý ÀØÀ» ¶§°¡ Àִµ¥ À̶§ ´ÙÀ½ ¸í·ÉÀ¸·Î È®ÀÎÇÑ´Ù.

 

SHOW USER;

 

½Ç½À ȯ°æ¿¡¼­´Â SYSTEMÀ̶ó°í Ãâ·ÂµÉ °ÍÀÌ´Ù. ·Î±×ÀÎÇÑ °èÁ¤¿¡ µû¶ó ÇÒ ¼ö ÀÖ´Â ÀÛ¾÷ÀÇ Á¾·ù°¡ ´Þ¶óÁö¸ç °èÁ¤¿¡ ÀûÇÕÇÑ ÀÛ¾÷¸¸ ÇØ¾ß ¾ÈÀüÇÏ´Ù.

 

- ÇöÀç Á¢¼ÓÇÑ DB È®ÀÎ. ¸¶Âù°¡Áö·Î DB¸¦ ¿©±â Àú±â ¿Å°Ü ´Ù´Ï¸ç ÀÛ¾÷ÇÒ ¶§´Â ÇöÀç DB¸¦ ¾Ë¾Æ¾ß ÇÑ´Ù. À̶§´Â ´ÙÀ½ ¸í·ÉÀ» »ç¿ëÇÑ´Ù. STUDY¶ó°í Ãâ·ÂµÈ´Ù.

 

SELECT name FROM v$database;

 

v$·Î ½ÃÀÛÇÏ´Â Å×À̺íÀº ¿À¶óŬÀÌ µ¿ÀûÀ¸·Î »ý¼ºÇÏ´Â Á¤º¸ ºäÀÌ´Ù. ±âº» Å×À̺íÀ̳ª ¸Þ¸ð¸®, ÇÁ·Î¼¼½º ¿µ¿ª µî¿¡¼­ ÇÊ¿äÇÑ Á¤º¸¸¦ Á¶ÇÕÇÏ¿© Å×À̺í ÇüÅ·Πº¸¿© ÁØ´Ù. Âü°í·Î gv$´Â Ŭ·¯½ºÅÍÀÇ Á¤º¸±îÁö °°ÀÌ º¸¿© ÁØ´Ù.

 

- Å×ÀÌºí ¸ñ·Ï È®ÀÎ. ÇöÀç DBÀÇ Å×ÀÌºí ¸ñ·ÏÀ» Á¶»çÇÒ ¶§´Â ¿©·¯ °¡Áö ¹æ¹ýÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¿ø·ÐÀûÀÎ ¸í·ÉÀº user_objects Å×À̺íÀ» ´ýÇÁÇÏ´Â °ÍÀÌ´Ù. ÀÌ Å×ÀÌºí¿¡´Â ÇÁ·Î½ÃÀú, ½ÃÄö¼­, À妽º µîÀÇ ¸ðµç DB ¿ÀºêÁ§Æ® Á¤º¸°¡ ÀúÀåµÇ¾î ÀÖ´Ù. Å×ÀÌºí¸¸ º¸·Á¸é object_type Çʵ带 'TABLE'·Î ÁöÁ¤ÇÑ´Ù.

 

SELECT * FROM user_objects WHERE object_type='TABLE';

½Ã½ºÅÛ Å×ÀÌºíµµ ÀÖ°í Áß°£Âë¿¡ º¸¸é ¿ì¸®°¡ ¸¸µç Å×ÀÌºíµµ ÀÖ´Ù. Ä÷³À» º¸¸é »ý¼º ³¯Â¥, ¼öÁ¤ ³¯Â¥ µîµµ ³ªÅ¸³­´Ù. »ý¼º ³¯Â¥ ¿ª¼øÀ¸·Î Á¶È¸Çϸé ÃÖ±Ù¿¡ ¸¸µç Å×À̺íÀ» º¼ ¼ö ÀÖÀ¸¸ç ƯÁ¤ Å×À̺íÀÌ Á¸ÀçÇÏ´ÂÁöµµ È®ÀÎÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½Àº ´õ °£´ÜÇÑ ¹æ¹ýÀÌ´Ù.

 

SELECT * FROM user_tables;

SELECT * FROM tabs;

 

Å×À̺í ÇÒ´ç·®À̳ª Å©±â¿¡ ´ëÇÑ ¿©·¯ °¡Áö Á¤º¸¸¦ Ç¥½ÃÇÑ´Ù. ´ÙÀ½ µÎ ¸í·ÉÀº ¸ðµç Å×ÀÌºí¿¡ ´ëÇÑ ¸ðµç Á¤º¸¸¦ »ó¼¼ÇÏ°Ô º¸¿© ÁØ´Ù.

 

SELECT * FROM all_tables;

SELECT * FROM all_all_tables;

 

¼û°ÜÁø ³»ºÎ °ü¸® Å×À̺í±îÁö »ó¼¼ÇÏ°Ô º¸¿©ÁØ´Ù. °ü¸®ÀÚÀÎ °æ¿ì´Â ¸ðµç °èÁ¤ÀÇ DB¸¦ ´Ù º¸¿© ÁÖÁö¸¸ ±×·¸Áö ¾ÊÀ» °æ¿ì ÇöÀç °èÁ¤°ú °ü¸®ÀÚ DB¸¸ º¸ÀδÙ.

 

- Å×ÀÌºí ±¸Á¶ È®ÀÎ. ±×·¡ÇÈ È¯°æÀº Å×ÀÌºí ±¸Á¶¸¦ º¸±â ÁÁ°Ô Ãâ·ÂÇØ ÁÖÁö¸¸ ¸¶¿ì½º·Î ¼ÕÀÌ °¡¾ß Çؼ­ ¹ø°Å·Ó°í ´À¸®´Ù. Äõ¸®Ã¢¿¡¼­ DESC(RIBE) ¸í·ÉÀ¸·Î Å×ÀÌºí ±¸Á¶¸¦ ¹Ù·Î È®ÀÎÇÒ ¼ö ÀÖ´Ù.

 

DESC tCity;

 

½ºÅ©¸³Æ® Ãâ·Ââ¿¡ Çʵå Á¤º¸¸¦ °£·«ÇÏ°Ô º¸¿© ÁØ´Ù.

 

À̸§     ³Î?       À¯Çü        

------ -------- ----------

NAME   NOT NULL CHAR(10)  

AREA            NUMBER(38)

POPU            NUMBER(38)

METRO  NOT NULL CHAR(1)   

REGION NOT NULL CHAR(6)   

MAYOR           CHAR(12) 

 

¾î¶² Çʵ尡 ÀÖ°í ŸÀÔÀº ¹«¾ùÀÎÁö µîÀ» °£ÆíÇÏ°Ô È®ÀÎÇÒ ¼ö ÀÖ´Ù. Á» ´õ ±æ°Ô ´ÙÀ½ ¸í·ÉÀ¸·Îµµ È®ÀÎÇÒ ¼ö ÀÖ´Ù.

 

SELECT * FROM user_tab_cols WHERE table_name = 'TCITY';

Å×À̺íÀº À̸§Àº ¹Ýµå½Ã ´ë¹®ÀÚ·Î ½á¾ß ÇÑ´Ù. ¸í·É¹®ÀÌ ±æ¾î DESC ¸í·Éº¸´Ù´Â ºÒÆíÇÏ´Ù. user_tab_cols´Â °£´ÜÇÏ°Ô cols·Î ÁÙ¿© ½áµµ µÈ´Ù.

 

- »ç¿ëÀÚ °èÁ¤À» È®ÀÎÇÑ´Ù.

 

SELECT * FROM dba_users;

ACCOUNT_STATUS Ä÷³¿¡ °èÁ¤ÀÇ »óÅ°¡ Ç¥½ÃµÇ¾î ÀÖ´Ù. OPENÀº »ç¿ë °¡´ÉÇÏ´Ù´Â ¶æÀ̸ç LOCKÀº Àá°Ü ÀÖ´Ù´Â ¶æÀÌ°í EXPIRED´Â ºñ¹Ð ¹øÈ£°¡ ¸¸·áµÇ¾ú´Ù´Â ¶æÀÌ´Ù. Àá±ä °èÁ¤À» Ç® ¶§´Â ´ÙÀ½ ¸í·ÉÀ» »ç¿ëÇÑ´Ù.

 

ALTER USER outln ACCOUNT UNLOCK;

 

ÀÌ ¸í·ÉÀ» ³»¸° ÈÄ OUTLN °èÁ¤À» º¸¸é OPENÀ¸·Î ¹Ù²î¾î ÀÖÀ» °ÍÀÌ´Ù. °èÁ¤À» ´Ù½Ã Àá±Û ¶§´Â LOCK ¸í·ÉÀ» ÁÖ¸é µÈ´Ù. Àá±ÝÀ» Ç®¾ú´Ù°í Çؼ­ ÀÌ °èÁ¤À» ¹Ù·Î ¾µ ¼ö ÀÖ´Â °ÍÀº ¾Æ´Ï¸ç ºñ¹Ð ¹øÈ£¸¦ ÁöÁ¤ÇØ¾ß ÇÑ´Ù.

 

ALTER USER outln IDENTIFIED BY "asdf";

 

ºñ¹Ð ¹øÈ£´Â ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇϸç Ư¼ö¹®ÀÚµµ »ç¿ëÇÒ ¼ö Àֱ⠶§¹®¿¡ Ç×»ó µû¿ÈÇ¥·Î °¨½Î´Â °ÍÀÌ ÁÁ´Ù. ¿À¶óŬÀº ÀÏÁ¤ÇÑ ÁÖ±â·Î ºñ¹Ð ¹øÈ£¸¦ ¹Ù²Ü °ÍÀ» ¿ä±¸ÇÑ´Ù. SYSTEM °èÁ¤ÀÇ ¸¸·áÀÏÀÌ 7¿ù 7ÀÏ·Î °íÀÛ º¸¸§¹Û¿¡ ³²Áö ¾Ê¾Ò´Ù. ÀÌ ¸¸·á ³¯Â¥´Â ´ÙÀ½ ¸í·ÉÀ¸·Î È®ÀÎÇÑ´Ù.

 

SELECT * FROM dba_profiles;

Æнº¿öµå À¯È¿ ±â°£ÀÌ 180ÀÏ, Áï 6°³¿ù·Î ÁöÁ¤µÇ¾î ÀÖ´Ù. ½Ç¹« ȯ°æ¿¡¼­´Â ÁÖ±âÀûÀ¸·Î ºñ¹Ð¹øÈ£¸¦ ¹Ù²Ù´Â °ÍÀÌ ±ÇÀåµÇ¸ç ¾ÈÀüÇÏÁö¸¸ ³ª È¥ÀÚ »ç¿ëÇÏ´Â ½Ç½À ȯ°æ¿¡¼­´Â ¹«Ã´ ¹ø°Å·Ó´Ù. ¸¸·á ³¯Â¥´Â ¿øÇϴ´ë·Î ÁöÁ¤ÇÒ ¼ö ÀÖÀ¸¸ç unlimited·Î ÁöÁ¤ÇÏ¸é ¸¸·áµÇÁö ¾Ê´Â´Ù.

 

ALTER profile default limit password_life_time unlimited;

 

ÀÌ ¸í·ÉÀ» ¼öÇàÇÑ ÈÄ dba_users Å×À̺íÀ» ´Ù½Ã Á¶»çÇØ º¸¸é SYSTEMÀÇ ¸¸·á ³¯Â¥°¡ (null)·Î ¹Ù²î¸ç ÀÌÈÄ ºñ¹ø º¯°æ¾øÀÌ °è¼Ó »ç¿ëÇÒ ¼ö ÀÖ´Ù.

 

- ¿À¶óŬ ¹öÀü È®ÀÎ. ÇöÀç »ç¿ëÁßÀÎ ¿À¶óŬÀÇ ¹öÀüÀº ´ÙÀ½ ¸í·ÉÀ¸·Î È®ÀÎÇÑ´Ù. ³»°¡ ³» ÄÄÇ»ÅÍ¿¡ ¼³Ä¡Çß´Ù¸é ¹öÀüÀº ´ç¿¬È÷ ¾Ë°í ÀÖ°ÚÁö¸¸ ¿ø°Ý ¼­¹öÀÇ °æ¿ì´Â Á¶»çÇØ ºÁ¾ß ¾Ë ¼ö ÀÖ´Ù.

 

SELECT * FROM product_component_version;

SELECT * FROM v$version;

 

¹öÀüÀº °ð »ç¿ë °¡´ÉÇÑ ¸í·É¾î¸¦ °áÁ¤ÇÑ´Ù. ½Ç¹«¿¡¼­ OFFSET FETCH ¹®À» »ç¿ëÇߴµ¥ ÀÚ²Ù ¿¡·¯°¡ ¹ß»ýÇØ ¹öÀüÀ» È®ÀÎÇØ º¸´Ï 11g¿´´Ù. ÀÌ ¸í·ÉÀº 12c ºÎÅÍ Ãß°¡µÈ °ÍÀ̾ ¿ø·¡ 11g´Â ¾Ë¾Æ µèÁö ¸øÇÏ´Â ¸í·ÉÀÌ´Ù. ¹öÀüÀ» Á¦´ë·Î È®ÀÎÇÏÁö ¾ÊÀ¸¸é ÀÌ·± ¾û¶×ÇÑ »ðÁúÀ» ÇÏ°Ô µÈ´Ù.

´ë¼Ò¹®ÀÚ ±¸ºÐ

¿À¶óŬÀº ¹®ÀÚ¿­ÀÇ ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÑ´Ù. ±×·¡¼­ ´ÙÀ½ ¸í·ÉÀº ¾Æ¹« °Íµµ Ãâ·ÂÇÏÁö ¾Ê´Â´Ù.

 

SELECT * FROM tCity WHERE metro = 'Y';

 

metro Çʵå´Â ±¤¿ª½Ã ¿©ºÎ¸¦ Ç¥ÇöÇϸç y ¶Ç´Â nÀ¸·Î Àû´Â´Ù. ´ë¹®ÀÚ Y´Â ¼Ò¹®ÀÚ y¿Í´Â ´Þ¶ó À§ ¸í·ÉÀº ¾Æ¹« °Íµµ °Ë»öÇÏÁö ¸øÇÑ´Ù. ÀÌ¿¡ ºñÇØ SQL Server¿Í MariaDB´Â ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÏÁö ¾Ê¾Æ Y·Î °Ë»öÇصµ y¸¦ ã¾Æ³½´Ù. ÀÌ´Â ¼³Á¤ÀÇ Â÷ÀÌÀÏ »ÓÀÌ¸ç ¿À¶óŬµµ ´ÙÀ½ ¸í·ÉÀ¸·Î ´ë¼Ò¹®ÀÚ¸¦ ¹«½ÃÇÏ°í °Ë»öÇÒ ¼ö ÀÖ´Ù.

 

ALTER SESSION SET NLS_SORT = BINARY_CI;

ALTER SESSION SET NLS_COMP = LINGUISTIC;

 

ÀÌ·¸°Ô ¹Ù²Û ÈÄ À§ ¸í·ÉÀ» ´Ù½Ã ½ÇÇàÇÏ¸é ¼­¿ï°ú ºÎ»êÀ» °Ë»öÇØ ³½´Ù. ´Ü, ÀÌ ¸í·ÉÀº ÇöÀç ¼¼¼Ç¿¡¸¸ ¿µÇâÀ» ¹ÌÄ¥ »ÓÀ̾ ´Ù½Ã Á¢¼ÓÇÏ¸é ¸®¼ÂµÈ´Ù. ÀÌ ¿É¼ÇÀ» º¯°æÇÏÁö ¾Ê´õ¶óµµ UPPER, LOWER ÇÔ¼ö·Î ´ë¼Ò¹®ÀÚ¸¦ º¯È¯ÇÑ ÈÄ ºñ±³ÇÏ¸é ±¸ºÐ¾øÀÌ °Ë»öÇÒ ¼ö ÀÖ´Ù.

 

³­¼öÀÇ »ý¼º

³­¼ö´Â ¿©·Î ¸ð·Î ¾µ¸ð°¡ ¸¹´Ù. ¹«ÀÛÀ§·Î »ùÇÃÀ» »ý¼ºÇϰųª Ç¥º»À» ÃßÃâÇÒ ¶§ ³­¼ö¸¦ »ç¿ëÇÑ´Ù. ¾Ë¼ö ¾ø´Â Ãʱ⠺ñ¹Ð ¹øÈ£¸¦ »ý¼ºÇѴٰųª ÀÓÀÇÀÇ ´ë»óÀ» Ãß÷ÇÒ ¶§µµ À¯¿ëÇÏ´Ù. ¿À¶óŬÀº DBMS_RANDOM ÆÐÅ°ÁöÀÇ ¸Þ¼­µå·Î ³­¼ö »ý¼ºÀ» Áö¿øÇÑ´Ù. ¸Þ¼­µå¿¡ µû¶ó ³­¼ö¸¦ »ý¼ºÇÏ´Â ¹üÀ§°¡ ´Ù¸£´Ù.

 

¸Þ¼­µå

¼³¸í

RANDOM

À½¾çÀ¸·Î ÀÓÀÇÀÇ Á¤¼ö¸¦ »ý¼ºÇÑ´Ù. Å©±â´Â 2ÀÇ 31½ÂÀ̸ç 32ºñÆ® ºÎÈ£ÀÖ´Â Á¤¼ö Áß Çϳª¸¦ ¸®ÅÏÇÑ´Ù.

VALUE

0 ~ 1»çÀÌÀÇ ½Ç¼ö¸¦ ¸®ÅÏÇÑ´Ù. Àμö·Î (½ÃÀÛ, ³¡) ¹üÀ§¸¦ ÁöÁ¤Çϸé ÀÌ ¹üÀ§ ³»ÀÇ ³­¼ö¸¦ ¸®ÅÏÇÑ´Ù.

NORMAL

Ç¥ÁØ Á¤±Ô ºÐÆ÷(°¡¿ì½º ºÐÆ÷)ÀÇ ÀÓÀÇ°ªÀ» ½Ç¼ö·Î ¸®ÅÏÇÑ´Ù.

STRING('¼­½Ä', ±æÀÌ)

ÀÏÁ¤ ±æÀÌÀÇ ¹®ÀÚ¿­À» ¸®ÅÏÇÑ´Ù. ¼­½ÄÀº ¾ËÆĺª ÇѱÛÀÚ·Î ¾²µÇ ´ë¼Ò¹®ÀÚ´Â ±¸ºÐÇÏÁö ¾Ê´Â´Ù.

P : Àμ⠰¡´ÉÇÑ ¹®ÀÚ

U : ´ë¹®ÀÚ. ±× ¿ÜÀÇ ¼­½Ä ÁöÁ¤½Ã U°¡ µðÆúÆ®ÀÌ´Ù.

L : ¼Ò¹®ÀÚ

A : ´ë¼Ò¹®ÀÚ ±¸ºÐ¾ø´Â ¾ËÆĺª

X : ´ë¹®ÀÚ¿Í ¼ýÀÚ.

 

¸Þ¼­µå¸¸ È£ÃâÇÏ¸é µÇ´Ï »ç¿ëÇϱâ´Â ¹«Ã´ ½±´Ù. ´ÙÀ½ ¹®ÀåÀº 2ÀÇ 32½Â ¹üÀ§¿¡¼­ ÀÓÀÇÀÇ Á¤¼ö¸¦ ¸®ÅÏÇÑ´Ù. RANDOMÀº ÇÔ¼öÀ̹ǷΠ¿øÄ¢ÀûÀ¸·Î °ýÈ£¸¦ ºÙ¿©¾ß ÇÏÁö¸¸ »ý·«Çصµ º° ¹®Á¦´Â ¾ø´Ù.

 

SELECT DBMS_RANDOM.RANDOM FROM DUAL;

SELECT DBMS_RANDOM.RANDOM() FROM DUAL;

 

½ÇÇàÇÒ ¶§¸¶´Ù ¸Å¹ø ´Ù¸¥ Á¤¼ö¸¦ Ãâ·ÂÇÏ¸ç ¾î¶² ¼ö°¡ ³ª¿ÃÁö´Â ¹Ì¸® ¾Ë ¼ö ¾ø´Ù. ÀÌ ¹æ¹ýº¸´Ù´Â VALUE·Î ¹üÀ§¸¦ ÁöÁ¤ÇÏ¿© °¡´ÉÇÑ °ª Áß Çϳª¸¦ °í¸£´Â °ÍÀÌ ½Ç¿ëÀûÀÌ´Ù. ¿¹¸¦ µé¾î ÁÖ»çÀ§ÀÇ ¼ýÀÚÁß Çϳª¸¦ ¹«ÀÛÀ§·Î »ý¼ºÇØ º¸ÀÚ.

 

SELECT DBMS_RANDOM.VALUE(1, 6) FROM DUAL;

 

¹üÀ§¸¦ 1~6±îÁö·Î ÁÖ¸é ÀÌ ¹üÀ§³»ÀÇ ³­¼ö¸¦ °ñ¶óÁØ´Ù. ÃÖ¼Ò°ªÀº ¹üÀ§¿¡ Æ÷ÇԵǸç ÃÖ´ë°ªÀº Á¦¿ÜµÈ´Ù. ±×·¯³ª ÀÌ·¸°Ô »ý¼ºÇÑ ¼ýÀÚ´Â ½Ç¼ö¿©¼­ ÁÖ»çÀ§ÀÇ ¼ýÀÚ¶ó°í ÇÒ ¼ö´Â ¾ø´Ù. ¼Ò¼öÁ¡À» À߶ó ¹ö¸®µÇ ÀÌ °æ¿ì ¹üÀ§ÀÇ ÃÖ´ë°ªÀº 7·Î ÁÖ¾î¾ß ÇÑ´Ù.

 

SELECT TRUNC(DBMS_RANDOM.VALUE(1, 7)) FROM DUAL

 

7Àº ¹üÀ§¿¡¼­ Á¦¿ÜµÇ¹Ç·Î 6.9999´Â 6ÀÌ µÇ¸ç ±ÕÀÏÇÑ ³­¼ö°¡ µÈ´Ù. ¹Ý¿Ã¸²ÇÏ´Â ROUND°¡ ¾Æ´ÔÀ» ÁÖÀÇÇÏÀÚ. 1.0 ~ 6.0¹Ì¸¸±îÁö ¹Ý¿Ã¸²Çϸé 1°ú 6ÀÇ ÃâÇö È®·üÀº ´Ù¸¥ ¼ö¿¡ ºñÇØ Àý¹Ý¹Û¿¡ µÇÁö ¾Ê¾Æ ºÎÁ¤È®ÇÏ´Ù.

¹®ÀÚ¿­ ³­¼ö¸¦ »ý¼ºÇÒ ¶§´Â STRING ¸Þ¼­µå·Î ¹®ÀÚÀÇ Á¾·ù¿Í ±æÀ̸¦ ÁöÁ¤ÇÑ´Ù. ´ÙÀ½ ¸í·ÉÀº ´ë¹®ÀÚ·Î µÈ 10ÀÚ ±æÀÌÀÇ ¹«ÀÛÀ§ ¹®ÀÚ¿­À» ¸¸µç´Ù.

 

SELECT DBMS_RANDOM.STRING('U', 10) FROM DUAL;

 

IJSIBGJOAM³ª CPGXPVQFFP µîÀ» ¸®ÅÏÇÑ´Ù. ¼ýÀÚ 4ÀÚ¸®¿Í ´ë¹®ÀÚ 4ÀÚ¸®·Î µÈ ÀÓÀÇÀÇ Äڵ带 »ý¼ºÇÏ·Á¸é ´ÙÀ½ ¸í·ÉÀ» »ç¿ëÇÑ´Ù. Á¶±Ý¸¸ ÀÀ¿ëÇÏ¸é ¾ó¸¶µçÁö ´Ù¾çÇÑ Çü½ÄÀÇ ³­¼ö¸¦ ¸¸µé¾î³¾ ¼ö ÀÖ´Ù.

 

SELECT TRUNC(DBMS_RANDOM.VALUE(1000, 10000)) || DBMS_RANDOM.STRING('U', 4) FROM DUAL;

 

³­¼ö´Â ¹«ÀÛÀ§·Î »ý¼ºµÇ¹Ç·Î ±ÔÄ¢¼ºÀÌ ¾ø´Ù. ¹«ÀÛÀ§ÀÌµÇ ±ÔÄ¢¼ºÀÌ ÀÖ´Â ÀÏ·ÃÀÇ ³­¼ö¸¦ »ý¼ºÇÏ°í ½Í´Ù¸é SEED ¸Þ¼­µå·Î ³­¼ö »ý¼ºÀÇ ½ÃÀÛ°ªÀ» ÁöÁ¤ÇÑ´Ù. ³­¼ö ¾Ë°í¸®ÁòÀº ÀÌ ½ÃÀÛ°ªÀ¸·ÎºÎÅÍ ³­¼ö¸¦ »ý¼ºÇϵµ·Ï µÇ¾î ÀÖ¾î ½ÃÀÛ°ªÀÌ ÀÏÁ¤Çϸé ÀÌÈÄ »ý¼ºµÇ´Â ³­¼öµµ ÀÏÁ¤ÇÏ´Ù.

Ç×»ó ÀÏÁ¤ÇÑ °á°ú°¡ ÇÊ¿äÇϰųª µð¹ö±ëÀ» À§ÇØ ¸Å¹ø °°Àº ³­¼ö·Î Å×½ºÆ®ÇÏ°í ½ÍÀ» ¶§ À¯¿ëÇÏ´Ù. ´Ü, SEED ¸Þ¼­µå¸¦ »ç¿ëÇÏ·Á¸é Äڵ带 ÀÛ¼ºÇØ¾ß ÇÑ´Ù. ±×·¸Áö ¾ÊÀ¸¸é ¸Å ³­¼ö ¸Þ¼­µå È£Ãâ½Ã¸¶´Ù ½ÃÀÛÁ¡ÀÌ ÃʱâÈ­µÇ¾î ÀÏÁ¤ÇÑ ÆÐÅÏÀ» ¾òÀ» ¼ö ¾ø´Ù. ´ÙÀ½ Äڵ带 ½ÇÇàÇØ º¸ÀÚ.

 

SET SERVEROUTPUT ON

BEGIN

    DBMS_RANDOM.SEED(629);

    FOR v_num IN 1..10

    LOOP

        DBMS_OUTPUT.PUT_LINE(DBMS_RANDOM.RANDOM);

    END LOOP;

END;

 

ÄÚµå ½ÃÀ۽à 629¸¦ ½ÃÀÛÁ¡À¸·Î ÁöÁ¤ÇÏ°í ·çÇÁ¸¦ µ¹¸ç 10°³ÀÇ ³­¼ö¸¦ »ý¼ºÇÏ¿© Ãâ·ÂÇß´Ù. ÀÌ ÄÚµå´Â ¾î¶² ½Ã½ºÅÛ¿¡¼­ ½ÇÇàÇϳª ´ÙÀ½ ³­¼öÀÇ ÁýÇÕÀ» »ý¼ºÇÑ´Ù. ½ÃÀÛÁ¡ÀÌ ¹Ù²î¸é ³­¼ö ÁýÇÕµµ ¹Ù²ï´Ù.

 

846085770

1112317425

1733337435

-1034181684

-859789045

804917861

644485921

468047019

-1054075489

-90591509

 

SQL ServerÀÇ ³­¼ö »ý¼º ÇÔ¼ö´Â RAND()À̸ç 0~1»çÀÌÀÇ ¹«ÀÛÀ§ ³­¼ö¸¦ »ý¼ºÇÑ´Ù. ÀÏÁ¤ ¹üÀ§ÀÇ ³­¼ö¸¦ ±¸ÇÏ´Â ÇÔ¼ö´Â µû·Î ¾øÀ¸¸ç ½Ç¼ö ³­¼ö¸¦ °öÇÏ°í ´õÇؼ­ ¿øÇÏ´Â ³­¼ö ¹üÀ§¸¦ Á¶Á¤ÇÑ´Ù. ¿¹¸¦ µé¾î 1 ~ 6 »çÀÌÀÇ ³­¼ö´Â ´ÙÀ½ ¸í·ÉÀ¸·Î »ý¼ºÇÑ´Ù.

 

SELECT ROUND(RAND() * 6 + 1, 0, 1);

 

RAND()´Â 0 ~ 0.999±îÁöÀÇ ³­¼ö¸¦ »ý¼ºÇÏ¸ç ¿©±â¿¡ 6À» °öÇϸé 0 ~ 5.999±îÁö°¡ µÇ¸ç 1À» ´õÇϸé 1 ~ 6.999±îÁöÀÇ ³­¼ö°¡ »ý¼ºµÈ´Ù. ÀÌ °ª¿¡¼­ ¼Ò¼öÁ¡À» À߶ó 1~6±îÁöÀÇ Á¤¼ö ³­¼ö·Î ¸¸µç´Ù. MSSQLÀº Á¤¼öÈ­ÇÏ´Â TRUNC ÇÔ¼ö°¡ ¾ø¾î ROUND(n, 0, 1)À» ´ë½Å »ç¿ëÇÑ´Ù. ÀÌ Äڵ尡 ¾î·Á¿ì¸é SELECT CAST(RAND() * 6 + 1 AS INT); Çü½ÄÀ¸·Î ij½ºÆÃÇصµ µÈ´Ù.

NEWID ÇÔ¼ö´Â GUID¸¦ »ý¼ºÇÑ´Ù. GUID´Â ½Ã°£°ú Àå¼Ò±îÁö °í·ÁÇÏ¿© »ý¼ºÇÏ´Â ¿ÏÀüÇÑ ³­¼öÀÌ¸ç ±æÀÌ°¡ 128ºñÆ®³ª µÇ¾î Àü¼¼°èÀûÀ¸·Î À¯ÀÏÇÑ ID¸¦ »ý¼ºÇØ ÁØ´Ù. °áÄÚ °°Àº ID¸¦ µÎ ¹ø »ý¼ºÇÏÁö ¾Ê´Â´Ù.

MariaDBÀÇ ³­¼ö »ý¼º ÇÔ¼öµµ SQL Server¿Í ¸¶Âù°¡Áö·Î RAND()ÀÌ´Ù. DBMS¸¶´Ù ³­¼ö¸¦ ¸¸µå´Â ¹æ¹ýÀº Á¦°¢°¢ÀÌÁö¸¸ °³³äÀ̳ª È°¿ëÇÏ´Â ¹æ¹ýÀº °ÅÀÇ ºñ½ÁÇÏ´Ù.

CONNECT BY

START WITH... CONNECT BY °èÃþ ±¸Á¶ÀÇ Å×À̺íÀ» ¼øȸÇÏ´Â ¸í·ÉÀÌ´Ù. ¾Õ¿¡¼­ ¸¸µç tDirectory Å×À̺íÀº ºÎ¸ð¿Í Àڽİ£ÀÇ °èÃþ °ü°è¸¦ Ç¥ÇöÇÏ´Â ÀüÇüÀûÀÎ ¿¹ÀÌ´Ù. ÀÌó·³ °èÃþ °ü°èÀÇ ÇàÀ» Ž»öÇÒ ¶§ °èÃþ Äõ¸®¸¦ »ç¿ëÇÑ´Ù. ±âº» Çü½ÄÀº ´ÙÀ½°ú °°´Ù.

 

START WITH ·çÆ®Á¶°Ç CONNECT BY ÀÚ½ÄÁ¶°Ç

 

Æ®¸®¸¦ ¸ðµÎ Ž»öÇÏ·Á¸é Çѹø¿¡´Â ¾ÈµÇ¸ç ³ëµå »çÀ̸¦ À̵¿ÇÏ¸ç ¹Ýº¹ÀûÀ¸·Î ¼øȸÇØ¾ß ÇÑ´Ù. START WITH ÀýÀº ÃÖÃÊ µü Çѹø ½ÇÇàµÇ¸ç ·çÆ®, Áï ¼øȸÀÇ ½ÃÀÛ ÁöÁ¡À» ÁöÁ¤ÇÑ´Ù. CONNECT BY ÀýÀº ÀÚ½ÄÀ» ãÀ» Á¶°ÇÀ» ÁöÁ¤ÇÏ¸ç ·çÆ®¿¡¼­ ½ÃÀÛÇÏ¿© °è¼Ó ´ÙÀ½ ÀÚ½ÄÀ» ã¾Æ ³ª°£´Ù. ÀÌ °úÁ¤Àº ´õ ÀÌ»ó ÀÚ½ÄÀÌ ¹ß°ßµÇÁö ¾ÊÀ» ¶§±îÁö ¹Ýº¹ÇÑ´Ù. tDirectory Å×ÀÌºí¿¡ ´ëÇØ ÀÌ ±¸¹®À» Àû¿ëÇØ º¸ÀÚ.

 

SELECT name, id, parent, level FROM tDirectory START WITH parent = 0 CONNECT BY PRIOR id = parent;

·çÆ®¸¦ ãÀ» Á¶°ÇÀº parent = 0, Áï ºÎ¸ð°¡ ¾ø´Â ³ëµå¸¦ ã´Â °ÍÀÌ´Ù. Æ®¸®ÀÇ ¿ë¾îÀ¸·Î °¢ Ç׸ñÀ» ³ëµå¶ó°í Ç¥ÇöÇϴµ¥ Å×ÀÌºí¿¡¼­´Â Çà Çϳª°¡ ³ëµåÀÌ´Ù. ·çÆ®´Â ½ÃÀÛÁ¡À̸ç À¯ÀÏÇؼ­ ´Ù¸¥ ³ëµå¿Í´Â ´Ù¸¥ Ư¼öÇÑ Á¶°ÇÀ¸·Î ãÀ» ¼ö ÀÖ´Ù. ´õ ÀÌ»ó À§ÂÊÀÌ ¾ø´Â ³ëµå°¡ ·çÆ®ÀÌ´Ù. °èÃþ ¼øȸÁß¿¡ ÀÇ»ç Ä÷³ levelÀÌ »ý¼ºµÇ¸ç ¼øȸ ´Ü°è¸¦ Ç¥ÇöÇÑ´Ù. ·çÆ®¸¦ ã¾ÒÀ» ¶§ 1ÀÌ¸ç ¾Æ·¡·Î ³»·Á°¥¼ö·Ï 1¾¿ Áõ°¡ÇÑ´Ù.

ÃÖÃÊ Root ÇàÀ» ¸ÕÀú ã°í ¾Æ·¡ÂÊÀ¸·Î ÀÚ½Ä ³ëµå¸¦ ã¾Æ ³ª°£´Ù. ÀÚ½ÄÀ» ãÀ» Á¶°ÇÀº »óÀ§ ÇàÀÇ id¿Í parent Çʵ尡 °°Àº ÇàÀ¸·Î ÁöÁ¤µÇ¾î ÀÖ´Ù. PRIOR ¿¬»êÀÚ´Â ¾Õ ´Ü°è¿¡¼­ ãÀº ÇàÀ» ÀǹÌÇϴµ¥ ÀÌ °æ¿ì´Â Root ÇàÀ» ÀǹÌÇÑ´Ù. ÇöÀç »óÀ§ÇàÀÎ RootÀÇ id´Â 1À̸ç Á¶°Ç¿¡ ÀÇÇØ parent°¡ 1ÀÎ Data, Program ÇàÀ» ã´Â´Ù. À̶§ levelÀº 1 Áõ°¡ÇÏ¿© 2°¡ µÈ´Ù.

ÀÌÈÄÀÇ °úÁ¤µµ µ¿ÀÏÇÏ¸ç ¸ðµç ³ëµå¿¡ ´ëÇØ °°Àº °úÁ¤À» ¹Ýº¹Çϸç À̶§¸¶´Ù levelÀÌ 1¾¿ Áõ°¡ÇÑ´Ù. DataÀÇ idÀÎ 2¸¦ parent·Î °¡Áö´Â Sound, Picutre¸¦ ã°í ProgramÀÇ idÀÎ 3À» parent·Î °¡Áö´Â GameÀ» ã´Â´Ù. ÀÌ ³ëµåµéÀº ¼Ò¼ÓÀº ´Þ¶óµµ ¸ðµÎ °°Àº 3·¹º§ÀÌ¸ç ºÎ¸ð ³ëµå ¾Æ·¡ÂÊ¿¡ ¹èÄ¡µÈ´Ù.

´ÙÀ½ ´Ü°è¿¡¼­ Sound, Picture´Â ÀÚ½Ä ³ëµå°¡ ¾ø°í GameÀÇ ÀÚ½Ä ³ëµåÀÎ StarCrate¸¦ ã´Â´Ù. ¸¶Áö¸·À¸·Î ãÀº StarCraft´Â level4ÀÌ¸ç ´õ ÀÌ»ó ÀÚ½Ä ³ëµå°¡ ¾øÀ¸¹Ç·Î ¿©±â¼­ ¼øȸ¸¦ Á¾·áÇÑ´Ù. À§ Äõ¸®´Â È®ÀÎÀ» À§ÇØ level ÀÇ»çÄ÷³À» ¼ýÀÚ·Î ¹Ù·Î Ãâ·ÂÇߴµ¥ À̸¦ Àß È°¿ëÇÏ¸é µé¿©¾²±â·Î °èÃþÀûÀÎ °ü°è¸¦ ½Ã°¢È­ÇÒ ¼ö ÀÖ´Ù.

 

SELECT LPAD(' ', (level - 1) * 2) || name as name, id, parent

FROM tDirectory START WITH parent = 0 CONNECT BY PRIOR id = parent;

level´ç ¾ÕÂÊ¿¡ °ø¹é 2°³¾¿ »ðÀÔÇÏ¿© µé¿©¾²¸é ÀÚ½ÄÀº ºÎ¸ðº¸´Ù µÎ Ä­ ¿À¸¥ÂÊ¿¡ Ç¥½ÃµÇ°í ÇüÁ¦´Â µé¿©¾²±â°¡ °°¾Æ ¼Ò¼ÓÀ» ½±°Ô È®ÀÎÇÒ ¼ö ÀÖ´Ù. ·çÆ®´Â ºÎ¸ð°¡ ¾øÀ¸´Ï µé¿©¾²Áö ¾Ê¾Æµµ »ó°ü ¾ø´Ù. ±×·¡¼­ level¿¡¼­ 1À» »« ÈÄ µé¿©¾µ Ä­¼öÀÎ 2¸¦ °öÇѸ¸Å­ÀÇ °ø¹éÀ» name ¾ÕÂÊ¿¡ µ¡ºÙÀδÙ. 4Ä­À¸·Î ´Ã¸®¸é Æ÷ÇÔ°ü°è°¡ ´õ ºÐ¸íÈ÷ º¸ÀδÙ.

PRIOR ¿¬»êÀÚ´Â ¾Õ ´Ü°è¿¡¼­ ãÀº ³ëµå¸¦ ÀǹÌÇÑ´Ù. PRIOR id = parent Á¶°ÇÀº Á÷Àü ´Ü°è¿¡¼­ ãÀº ÇàÀÇ id¸¦ parent·Î °¡Áö´Â ÇàÀ» ãÀ¸¶ó´Â ¶æÀÌ´Ù. ºñ±³ ¿¬»êÀÚ´Â ±³È¯ ¹ýÄ¢ÀÌ ¼º¸³ÇϹǷΠparent = PRIOR id·Î ½áµµ ¸¶Âù°¡ÁöÀÌ´Ù. "Á÷Àü ´Ü°è¿¡¼­ ãÀº ³ëµåÀÇ id¿Í ºÎ¸ðÀÇ ¹øÈ£°¡ °°´Ù."¶ó´Â Á¶°ÇÀ¸·Î ÀÚ½Ä ³ëµå¸¦ ã¾Æ ³ª°£´Ù. ±×·¯³ª ´ÙÀ½ µÎ ±¸¹®Àº Á¦´ë·Î µ¿ÀÛÇÏÁö ¾Ê´Â´Ù.

 

SELECT ... START WITH parent = 0 CONNECT BY id = parent;

SELECT ... START WITH parent = 0 CONNECT BY id = PRIOR parent;

 

PRIOR ¿¬»êÀÚ¸¦ »© ¹ö¸®¸é ÀÚ½ÅÀÇ id¿Í parent¸¦ ºñ±³Çϴµ¥ ÀÌ µÑÀÌ ÀÏÄ¡ÇÏ´Â, Áï ½º½º·Î°¡ ÀÚ½ÅÀÇ ºÎ¸ðÀÎ ³ëµå´Â ¾ø´Ù. PRIOR¸¦ parent¿¡ ºÙÀ̸é ÀüÇàÀÇ ºÎ¸ð°¡ ³ªÀÎ ÇàÀ» ãÀ¸¹Ç·Î ¼øȸ ¹æÇâÀÌ ¹Ý´ëÀÌ´Ù. µÎ ¸í·É ¸ðµÎ ÃÖÃÊÀÇ ³ëµåÀÎ Root¸¸ ã°í ´ÙÀ½ ³ëµå¸¦ ãÁö ¸øÇϹǷΠ´õ ÀÌ»ó ¼øȸÇÏÁö ¸øÇÑ´Ù.

PRIOR¸¦ ¹Ý´ëÂÊ¿¡ ºÙÀÌ¸é ¿ª¹æÇâÀ¸·Î ¼øȸÇϴµ¥ ÀÌ°ÍÀÌ ÀÇ¹Ì ÀÖÀ¸·Á¸é ·çÆ®°¡ ¾Æ´Ñ ¸¶Áö¸· ³ëµå¿¡¼­ºÎÅÍ ½ÃÀÛÇØ¾ß ÇÑ´Ù. START WITH Àý¿¡ À̸§ÀÌ StarCraftÀÎ ³ëµå¸¦ ¸ÕÀú ãµµ·Ï ÁöÁ¤ÇÏ°í ¾Õ ´Ü°è ³ëµåÀÇ parent°¡ ÀÚ½ÅÀÇ idÀÎ ³ëµå¸¦ ¼ø¼­´ë·Î ã¾Æ ³ª°£´Ù.

 

SELECT LPAD(' ', (level - 1) * 2) || name as name, id, parent

FROM tDirectory START WITH name = 'StartCraft' CONNECT BY id = PRIOR parent;

 

Game, Program, Root±îÁö ¿ª¹æÇâÀ¸·Î ¼øȸÇϸç Root´Â ´õ ÀÌ»ó ºÎ¸ð°¡ ¾ø¾î Á¾·áÇÑ´Ù. CONNECT BY ¹®Àº ÁöÁ¤ÇÑ Á¶°Ç¿¡ µû¶ó ´ÙÀ½ ³ëµå¸¦ ãÀ» »ÓÀ̹ǷΠ²À Á¤¹æÇâ ¼øȸ¸¸ °¡´ÉÇÑ °ÍÀº ¾Æ´Ï¸ç Á¶°Ç¸¸ ¸ÂÀ¸¸é ¾î¶² ½ÄÀ¸·Îµç ¼øȸÇÒ ¼ö ÀÖ´Ù. ´Ù¸¸, ¿ª¹æÇâ ¼øȸÀÏ ¶§´Â ³ëµå´ç ºÎ¸ð´Â Çϳª¸¸ Á¸ÀçÇÏ´Â °ÍÀÌ º¸ÅëÀÌ´Ù.

START WITH¿Í CONNECT BY´Â µÑ ´Ù Á¶°Ç¹®À̼­ WHERE Àý°ú ÀÛ¼ºÇÏ´Â ¹®¹ýÀÌ ºñ½ÁÇÏ¸ç ºÎ¸ðµç ÀÚ½ÄÀ̵ç ÇàÀ» Á¦ÇÑÇÏ´Â ¿ªÇÒÀ» ÇÑ´Ù. Á¶°ÇÀ» ÁöÁ¤ÇÏ¸é ²À Àüü Æ®¸®¸¦ ´Ù ¼øȸÇÏÁö ¾Ê°í ±× Áß ÀϺθ¦ Á¦¿ÜÇÒ ¼ö ÀÖ´Ù. °á°ú Æ®¸®°¡ ³Ê¹« ±í°í ÀåȲÇÏ´Ù¸é levelÀ» Á¦ÇÑÇÏ¿© ÀϺκи¸ Ç¥½ÃÇÑ´Ù.

 

SELECT LPAD(' ', (level - 1) * 2) || name as name, id, parent

FROM tDirectory START WITH parent = 0 CONNECT BY PRIOR id = parent AND level < 3;

 

CONNECT BY Á¶°Ç¿¡ level < 3 Á¶°ÇÀ» ÁöÁ¤Çß´Ù. ÀÌ·¸°Ô Çϸé leveÀÌ 1, 2ÀÎ ³ëµå¸¸ ³ªÅ¸³ª¸ç 3ÀÌ»óÀÎ ³ëµå´Â Á¦¿ÜµÈ´Ù. ÇàÀ» Á¦ÇÑÇÒ ¸ñÀûÀ̶ó¸é WHERE Àý¿¡ Á¶°ÇÀ» ±â¼úÇصµ µÈ´Ù. WHERE´Â START WITH º¸´Ù ´õ ¾ÕÂÊ¿¡ ¾´´Ù.

 

SELECT LPAD(' ', (level - 1) * 2) || name as name, id, parent

FROM tDirectory WHERE  level < 3 START WITH parent = 0 CONNECT BY PRIOR id = parent;

 

ÀÌ·¸°Ô Çصµ °á°ú´Â °°´Ù. ±×·¯³ª CONNECT BY¿¡ ÀÖ´Â Á¶°Ç°ú WHERE¿¡ ÀÖ´Â Á¶°ÇÀº ½ÇÇà ¼ø¼­°¡ ´Ù¸£´Ù. CONNECT BY°¡ ¸ÕÀú ½ÇÇàµÇ¸ç WHERE´Â ¼øȸ°¡ ³¡³­ ÈÄ ½ÇÇàÇϵµ·Ï µÇ¾î ÀÖ¾î ´ÙÀ½°ú °°Àº Â÷ÀÌ°¡ ÀÖ´Ù.

 

- CONNECT BYÀÇ Á¶°ÇÀº ¾Æ¿¹ ¼øȸÇÒ ¶§ °á°ú¿¡¼­ Á¦¿ÜÇØ ¹ö¸°´Ù. ¹Ý¸é WHERE Á¶°ÇÀº ¼øȸ¸¦ ¸¶Ä£ ÈÄ¿¡ °á°ú¿¡¼­ Á¦¿ÜÇÑ´Ù. µû¶ó¼­ WHERE Á¶°ÇÀ¸·Î ÇÊÅ͸µÇϸé Ç¥½ÃÇÏÁöµµ ¾ÊÀ» ³ëµå¸¦ ã´Â ¼ÀÀ̾ ´õ ´À¸®´Ù.

- CONNECT BY¿¡¼­ Á¦¿ÜÇÑ ÇàÀº ±× ÀڽıîÁö °°ÀÌ Á¦¿ÜµÇ´Âµ¥ ºñÇØ WHERE¿¡¼­ Á¦¿ÜÇÑ ÇàÀº ÀڽŸ¸ Á¦¿ÜÇÒ »Ó ÀÚ½ÄÀº ÇÊÅ͸µÇÏÁö ¾Ê´Â´Ù.

 

ÀÌ Â÷ÀÌÁ¡À» È®ÀÎÇØ º¸°í ½ÍÀ¸¸é À§ µÎ Äõ¸®ÀÇ Á¶°ÇÀ» level != 3À¸·Î ¹Ù²ã º¸¸é µÈ´Ù. level 3À» Á¦¿ÜÇÏ´Â ¶È°°Àº Á¶°ÇÀÌ¶óµµ CONNECT BY´Â ·¹º§ 3À» ¼øȸ¿¡¼­ Á¦¿ÜÇϹǷΠ±× ÀÌÇÏÀÇ ·¹º§µµ ³ªÅ¸³ªÁö ¾Ê´Â´Ù. ¹Ý¸é WHERE´Â ¼øȸ¸¦ ÀÏ´Ü ´Ù ÇÑ ÈÄ ±× »óÅ¿¡¼­ 3¸¸ Á¦¿ÜÇÑ´Ù. ±×·¡¼­ 3 ÀÌÇÏÀÇ ·¹º§, ÀÌ °æ¿ì´Â ·¹º§ 4ÀÇ StarCraft°¡ Àִ°¡ ¾ø´Â°¡¸¸ Â÷ÀÌ°¡ ³­´Ù.

START WITH´Â ·çÆ®¸¦ ÁöÁ¤ÇÏ´Â Áß¿äÇÑ ¿ªÇÒÀ» ÇÏÁö¸¸ ¹Ýµå½Ã ·çÆ®¸¦ ÁöÁ¤ÇØ¾ß ÇÏ´Â °ÍÀº ¾Æ´Ï´Ù. Áß°£ÀÇ ÇÑ ³ëµå¸¦ ÁöÁ¤ÇÏ¸é ±× ÀÌÇÏÀÇ ÀÚ½Ä ³ëµå¸¸ ã´Â´Ù. ´ÙÀ½ ¸í·ÉÀº Data ÀÌÇÏÀÇ ÀÚ½Ä ³ëµå¸¸ ã´Â´Ù.

 

SELECT LPAD(' ', (level - 1) * 2) || name as name, id, parent

FROM tDirectory START WITH name = 'Data' CONNECT BY PRIOR id = parent;

START WITH ÀýÀ» ¾Æ¿¹ »ý·«ÇØ ¹ö¸®¸é °¢ µð·ºÅ丮ÀÇ ÀÚ½ÄÀ» ¸ðµÎ ã´Â´Ù. º°µµÀÇ ·çÆ®¸¦ ÁöÁ¤ÇÏÁö ¾Ê¾ÒÀ¸´Ï °¢°¢ÀÇ µð·ºÅ丮°¡ ·çÆ®°¡ µÈ´Ù. ¿ø·¡ Å×ÀÌºí¿¡ ÀÖ´ø 7°³ÀÇ Çà¿¡ ´ëÇØ °³º°ÀûÀ¸·Î ¼øȸÇÑ ÇÕÁýÇÕÀ» »ý¼ºÇÑ´Ù.

 

SELECT LPAD(' ', (level - 1) * 2) || name as name, id, parent

FROM tDirectory CONNECT BY PRIOR id = parent;

´ÙÀ½Àº CONNECT BY ±¸¹® ½ÇÇàÁß¿¡ ¾µ ¼ö ÀÖ´Â ¿©·¯ °¡Áö ÀåÄ¡(¿¬»êÀÚ, ÀÇ»çÄ÷³, ÇÔ¼ö)ÀÌ´Ù.

 

ÀåÄ¡

¼³¸í

CONNECT_BY_ROOT Ä÷³

·çÆ®·Î ÁöÁ¤µÈ ÇàÀÌ¸ç ·çÆ®ÀÇ Ä÷³À» ÂüÁ¶ÇÑ´Ù.

COONECT_BY_ISLEAF

ÀÚ½ÄÀÌ ¾ø´Â ³ëµåÀ̸é 1, ¾Æ´Ï¸é 0ÀÌ´Ù.

CONNECT_BY_ISCYCLE

¼øȯ ÂüÁ¶°¡ ¹ß»ýÇßÀ¸¸é 1ÀÌ´Ù.

SYS_CONNECT_BY_PATH(Ä÷³, ±¸ºÐÀÚ)

·çÆ®¿¡¼­ºÎÅÍ ÇöÀç ³ëµå±îÁöÀÇ ¸ðµç ³ëµå¿¡ ´ëÇÑ Ä÷³°ªÀ» ±¸ºÐÀÚ·Î ¿¬°áÇÑ °æ·Î

 

»ç¿ë ¹æ¹ýÀÌ º¹ÀâÇÏÁö ¾Ê¾Æ Çѹø¾¿ »ç¿ëÇØ º¸¸é ¿ëµµ¸¦ ½±°Ô ¾Ë ¼ö ÀÖ´Ù. ƯÈ÷ °æ·Î¸¦ Á¶»çÇÏ´Â SYS_CONNECT_BY_PATH ÇÔ¼ö°¡ ½Ç¿ëÀûÀÌ´Ù.

 

SELECT LPAD(' ', (level - 1) * 2) || name as name, id, parent

, CONNECT_BY_ROOT name as root, CONNECT_BY_ISLEAF as leaf,

SYS_CONNECT_BY_PATH(name, '/')

FROM tDirectory START WITH parent = 0 CONNECT BY PRIOR id = parent;

 

CONNECT BY ±¸¹®Àº °èÃþÀûÀÎ Å×ÀÌºí¿¡ ÁÖ·Î »ç¿ëÇÏÁö¸¸ ÀÏ¹Ý Å×ÀÌºí¿¡µµ ¹Ýº¹ÀûÀΠ󸮸¦ À§ÇØ °£ÆíÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½ ¿¹¸¦ º¸ÀÚ.

 

SELECT dbms_random.random FROM dual CONNECT BY level <= 5;

 

dualÀº ÇϳªÀÇ Çุ °¡Áö´Â ÃÊ°£´Ü Å×À̺íÀÌ´Ù. À¯ÀÏÇÑ Çà x¸¦ ·çÆ®·Î ÇÏ¸ç °¢ ÇàÀÌ ÇϳªÀÇ ³ëµå°¡ µÇ¾î ·¹º§ÀÌ °è¼Ó Áõ°¡ÇÑ´Ù. ·¹º§ÀÌ 5 ÀÌÇÏÀÏ ¶§±îÁö·Î Á¦ÇÑÇÏ¸é ´Ù¼¸¹ø ½ÇÇàµÇ¾î ´Ù¼¸°³ÀÇ ³­¼ö¸¦ »ý¼ºÇÑ´Ù. ·çÇÁ¸¦ ¾²Áö ¾Ê°íµµ ÀÏÁ¤ Ƚ¼ö ¹Ýº¹ÇÏ´Â È¿°ú¸¦ ½±°Ô ±¸ÇöÇÒ ¼ö ÀÖ´Ù.