|
|
||
|
ÀÌÆäÀÌÁöÀÇ ÀúÀÛ±ÇÀº |
||
|
Á¦¸ñ: ¿À¶óŬ ½Ç¹«È°¿ë SQL Æ©´×2 (Second Edition) |
ÀúÀÚ¿¡°Ô ÀÖ½À´Ï´Ù |
|
|
ÀÛ¼º: Á¤ÀçÁØ(rgbi3307(at)nate.com) |
ÃÖ±Ù¼öÁ¤ÀÏ:2011-10-04 |
|
|
|
|
|
|
¸ñ Â÷ |
|
|
|
Á¦1ºÎ SQL Æ©´×À» À§ÇÑ ¹è°æÁö½Ä |
1 |
|
|
1. DBMS ¼¹ö |
2 |
|
|
1.1 DBMS ¼¹ö ¼Ò°³ |
|
|
1.2 ¸Þ¸ð¸® ±¸Á¶Ã¼¿Í ÇÁ·Î¼¼½ºµé |
|
|
1.3 µ¥ÀÌÅͺ£À̽º ±¸Á¶Ã¼¿Í ¹°¸®Àû ÀúÀåÀåÄ¡ |
|
|
1.4 ¿À¶óŬ ³×Æ®¿öÅ© ¼ºñ½º |
|
|
1.5 ±¸Á¶ÈµÈ ÁúÀÇ ¾ð¾î(SQL) |
|
|
|
|
|
|
2. DBMS ½ºÅ°¸¶ |
27 |
|
|
2.1 ½ºÅ°¸¶ °´Ã¼µé ¼Ò°³ |
|
|
2.2 Å×À̺í |
|
|
2.3 ºä(Views) |
|
|
2.4 À妽º |
|
|
2.5 Á¶Á÷ÈµÈ À妽º Å×À̺í |
|
|
2.6 Ŭ·¯½ºÅÍ |
|
|
2.7 ÇØ½Ã Ŭ·¯½ºÅÍ |
|
|
|
|
|
|
3. SQL ¿ÉƼ¸¶ÀÌÀú ¹× ½ÇÇà°èȹ |
65 |
|
|
3.1 SQL 󸮱¸Á¶ ÀÌÇØ |
|
|
3.2 ¿ÉƼ¸¶ÀÌÀú ÀÌÇØ |
|
|
3.3 ¿ÉƼ¸¶ÀÌÀúÀÇ SQL ½ÇÇà°èȹ(EXPLAIN PLAN) |
|
|
3.4 ¿ÉƼ¸¶ÀÌÀúÀÇ Á¢±Ù¹æ½Ä ¹× ¸ñÇ¥¼±Åà |
|
|
3.5 ºñ¿ë±âÁØ ¿ÉƼ¸¶ÀÌÀú(CBO)ÀÇ ÀÌÇØ |
|
|
3.6 CBO¿¡¼ »ç¿ëÇÏ´Â Á¢±Ù°æ·Î¿¡ ´ëÇÑ ÀÌÇØ |
|
|
3.7 Á¶Àο¡ ´ëÇÑ ÀÌÇØ |
|
|
3.8 ¿ÉƼ¸¶ÀÌÀú ÈùÆ® |
|
|
|
|
|
|
4. SQL ¿ÉƼ¸¶ÀÌÀú ¿¬»êÀÚµé |
152 |
|
|
4.1 ¿ÉƼ¸¶ÀÌÀú°¡ ¿¬»êÀÚµéÀ» ½ÇÇàÇÏ´Â ¹æ¹ý |
|
|
4.2 ¿ÉƼ¸¶ÀÌÀú°¡ SQL ¹®ÀåµéÀ» º¯È¯ÇÏ´Â ¹æ¹ý |
|
|
|
|
|
|
5. ¿ÉƼ¸¶ÀÌÀú Åë°èÀÚ·á ¼öÁý |
194 |
|
|
5.1 Åë°èÀÚ·á¿¡ ´ëÇÑ ÀÌÇØ |
|
|
5.2 Åë°èÀÚ·á ¹ß»ý |
|
|
5.3 Åë°èÀÚ·á »ç¿ë |
|
|
5.4 È÷½ºÅä±×·¥ »ç¿ë |
|
|
|
|
|
|
6. SQL Trace ¿Í TKPROF |
217 |
|
|
6.1 SQL Trace ¿Í TKPROF ÀÌÇØ |
|
|
6.2 SQL Trace ¿Í TKPROF »ç¿ë |
|
|
6.3 TKPROF ÇØ¼®½Ã ÇÔÁ¤À» ÇÇÇÏ´Â ¹æ¹ý |
|
|
6.4 TKPROF Ãâ·Â ¿¹Á¦ |
|
|
|
|
|
|
7. ¿À¶óŬ Æ©´× ÀýÂ÷ |
248 |
|
|
7.1 Æ©´× ÀýÂ÷ ¿ä¾à |
|
|
7.2 SQL Æ©´× ¸ñÇ¥ |
|
|
7.3 ÀÚ¿ø Áý¾àÀûÀÎ SQL¿¡¼ µ¥ÀÌÅÍ ¼öÁý°ú ½Äº° |
|
|
7.4 SQL ¹®Àå Æ©´× ÀÌÇØ |
|
|
|
|
|
|
Á¦2ºÎ SQL ¼º´É ºÐ¼® |
268 |
|
|
8. Á¢±Ù³í¸® ¼º´É ºÐ¼® |
269 |
|
|
8.1 µîÈ£ ¹× ºÎÁ¤Á¶°Ç ºÐ¼® |
|
|
8.2 ¹üÀ§Á¶°Ç ºÐ¼® |
|
|
8.3 ÁýÇÕ¿¬»êÀÚÀÇ Á¤·Ä(Sort) ºÐ¼® |
|
|
|
|
|
|
9. À妽º ¼º´É ºÐ¼® |
289 |
|
|
9.1 B-Tree À妽º ¼º´ÉºÐ¼® |
|
|
9.2 °áÇÕ À妽º ¼º´ÉºÐ¼® |
|
|
9.3 ÇÔ¼ö±â¹Ý À妽º ¼º´ÉºÐ¼® |
|
|
9.4 À妽º »ç¿ëÁ¦¾î |
|
|
|
|
|
|
10.Á¶ÀÎ ¼º´É ºÐ¼® |
350 |
|
|
10.1 µå¶óÀ̺ù Å×ÀÌºí ºÐ¼® |
|
|
10.2 Á¶ÀÎ ¹æ½Ä Á¦¾î |
|
|
|
|
|
|
11.¼ºêÄõ¸® ¼º´É ºÐ¼® |
372 |
|
|
11.1 ¼ºêÄõ¸® ºÐ¼® |
|
|
11.2 IN, EXISTS ºÐ¼® |
|
|
|
|
|
|
Á¦3ºÎ SQL Æ©´× ½Ç¹«»ç·Ê |
387 |
|
|
12.À妽º Ȱ¿ë Æ©´× |
388 |
|
|
12.1 À妽º ÈùÆ® »ç¿ë |
|
|
12.2 È¿À²ÀûÀÎ À妽º Ä÷³ »ç¿ë |
|
|
12.3 ¸Å°³º¯¼ö·Î Àü´ÞµÇ´Â °ª¿¡ ´ëÇÑ Æ©´× |
|
|
|
|
|
|
13.Á¶ÀÎ Æ©´× |
401 |
|
|
13.1 Nested Loop Á¶ÀÎ |
|
|
13.2 Hash Á¶ÀÎ |
|
|
13.3 Nested Loop Á¶Àΰú Hash Á¶ÀÎÀÇ Â÷ÀÌÁ¡ |
|
|
13.4 Á¶ÀÎ ¼ø¼ÀÇ Á߿伺 |
|
|
13.5 󸮹üÀ§ÀÇ ÃÖ¼ÒÈ |
|
|
13.6 µå¶óÀ̺ù Å×À̺íÀÇ Á߿伺 |
|
|
13.7 ¿¬°á°í¸® Ä÷³ÀÇ Á߿伺 |
|
|
|
|
|
|
14.ORÁ¶°Ç Æ©´× |
438 |
|
|
14.1 º¹ÀâÇÑ OR Á¶°Ç ´Ü¼øÈ(Decode Ȱ¿ë) |
|
|
14.2 OR Á¶°ÇÀ» Union All·Î ó¸® |
|
|
14.3 Union AllÀ» Inlist Iterator·Î Æ©´×Çϱâ |
|
|
|
|
|
|
15.ºÎºÐ¹üÀ§ ó¸® |
445 |
|
|
15.1 ºÎºÐ¹üÀ§ 󸮷ΠÀ¯µµ |
|
|
15.2 semi-join Æ©´×(EXISTS,IN Ȱ¿ë) |
|
|
15.3 anti-join Æ©´×(NOT EXISTS, NOT IN Ȱ¿ë) |
|
|
15.4 À¥°Ô½ÃÆÇ ÇüÅÂÀÇ ºÎºÐ¹üÀ§ ó¸® |
|
|
|
|
|
|
16.´Ù¾çÇÑ Á¶°Ç¹® Æ©´× |
473 |
|
|
16.1 Äõ¸®¹®¿¡¼ if Á¶°Ç ó¸® |
|
|
16.2 Case ¹®À» Ȱ¿ëÇÑ Äõ¸® |
|
|
16.3 Çà¿ º¯È¯ Äõ¸® |
|
|
16.4 Äõ¸®¹® ÅëÇÕÀ¸·Î SQL È£Ã⠴ܼøÈ |
|
|
|
|
|
|
17.ÀûÀýÇÑ ÇÔ¼ö»ç¿ë Æ©´× |
486 |
|
|
17.1 Á¶°ÇÀý(Where) ¾È¿¡¼ ÇÔ¼ö »ç¿ëÀÇ ¿µÇâ |
|
|
17.2 ÀûÀýÇÑ ÇÔ¼öÀÇ »ç¿ë |
|
|
17.3 ÇÔ¼öÀ» »ç¿ëÇÏ¿© º¹ÀâÇÑ Äõ¸®À» ´Ü¼øÈ |
|
|
17.4 ºÐ¼®(Analytic) ¹× Åë°è(Ranking) ÇÔ¼öÀÇ È°¿ë |
|
|
|
|
|
|
|
|
|
|
ºÎ·Ï |
506 |
|
|
ºÎ·Ï1. ¿À¶óŬ10g Á¦Ç°ºñ±³ ¹× ¼³Ä¡ |
|
|
ºÎ·Ï2. »ç¿ø°ü¸®DB ½ºÅ°¸¶ »ý¼º |
|
|
ºÎ·Ï3. SQL ±¸¹®ºÐ¼® Åë°è󸮱â SqlArt |
|
|
|
|
|
|
|
|
|
Ã¥ ±¸¸Å
eb05. ¿À¶óŬ ½Ç¹«È°¿ë SQL Æ©´×2
Ã¥³»¿ë Àüü¿ä¾à (Second Edition)
|
Á¦1ºÎ´Â ¿À¶óŬ SQLÀ» Æ©´×Çϱâ À§Çؼ ¾Ë¾Æ¾ß ÇÏ´Â Áö½ÄµéÀ» ¼³¸íÇÑ´Ù. 1Àå°ú 2ÀåÀº DBMS ±¸¼º¿ø¸®¿¡ ´ëÇØ¼ ¼³¸íÇϰí, 3ÀåºÎÅÍ 6Àå±îÁö´Â SQL ½ÇÇൿÀÛÀ» ½Ç½À¿¹Á¦¸¦ ÅëÇÏ¿© È®ÀÎÇÒ ¼ö ÀÖµµ·Ï ±¸¼ºÇÑ´Ù. ¸¶Áö¸·À¸·Î 7Àå¿¡¼ ¿À¶óŬ Æ©´×ÀÇ ÀüüÀûÀÎ È帧¿¡ ´ëÇÏ¿© ±â¼úÇÑ´Ù.
l Á¦1ÀåÀº ¿À¶óŬ DBMS ¼¹öÀÇ ³í¸®Àû ¹× ¹°¸®Àû ±¸Á¶¿¡ ´ëÇØ¼ ¼³¸íÇÑ´Ù. µ¥ÀÌÅͺ£À̽º ±¸Á¶Ã¼¿Í ÀúÀåÀåÄ¡°ü¸®, ¸Þ¸ð¸® ±¸Á¶Ã¼¿Í ÇÁ·Î¼¼½ºµé, ¿À¶óŬ ³×Æ®¿öÅ© ¼ºñ½º µîÀÇ ¼³¸íÀ» ÅëÇÏ¿© ¿À¶óŬ ¼¹öÀÇ ³»ºÎÀûÀÎ µ¿ÀÛÀ» ÀÌÇØÇÑ´Ù.
l Á¦2ÀåÀº µ¥ÀÌÅͺ£À̽º¸¦ ³í¸®ÀûÀÎ ±¸Á¶Ã¼µé·Î Ç¥ÇöÇÏ´Â ½ºÅ°¸¶¿¡ ´ëÇØ¼ ¼³¸íÇÑ´Ù. ½ºÅ°¸¶ °´Ã¼µé, Å×À̺í, ºä, À妽º, Ŭ·¯½ºÅÍ µîÀÇ ±¸Á¶¿¡ ´ëÇÏ¿© ÀÌÇØÇÑ´Ù.
l Á¦3ÀåÀº ¿À¶óŬ ¿ÉƼ¸¶ÀÌÀú¿¡ ´ëÇØ¼ ÀÌÇØÇϰí, ¿ÉƼ¸¶ÀÌÀú°¡ »êÃâÇÏ´Â SQL ½ÇÇà°èȹ¿¡ ´ëÇØ¼ ¼³¸íÇÑ´Ù. ½ÇÇà°èȹ ÆÇµ¶À» ÅëÇÏ¿©, ¿ÉƼ¸¶ÀÌÀú°¡ SQL ¹®ÀåµéÀ» ¾î¶»°Ô ½ÇÇàÇÏ´ÂÁö ÀÌÇØÇϰí, ½ÇÇà°èȹÀ» ¿øÇÏ´Â ¹æÇâÀ¸·Î Á¦¾îÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù.
l Á¦4ÀåÀº ¾Õ¿¡¼ ¼Ò°³ÇÑ À̷еéÀ» È®ÀåÇØ¼, ¿ÉƼ¸¶ÀÌÀú°¡ ÇÏ´Â Àϵé(¿¬»êÀÚ)¿¡ ´ëÇØ¼ »ó¼¼ÇÏ°Ô ¼³¸íÇÑ´Ù. ºñ¿ë±âÁØ ¿ÉƼ¸¶ÀÌÀú(CBO)°¡ ¾î¶»°Ô Ç¥Çö½ÄµéÀ» Æò°¡Çϰí Á¤ÇØÁø ¿¬»êµéÀ» ¼öÇàÇÏ´ÂÁö ±â¼úÇÑ´Ù. µ¿ÀÏÇÑ ¸ñÇ¥¸¦ Á» ´õ È¿À²ÀûÀ¸·Î ´Þ¼ºÇϱâ À§ÇÏ¿©, CBO°¡ ¾î¶»°Ô SQL ¹®ÀåµéÀ» ´Ù¸¥ °ÍÀ¸·Î º¯È¯ÇÏ´ÂÁö¿¡ ´ëÇØ¼µµ ¼³¸íÇÑ´Ù.
l Á¦5ÀåÀº ºñ¿ë±âÁØ ¿ÉƼ¸¶ÀÌÀú(CBO)¸¦ À§ÇÑ Åë°èÀÚ·áµé ¼öÁý°ú, À̰ÍÀÇ »ç¿ëÀÌ ¿Ö Áß¿äÇÑÁö¸¦ ¼³¸íÇÑ´Ù. Åë°èÀÚ·á ¼öÁý¹æ¹ý°ú µ¥ÀÌÅÍ »çÀü¿¡ »êÃâµÇ¾î ÀÖ´Â Åë°èÀÚ·áµéÀ» Ȱ¿ëÇÏ´Â °Í¿¡ ´ëÇØ¼ ÀÌÇØÇÑ´Ù.
l Á¦6ÀåÀº sql_trace¸¦ ÅëÇÏ¿© SQL ½ÇÇàÀ» ÃßÀûÇÑ ³»¿ëÀ» ÆÇµ¶ÇÏ´Â µµ±¸ÀÎ TKPROF¿¡ ´ëÇÏ¿© ¼³¸íÇÑ´Ù. À̰ÍÀ» »ç¿ëÇÏ¿© ¼¹ö¿¡¼ ½ÇÇàµÇ´Â SQLµéÀÇ ½ÇÇà ºñ¿ëÀ» Æò°¡Çϰí, SQL Æ©´×¿¡ Ȱ¿ëÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÑ´Ù.
l Á¦7ÀåÀº ¿À¶óŬ Æ©´×ÀÇ ÀüüÀûÀÎ È帧¿¡ ´ëÇÏ¿© ±â¼úÇÑ´Ù. ¿À¶óŬ Æ©´× ÀýÂ÷¿¡ °üÇÑ Á¤º¸µéÀ» ¼Ò°³Çϰí, ¿À¶óŬ SQL Æ©´×¿¡ ´ëÇÏ¿© ÀÚ¼¼ÇÏ°Ô ¼³¸íÇÑ´Ù.
Á¦2ºÎ´Â SQL ¿¹Á¦µéÀ» ½Ç½ÀÇϸé¼, Á¦1ºÎ¿¡¼ ÇнÀÇÑ À̷еéÀ» ½ÇÁ¦ÀûÀ¸·Î È®ÀÎÇϰí, SQLÀÇ ¼º´ÉÀ» Æò°¡ÇÒ ¼ö ÀÖµµ·Ï ±¸¼ºÇÑ´Ù. ½Ç½Ã°£À¸·Î SQL ½ÇÇàºñ¿ëÀ» Æò°¡Çϱâ À§Çؼ sql_trace, TKPROF ¸í·ÉÀ» Ȱ¿ëÇϹǷÎ, ¹Ýµå½Ã Á¦6ÀåÀÇ ³»¿ëµéÀ» ÀÌÇØÇϰí ÀÖ¾î¾ß ÇÑ´Ù.
l Á¦8ÀåÀº Where Á¶°ÇÀýÀÌ ´ÜÀÏ ¼ú¾î·Î µÇ¾î ÀÖ´Â Äõ¸®¹®ÀÇ ¼º´ÉÀ» ºñ±³ ºÐ¼®ÇÑ´Ù. ´ÜÀÏ ¼ú¾î ³í¸®°¡ µîÈ£, ºÎÁ¤, ¹üÀ§ Á¶°ÇÀ¸·Î µÇ¾îÀÖ´Â Äõ¸®¹®¿¡ ´ëÇØ¼, ¿ÉƼ¸¶ÀÌÀú°¡ ¾î¶² ½ÇÇà°èȹÀ» »êÃâÇÏ´ÂÁö ÀÌÇØÇÑ´Ù. ¶ÇÇÑ, ÁýÇÕ¿¬»êÀÚÀÇ Á¤·Ä(Sort) ÀÛ¾÷¿¡ ´ëÇÑ ºñ¿ëµµ ºÐ¼®ÇÑ´Ù.
l Á¦9ÀåÀº ½Ç½À¿¹Á¦µéÀ» ÅëÇÏ¿© À妽º¿¡ ´ëÇÑ ¼º´ÉÀ» ºÐ¼®ÇÏ°í Æ©´×¿¡ Ȱ¿ëÇÏ´Â ¹æ¹ýÀ» ±â¼úÇÑ´Ù. ¿ÉƼ¸¶ÀÌÀú°¡ À妽º¸¦ Ȱ¿ëÇÒ ¶§, Ŭ·¯½ºÅ͸µ ÆÑÅÍ(Clustering Factor), ¼±Åõµ(Selectivity), ¹Ðµµ(Density), ¹°¸®ÀûÀÎ disk I/O µîÀ» ¾î¶»°Ô Æò°¡ÇÏ´ÂÁö ¼³¸íÇÑ´Ù. ¾Æ¿ï·¯, °áÇÕ À妽º¿Í ÇÔ¼ö±â¹Ý À妽º¸¦ ½Ç½À¿¹Á¦¸¦ ÅëÇÏ¿© ÀÌÇØÇϰí, À妽º »ç¿ëÀ» Á¦¾îÇÏ´Â ¹æ¹ýµéÀ» ±â¼úÇÑ´Ù.
l Á¦10ÀåÀº 2°³ ÀÌ»óÀÇ Å×ÀÌºí¿¡ ÀÖ´Â Çà(rows)µéÀ» »óÈ£ ¿¬°áÇÏ´Â Á¶ÀÎ(Join)¿¡ ´ëÇØ¼ ¼º´É ºÐ¼®ÇÑ´Ù. SQL ¿¹Á¦µéÀ» ½Ç½ÀÇϸé¼, Á¶ÀÎÀÇ ¼º´ÉÀ» Æò°¡ÇÏ´Â ¹æ¹ýµéÀ» ±â¼úÇϰí, ½ÇÇà È¿À²À» ÃÖÀûÈÇÏ´Â ¿ä¼Òµé¿¡ ´ëÇØ¼ ¼³¸íÇÑ´Ù.
l Á¦11ÀåÀº ¿ÉƼ¸¶ÀÌÀú°¡ ¼ºêÄõ¸®¸¦ ¾î¶»°Ô ó¸®ÇÏ´ÂÁö ½Ç½ÀÇÑ´Ù. SQL¹®¾È¿¡ ¶Ç ´Ù¸¥ SQL¹®ÀÌ ÁßøµÈ ÇüÅ·ΠµÇ¾î ÀÖ´Â ¼ºêÄõ¸®¸¦ ¿ÉƼ¸¶ÀÌÀú°¡ ¾î¶»°Ô Æò°¡ÇÏ´ÂÁö È®ÀÎÇϰí, ÃÖÀûÈ ÇÏ´Â ¿ä¼Òµé¿¡ ´ëÇÏ¿© ¼³¸íÇÑ´Ù. ¾Æ¿ï·¯, ¼ºêÄõ¸® ÇüÅ·ΠSQLÀ» ºÎºÐ¹üÀ§ ó¸®ÇÏ´Â IN°ú EXISTS ±¸¹®À» ¿¹Á¦¸¦ ÅëÇÏ¿© ½Ç½ÀÇϰí, ½ÇÇàºñ¿ëÀ» Æò°¡ÇÑ´Ù.
Á¦3ºÎ´Â ½Ç¹«¿¡¼ SQL Æ©´×ÇÑ »ç·ÊµéÀ» ¼³¸íÇÑ´Ù. ½Ç¹«¿¡¼ »ç¿ëÇÑ Äõ¸®¹®µéÀÇ ¹®Á¦Á¡À» ºÐ¼®ÇÏ¿©, ¾î¶»°Ô ½ÇÇàºñ¿ëÀ» ÃÖÀûÈ ÇÏ´ÂÁö ±â¼úÇÑ´Ù.
l Á¦12ÀåÀº À妽º¸¦ Ȱ¿ëÇÑ Æ©´×»ç·Ê¸¦ ¼³¸íÇÑ´Ù. À妽º ÈùÆ® »ç¿ë, È¿À²ÀûÀÎ À妽º Ä÷³ »ç¿ë, ¸Å°³º¯¼ö·Î Àü´ÞµÇ´Â °ª¿¡ ´ëÇÑ Æ©´×»ç·Ê¸¦ º¸¿©ÁØ´Ù.
l Á¦13ÀåÀº Á¶ÀÎ Æ©´×»ç·Ê¸¦ ¼³¸íÇÑ´Ù. Nested Loop, Hash Á¶ÀÎ Â÷ÀÌÁ¡, Á¶ÀÎ ¼ø¼ÀÇ Á߿伺, 󸮹üÀ§ÀÇ ÃÖ¼ÒÈ, µå¶óÀ̺ù Å×ÀÌºí ¹× ¿¬°á°í¸® Ä÷³ÀÇ Á߿伺¿¡ ´ëÇÑ »ç·Ê¸¦ º¸¿©ÁØ´Ù.
l Á¦14ÀåÀº ORÁ¶°Ç Æ©´×»ç·Ê¸¦ ¼³¸íÇÑ´Ù. º¹ÀâÇÑ ORÁ¶°Ç ´Ü¼øÈ(Decode Ȱ¿ë), OR Á¶°ÇÀ» Union All·Î ó¸®, Union AllÀ» Inlist Iterator·Î Æ©´×ÇÑ »ç·Ê¸¦ º¸¿©ÁØ´Ù.
l Á¦15ÀåÀº ºÎºÐ¹üÀ§ 󸮸¦ »ç¿ëÇÑ Æ©´×»ç·Ê¸¦ º¸¿©ÁØ´Ù. ºÎºÐ¹üÀ§ 󸮷ΠÀ¯µµ, semi-join Æ©´×(EXISTS,IN Ȱ¿ë), anti-join Æ©´×(NOT EXISTS, NOT IN Ȱ¿ë), À¥°Ô½ÃÆÇ ÇüÅÂÀÇ ºÎºÐ¹üÀ§ ó¸® »ç·Ê¸¦ ¼³¸íÇÑ´Ù.
l Á¦16ÀåÀº ´Ù¾çÇÑ Á¶°Ç¹® Æ©´×»ç·Ê¸¦ º¸¿©ÁØ´Ù. Äõ¸®¹®¿¡¼ if Á¶°Ç ó¸®, Case ¹®À» Ȱ¿ëÇÑ Äõ¸®, Çà¿ º¯È¯ Äõ¸®, Äõ¸®¹® ÅëÇÕÀ¸·Î SQL È£Ã⠴ܼøÈµîÀÇ »ç·Ê¸¦ ±â¼úÇÑ´Ù.
l Á¦17ÀåÀº ÀûÀýÇÑ ÇÔ¼ö»ç¿ë Æ©´×»ç·Ê¸¦ ¼³¸íÇÑ´Ù. Á¶°ÇÀý(Where) ¾È¿¡¼ ÇÔ¼ö »ç¿ëÀÇ ¿µÇâ, ÀûÀýÇÑ ÇÔ¼öÀÇ »ç¿ë, ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© º¹ÀâÇÑ Äõ¸®¸¦ ´Ü¼øÈ, ºÐ¼®(Analytic) ¹× Åë°è(Ranking) ÇÔ¼öÀÇ È°¿ëµîÀ» º¸¿©ÁØ´Ù.
ºÎ·Ï¿¡¼´Â ¿À¶óŬ10g¿Í »ç¿ø°ü¸®DB ½ºÅ°¸¶ ¼³Ä¡¹æ¹ýÀ» ¼³¸íÇÑ´Ù. À̰ÍÀ¸·Î ½Ç½À¿¹Á¦µéÀ» ½ÇÇàÇÒ ¼ö Àִ ȯ°æÀÌ ±¸ÃàµÈ´Ù. ¾Æ¿ï·¯ SQL ±¸¹® Åë°è󸮱âÀÎ SqlArt¸¦ ¼Ò°³ÇÑ´Ù.
|
Ã¥ ±¸¸Å
eb05. ¿À¶óŬ ½Ç¹«È°¿ë SQL Æ©´×2
¹®¼ Ç¥ÁØ
Á¦#Àå ´ëÁ¦¸ñ Ç¥ÁØ ¹ÙÅÁ 20 ÁøÇϰÔ, ¹®¼Ç¥ÁØ
º»¹® ³»¿ë(contents) ÆùÆ®´Â Ç¥ÁØ ¹ÙÅÁ Å©±â 10
#.# ÁßÁ¦¸ñ Ç¥ÁØ ¹ÙÅÁ ÆùÆ® Å©±â 16 ÁøÇϰÔ
º»¹® ³»¿ë(contents) ÆùÆ®´Â Ç¥ÁØ ¹ÙÅÁ Å©±â 10
¼ÒÁ¦¸ñ Ç¥ÁØ ¹ÙÅÁ ÆùÆ® Å©±â 14 ÁøÇϰÔ
º»¹® ³»¿ë(contents) ÆùÆ®´Â Ç¥ÁØ ¹ÙÅÁ Å©±â 10
¿¹Á¦´Â »ç°¢Çü Å׵θ® ¾È¿¡ ÀÖÀ½. ¿¹Á¦ÄÚµå ¸íĪ(Caption)ÀÌ ÀÖ´Â °ÍÀº ¿ÜºÎÆÄÀÏ·Î Á¸ÀçÇÔ.
¿¹Á¦ÄÚµå ¸íĪ(Caption)Àº (½Ç½ÀÄõ¸®¹®)SQL##_###.sql (SQL#Àå_#¼ø¹ø .sql ÇüÅÂÀÇ ÆÄÀϸí)
¿¹Á¦ÄÚµå ¸íĪ(Caption)Àº (TKPROF)SQL##_###.prf (SQL#Àå_#¼ø¹ø .prf ÇüÅÂÀÇ ÆÄÀϸí)
¿¹Á¦ ¾ÈÀÇ ³»¿ëÀº MS Gothic ÆùÆ® Å©±â´Â 9. ¿¹Á¦ ³»¿ëÀº ÆíÁý¾øÀÌ ±×´ë·Î...
(½Ç½ÀÄõ¸®¹®)SQL01_001.sql
(TKPROF)SQL01_001.prf
|
MS Gothic ÆùƮũ±â 9
call count cpu elapsed disk query current rows ------- ------ -------- ---------- ---------- ---------- ---------- ---------- Parse 1 0.00 0.00 0 1 0 0 Execute 1 0.00 0.00 0 0 0 0 Fetch 2 0.26 0.26 0 6237 0 1 ------- ------ -------- ---------- ---------- ---------- ---------- ---------- total 4 0.26 0.26 0 6238 0 1
Rows Row Source Operation ------- --------------------------------------------------- 1 SORT AGGREGATE (cr=6237 pr=0 pw=0 time=260076 us) 1000000 TABLE ACCESS FULL TBL_NORMAL (cr=6237 pr=0 pw=0 time=1000028 us) |
Ç¥¾ÈÀÇ ³»¿ëÀº MS Gothic ÆùÆ® Å©±â´Â 9
Ç¥¿¡ ´ëÇÑ ¸íĪ(Caption)Àº ¾øÀ½
|
Å×À̺í¸í |
½ÇÇà°èȹ |
count |
cpu |
elapsed |
disk |
query |
current |
rows |
|
TBL_NORMAL |
TABLE ACCESS FULL |
5 |
2.29 |
2.90 |
1476 |
6238 |
4 |
1 |
|
TBL_RANDOM |
SORT GROUP BY |
5 |
4.84 |
5.71 |
6377 |
6259 |
4 |
1 |
º»¹®¾ÈÀÇ ±×¸²Àº MS-Word ¿¡¼ ÆíÁýµÈ °Í°ú JPG ÆÄÀÏ·Î »ðÀÔµÈ °Í 2°¡Áö Á¾·ù°¡ ÀÖÀ½.
¾Æ·¡ ±×¸²Àº MS-Word ¿¡¼ ÆíÁýµÈ °ÍÀ̹ǷΠ¿ÜºÎÆÄÀÏÀÌ ¾øÀ½.
MS-Word ¿¡¼ ÆíÁýµÈ ±×¸²Àº ¸íĪ(Caption)ÀÌ ¾øÀ½.


¾Æ·¡ ±×¸²Àº JPG ÆÄÀÏ·Î ¸¸µé¾îÁø °ÍÀ̹ǷΠ¿ÜºÎÆÄÀÏ·Î Á¸ÀçÇÔ.(JPGÆÄÀÏ »ðÀÔ)
±×¸² ¸íĪ(Caption)Àº ¿ÜºÎÆÄÀÏ À̸§°ú µ¿ÀÏÇÔ.
(±×¸²)IMG##_### (IMG#Àå_#¼ø¹ø .jpg ÇüÅÂÀÇ ÆÄÀϸí)
(±×¸²)IMG01_001

ÀúÀÚ ¼Ò°³
|
Á¤ÀçÁØ
ÇÊÀÚ´Â ÇÐâ½ÃÀý ¸¶ÀÌÅ©·Î¸¶¿ì½º¸¦ ¸¸µé¾ú°í, 10³âµ¿¾È ½×¾Æ¿Â IT°ü·Ã °³¹ß °æÇèÀ» ¹ÙÅÁÀ¸·Î ¡°¿À¶óŬ½Ç¹«È°¿ëSQLÆ©´×(ÇýÁö¿ø)¡±À̶ó´Â Ã¥À» ÁýÇÊÇÏ¿´´Ù. ¼¿ï´ëº´¿ø Àü»ê½Ç¿¡¼ µ¥ÀÌÅͺ£À̽º °ü·Ã ÀÏÀ» Çϸé¼, ÇÐâ½ÃÀýºÎÅÍ ²ÙÁØÈ÷ ÇØ¿Â ¸®´ª½º ¿¬±¸¸¦ °è¼ÓÇϰí ÀÖ´Ù. ƯÈ÷, ½ºÅÄÆ÷µå´ëÇб³ÀÇ John L. Hennessy ±³¼öÀÇ Àú¼ ¡°Computer Organization and Design¡± Ã¥À» ÀÐ°í ±íÀº °¨¸íÀ» ¹Þ¾ÒÀ¸¸ç, ÄÄÇ»Åͱ¸Á¶ ¹× ÀڷᱸÁ¶ È¿À²¼º ¿¬±¸¸¦ ÅëÇÑ ±â¼ú¼Àû ÁýÇÊ¿¡ ³ë·ÂÇϰí ÀÖ´Ù. ¶ÇÇÑ, ¿Â¶óÀÎ »ó¿¡¼ Ä¿³Î¿¬±¸È¸(http://www.kernel.kr/) À¥»çÀÌÆ®¸¦ ¿î¿µÇÏ¸ç °ü·Ã±â¼úµéÀ» °øÀ¯Çϰí ÀÖ´Ù.
ÀúÀÚ ¼¹® ÇÊÀÚ´Â ÁßÇб³ ½ÃÀý, 8ºñÆ® ÄÄÇ»Å͸¦ óÀ½À¸·Î Á¢ÇÏ¸é¼ ½ÅºñÇÑ ¸¶·Â°úµµ °°Àº È£±â½É¿¡ ºüÁ³´ø ±â¾ïÀÌ ¾ÆÁ÷µµ »ý»ýÇÏ´Ù. ±× ´ç½Ã¿¡´Â °í°¡¿´´ø ÄÄÇ»Å͸¦ »ç°í ½Í¾î, »õº®¿¡ ½Å¹®¹è´ÞÇÏ´Â ¾ÆµéÀÇ ¸ð½ÀÀÌ ¾È¾²·¯¿ö ºÎ¸ð´ÔÀº 8ºñÆ® ÄÄÇ»Å͸¦ »çÁ̴ּÙ. ÇÏÁö¸¸, ÇÊÀÚ´Â ±×°ÍÀ» ±×³É Àç¹ÌÀÖ´Â °ÔÀÓ±â Á¤µµ·Î¸¸ »ç¿ëÇß´ø °ÍÀ» Áö±Ýµµ ÈÄȸÇϰí ÀÖ´Ù. ±×¶§´Â 8ºñÆ® ¸¶ÀÌÅ©·ÎÇÁ·Î¼¼¼(CPU)·Î ¾ÖÇûçÀÇ 6502, ÀÚÀÌ·Î±× Z80 ÀÌ Ãâ½ÃµÇ´ø ½Ã±â¿´°í, ÀÎÅÚÀÇ 16ºñÆ® ¸¶ÀÌÅ©·ÎÇÁ·Î¼¼¼ÀÎ 8086ÀÌ °³¹ßµÇ¾î, µð½ºÅ© µå¶óÀ̺ê¿Í °°Àº ÁÖº¯ÀåÄ¡µéÀ» ±¸µ¿ÇÏ´Â ¿î¿µÃ¼Á¦ÀÎ DOS(Disk Operating System)°¡ ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®»ç¿¡ ÀÇÇØ¼ °³¹ßµÇ¾î PC½ÃÀåÀÌ Çü¼ºµÇ´ø ½Ã±â¿´´Ù. ´ç½ÃÀÇ ÇÊÀÚ´Â ÄÄÇ»ÅÍÀÇ ±¸¼º¿ø¸®¸¦ ÀÌÇØÇÏÁö ¸øÇϰí ÀÖ¾ú´Ù.
ÀÌÈÄ, ´ëÇÐÀ» ´Ù´Ï¸é¼ 1¼¼´ë ±â°è¾î(Assembly)·Î ¸¶ÀÌÅ©·ÎÇÁ·Î¼¼¼¸¦ ÅëÇÑ Á¦¾î±â¼úÀ» ¹è¿ì¸é¼ ¹Ì·Î¸¦ ã¾Æ´Ù´Ï´Â ¼ÒÇü ·Îº¿Á¦ÀÛ¿¡ ÁýÁßÇØ º¸±âµµ Çϰí, FORTRAN, COBOL, C++, Delphi µîÀ¸·Î ÀÀ¿ëÇÁ·Î±×·¡¹ÖÀ» Çϱ⵵ Çß¾ú´Ù. ÇÏÁö¸¸, À̶§µµ ¿î¿µÃ¼Á¦°¡ Á¦°øÇØ ÁÖ´Â °³¹ßȯ°æ°ú ¼ÒÇÁÆ®¿þ¾î °³¹ßµµ±¸(SDK)µé¿¡ ´ëÇÑ È°¿ë¹ý¸¸ Áß¿äÇÏ°Ô »ý°¢ÇÏ´Ù º¸´Ï, ¿øÃµ ±â¼úÀ» ÀÍÈ÷°íÀÚ ÇÏ´Â ³ë·ÂÀÌ ºÎÁ·Çß´Ù. ÇÊÀÚ°¡ ÇöÀç ´À³¢°í ÀÖ´Â ÄÄÇ»ÆÃÀÇ ±âº» ±â¼úÀº, ÄÄÇ»ÅͰ¡ ÀÌÇØÇÏ´Â ÀڷᱸÁ¶¸¦ ¾î¶»°Ô È¿À²ÀûÀ¸·Î ±¸¼ºÇϴ°¡ÀÌ´Ù. ¿î¿µÃ¼Á¦(OS)´Â °¢Á¾ ÄÄÇ»ÅÍ Çϵå¿þ¾îµéÀ» È¿À²ÀûÀ¸·Î Á¦¾îÇϱâ À§ÇÑ ÀڷᱸÁ¶ÀÇ ÁýÇÕüÀ̸ç, ÇÁ·Î±×·¡¹ÖÀº ÄÄÇ»ÅͰ¡ ¿øÇÏ´Â ÀڷᱸÁ¶¸¦ ÄÚµùÇÏ´Â ÀÛ¾÷ÀÌ´Ù. DBMS(DataBase Management System)´Â ÄÄÇ»Å͸¦ ÅëÇÏ¿© ÀڷḦ ÅëÇÕÀûÀ¸·Î °ü¸®Çϱâ À§Çؼ ÀÚ·á󸮸¦ Ç¥ÁØÈÇÑ ¼ÒÇÁÆ®¿þ¾îÀ̸ç, ÄÄÇ»ÅͰ¡ ÀÌÇØÇÏ´Â ÀڷᱸÁ¶¸¦ È¿À²ÀûÀ¸·Î ÄÚµùÇϴ ȯ°æÀ» Á¦°øÇØ ÁØ´Ù.
±¹¾î,¿µ¾î,¼öÇÐ ¼ºÀûÀ» Çлý¼ö¸¸Å ÀÔ·Â ¹Þ¾Æ¼ °ú¸ñ¸¶´Ù ÇÕ°è, Æò±ÕÀ» »êÃâÇÏ¿© ÆòÁ¡À» ¸Å±â°í µî¼öÀ» °è»êÇÏ´Â ¼ºÀûó¸® ÇÁ·Î±×·¡¹ÖÀ» ÇÑ´Ù°í °¡Á¤ÇØ º¸ÀÚ. ¼ºÀû ÀÚ·á°¡ ÀúÀåµÇ¾î ÀÖ´Â ÆÄÀÏ¿¡¼ µ¥ÀÌÅ͸¦ ÀÐÀ¸¸é¼, ÀýÂ÷ÀûÀ¸·Î for loop¹®À» µ¹¸®°í, ÇÕ°è¿Í Æò±ÕÀ» °è»êÇÏ¿© sortingÀ» ÅëÇÏ¿© µî¼ö¸¦ Á¤Çϰí, ¿øÇÏ´Â µ¥ÀÌÅ͸¦ search ÇÏ´Â °ÍÀ» ÀÏÀÏÈ÷ ÄÚµùÇÏ¿© ±¸ÇöÇØ¾ß ÇÑ´Ù. ±×·¯³ª, DBMS°¡ ÀÌ·¯ÇÑ ÀÛ¾÷À» È¿À²ÀûÀ¸·Î ó¸®ÇÒ ¼ö Àִ ǥÁØÀ» Á¦°øÇϱ⠶§¹®¿¡, ´ëºÎºÐÀÇ µ¥ÀÌÅÍ Ã³¸®´Â DBMSÀ» ÅëÇÏ¿© Çϰí ÀÖ°í, ¸¹Àº ¹ßÀüÀ» °ÅµìÇϰí ÀÖ´Ù. DBMSÀ» Ȱ¿ëÇÒ ¶§, ÀýÂ÷ÀûÀÎ ÇÁ·Î±×·¥ ÄÚµùÇϵíÀÌ ¹Ýº¹(loop)°ú Á¶°Ç(if)À» ¹«ºÐº°ÇÏ°Ô »ç¿ëÇϸé ó¸®È¿À²ÀÌ ½É°¢ÇÏ°Ô ÀúÇϵǹǷÎ, DBMS ³»ºÎ¿¡¼ 󸮵Ǵ ÀڷᱸÁ¶¸¦ ÀÌÇØÇϰí, À̰ÍÀ» Çѹø¿¡ È¿À²ÀûÀ¸·Î Äõ¸®ÇÏ´Â °ÍÀÌ ¹«¾ùº¸´Ù Áß¿äÇÏ´Ù.
µ¥ÀÌÅÍó¸®ÀÇ ÇÙ½ÉÀº sorting °ú search ÀÌ´Ù. À̰ÍÀº ó¸®ÇϰíÀÚ ÇÏ´Â µ¥ÀÌÅÍÀÇ ¼ö¿Í ³»ºÎ ¾Ë°í¸®Áò¿¡ µû¶ó¼ ¾öû³ ½ÇÇà¼Óµµ Â÷À̰¡ ¹ß»ýÇÑ´Ù. ¼ö¹é¸¸~¼öõ¸¸°³ÀÇ µ¥ÀÌÅ͸¦ ó¸®ÇϰíÀÚ ÇÑ´Ù¸é, ÀڷᱸÁ¶¸¦ ÃÖ´ëÇÑ È¿À²ÀûÀ¸·Î ¼³°èÇØ¾ß Çϸç, Åë°èºÐÆ÷, ÀúÀ广½Ä ¶ÇÇÑ °í·ÁÇØ¾ß ÇÑ´Ù. DBMS Æ©´×Àº ÀÚ·á󸮸¦ ºñÈ¿À²ÀûÀ¸·Î ÇÏ´Â ºÎºÐÀ» ã¾Æ¼ ¹Ù·ÎÀâ¾Æ °¡´Â ÀÛ¾÷À̸ç, ¸íÈ®ÇÑ ¿ø¸® ÀÌÇØ¸¦ ¹ÙÅÁÀ¸·Î ÇÑ´Ù.
¿ì¸®´Â ÇÁ·Î±×·¥À» ´«¿¡ º¸ÀÌ´Â ¿ÜÇüÀ̳ª µðÀÚÀΰú °°Àº ½Ã°¢ÀûÀÎ ¸é¸¸ °Á¶ÇÏ´Â °æÇâÀÌ ÀÖ´Ù. ÇÏÁö¸¸ °ÇÃ๰ ³»ºÎÀÇ ¼³°è¿Í ±âÃʰø»ç¸¦ ưưÈ÷ ÇÏÁö ¾ÊÀ¸¸é, °ÇÃ๰¿¡ ´ëÇÑ ¾ÈÁ¤¼º°ú ½Å·Úµµ°¡ ¶³¾îÁ®, Àå±âÀûÀÎ ¹ßÀüÀ» ±â´ëÇÒ ¼ö ¾øµíÀÌ, ÇÁ·Î±×·¡¹Ö ¶ÇÇÑ ±âÃÊÁö½ÄÀÌ µÇ´Â ÀڷᱸÁ¶¿Í ³»ºÎ ¾Ë°í¸®ÁòÀÇ ¸íÈ®ÇÑ ÀÌÇØ¸¦ ¹ÙÅÁÀ¸·Î ÄÚµùÇØ¾ß ÇÑ´Ù. ¿À´Ã³¯ Á¤º¸Ã³¸®¸¦ ÇϰíÀÚ ÇÏ´Â ¸ðµç ¾÷¹«ºÐ¾ß¿¡¼ DBMS¸¦ Ȱ¿ëÇϰí ÀÖ°í, ¿À¶óŬÀº ¼±µµÀûÀÎ ¿ªÇÒÀ» Çϰí ÀÖ´Ù. Á¤º¸Ã³¸® ºÐ¾ß¿¡¼ °æÀï·ÂÀ» °®Ãß¾î ³ª°¡±â À§Çؼ ¿À¶óŬ DBMS¸¦ ÀÌÇØÇϰí, Àß È°¿ëÇÏ´Â °ÍÀº Áß¿äÇÑ °¡Ä¡°¡ µÇ¾ú´Ù. ¾Æ¿ï·¯, µ¥ÀÌÅͺ£À̽ºÀÇ ¿ø¸®¸¦ ÀÌÇØÇÏ°í °³¹ßÇØ ³ª°¡°íÀÚ ÇÏ´Â ³ë·ÂÀÌ ÇÊ¿äÇÏ´Ù.
ÀÌ Ã¥ÀÚ´Â ÇÊÀÚ°¡ ½Ç¹«¿¡¼ ¿À¶óŬ DBMS¸¦ »ç¿ëÇÏ¸é¼ ½×¾Æ¿Â Áö½ÄµéÀ» Á¤¸®Çϰí, ¿À¶óŬ ±â¼ú¹®¼ ¿ø¹®À» Âü°íÇÏ¸é¼ ¿öµå·Î ÇϳªÇϳª ŸÀÌÇÎÇÏ¿© ÁýÇÊÇÑ °ÍÀÌ´Ù. ¹®À帶´Ù ÇÊÀÚÀÇ ¶¡¹æ¿ïÀÌ ½º¸ç ÀÖÀ½À» ÀÌÇØÇØ ÁÖ±æ ¹Ù¶õ´Ù. ³»¿ëÀ» Á¤È®ÇÏ°í °£°áÇÏ°Ô Ç¥ÇöÇϰíÀÚ ³ë·ÂÇßÀ¸³ª, ¿À·ù³ª ¹ÌÈíÇÑ Á¡µéÀÌ ÀÖÀ» ¼ö ÀÖÀ¸¸ç, ÀÌ·¯ÇÑ Á¡µéÀÌ ¹ß°ßµÇ¸é ¸¹Àº Á¶¾ð°ú Ãæ°í Àֱ⸦ ¹Ù¶õ´Ù. ¾Æ¿ï·¯, Ã¥ÃâÆÇ¿¡ ¸¹Àº µµ¿òÀ» ÁֽŠÇýÁö¿øÀÇ °ü°èÀںеé°ú ÀÌ¿µÈñ ºÎÀå´Ô²² °¨»çÀÇ ¸¶À½À» ÀüÇÑ´Ù.
Á¤ÀçÁØ(³×ÀÌÆ®¿Â ¸Þ½ÅÀú: rgbi3307@nate.com)
|
Ã¥ ±¸¸Å
eb05. ¿À¶óŬ ½Ç¹«È°¿ë SQL Æ©´×2
|
|
|
|
|
|
||
|
ÀÌÆäÀÌÁöÀÇ ÀúÀÛ±ÇÀº |
||
|
Á¦¸ñ: ¿À¶óŬ ½Ç¹«È°¿ë SQL Æ©´×2 (Second Edition) |
ÀúÀÚ¿¡°Ô ÀÖ½À´Ï´Ù |
|
|
ÀÛ¼º: Á¤ÀçÁØ(rgbi3307(at)nate.com) |
ÃÖ±Ù¼öÁ¤ÀÏ:2011-10-04 |