2. SQLÀÇ ±âÃÊ (I) ¿©±â¼­´Â SQL¿¡ ´ëÇÑ ±âÃÊÀûÀÎ ³»¿ëÀ» ¼Ò°³ÇÕ´Ï´Ù. ¿ì¼± SQLÀÇ Æ¯¼º¿¡ ´ëÇؼ­ °£´ÜÈ÷ ¾Ë¾Æº¸ÁÒ. SQLÀº ºñÇÁ·Î½ÃÀú ¾ð¾îÀÌ´Ù. ¿©·¯ºÐÀº SQLÀ» ÀÌ¿ëÇÏ¿© °Ë»öÇÒ µ¥ÀÌÅÍ°¡ ¹«¾ùÀÎÁö¸¦ DATABASE¿¡ ¾Ë·ÁÁְųª ¶Ç´Â ±×°ÍÀÌ ¾î¶»°Ô ÇؾßÇÒ °ÍÀÎÁö¸¦ ¾Ë·ÁÁÖÁö ¾Ê°í º¯°æÀ» ¼öÇàÇÕ´Ï´Ù. SQLÀº ¾î¶°ÇÑ Á¦¾î È帧 ÇÁ·Î±×·¡¹Ö ±¸Á¶µµ Á¦°øÇÏÁö ¾Ê´Â´Ù. SQLÀº ÇÔ¼ö Á¤Àǹ®, ¹Ýº¹¹®, if¹® µîÀ» ÀÌ¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. SQLÀº °øÁ¤µÈ µ¥ÀÌÅÍŸÀÔ°ú ÁýÇÕÀ» Á¦°øÇÑ´Ù. ÀÌ°Ç »ç¿ëÀÚ°¡ »õ·Î¿î µ¥ÀÌÅÍŸÀÔÀ» Á¤ÀÇÇÒ ¼ö ¾ø´Ù´Â ¶æÀÔ´Ï´Ù. C ¾ð¾î °°Àº °ÍÀº ƯÁ¤ ¸ñÀûÀ» À§Çؼ­ µ¥ÀÌÅÍŸÀÔÀ» Á¤ÀÇÇÒ ¼ö ÀÖÁö¸¸, SQLÀº ¾î¶² ¿­À» ÀÛ¼ºÇϰųª º¯°æÇÒ ¶§ ÀÏ·ÃÀÇ »çÀüÁ¤ÀÇ µ¥ÀÌÅÍŸÀÔÀ¸·ÎºÎÅÍ Ç׸ñÀ» ¼±ÅÃÇϵµ·Ï ¿ä±¸ÇÕ´Ï´Ù. 1) Å×À̺íÀº Çà°ú ¿­ÀÌ´Ù. ¾Õ¼­ ¸»¾¸µå¸° °Í °°ÀÌ °ü°èÇü ÀÌ·ÐÀÇ Á߽ɿ¡´Â Å×À̺íÀ̶õ °³³äÀÌ ÀÖ½À´Ï´Ù. Å×À̺íÀº ÀÏ·ÃÀÇ ¼Ó¼ºÀ̳ª ¿­°ú 0°³ ÀÌ»óÀÇ ÇàÀ¸·Î ±¸¼ºµÇ¾î ÀÖÀ¸¸ç, °¢ ÇàÀº ¼Ó¼º °ªÀÇ ÁýÇÕÀÔ´Ï´Ù. °ü°èÇü µ¥ÀÌÅͺ£À̽º°¡ ³ª¿À±â Àü¿¡´Â °èÃþÀû À¯Çü(Hierarchial) ¶Ç´Â ³×Æ®¿öÅ© À¯Çü(Network)À¸·Î ºÐ·ùµÇ¾ú´ø µ¥ÀÌÅͺ£À̽º °ü¸® ½Ã½ºÅÛ¿¡ ÀÇÁ¸Çß½À´Ï´Ù. ÀÌ µÎ°¡Áö À¯ÇüÀº ´ÜÁ¡ÀÌ Çϳª ÀÖ¾ú´Âµ¥, ±âÁ¸ µ¥ÀÌÅÍ ¿ä¼ÒÀÇ ÀϺθ¦ º¯°æÇϰųª »õ·Î¿î µ¥ÀÌÅÍ ¿ä¼Ò¸¦ Ãß°¡ÇÏ·Á¸é ±âÁ¸ÀÇ ÇÁ·Î±×·¥À» ±¤¹üÀ§ÇÏ°Ô ¼öÁ¤ÇØ¾ß Çß½À´Ï´Ù. ±×·¯³ª °ü°èÇü µ¥ÀÌÅͺ£À̽º¿¡¼­´Â µ¥ÀÌÅÍ ¿ä¼Ò(¿­)¸¦ º¯°æÇÏ´Â °ÍÀÇ È¿°ú´Â ¹Ì¼¼ÇÕ´Ï´Ù. °ü°èÇü µ¥ÀÌÅͺ£À̽º¿¡¼­, ¿­ÀÇ Å©±âÀÇ Áõ°¨Àº Å×ÀÌºí ³»ÀÇ ´Ù¸¥ ¿­·ÎºÎÅÍ µ¶¸³ÀûÀ̱⠶§¹®ÀÌÁÒ. ±×¸¸Å­ ¼ÒÇÁÆ®¿þ¾î À¯Áö/°ü¸® ºñ¿ëÀÌ °¨¼ÒÇÑ´Ù´Â ¾ê±â°¡ µË´Ï´Ù. °ü°èÇü ÀÌ·ÐÀÇ ±ÔÄ¢ Áß Çϳª´Â ¿­ÀÇ ¼ø¼­°¡ Áß¿äÇÏÁö ¾Ê´Ù´Â Á¡ÀÔ´Ï´Ù. ÀÌ ¸»Àº »ç½Ç °³³äÀûÀÎ ¼öÁØ¿¡¼­ Å×À̺íÀÇ ¿­ÀÌ ¿©·¯ºÐÀÌ ¿øÇÏ´Â ¼ø¼­·Î °Ë»öµÉ ¼ö ÀÖ´Ù´Â °ÍÀ» ÀǹÌÇÕ´Ï´Ù. ¹°·Ð ¹°¸®ÀûÀÎ ¼ø¼­´Â Á¸À縦 ÇÏ°ÚÁÒ. °ü°èÇü ÀÌ·ÐÀÇ ¶Ç´Ù¸¥ ±ÔÄ¢Àº ÇàÀÇ ¼ø¼­°¡ Áß¿äÇÏÁö ¾Ê´Ù´Â Á¡ÀÌÁÒ. ÇàÀÌ ¾î¶² ƯÁ¤ ¼ø¼­·Î ÀúÀåµÇÁö ¾Ê´Â´Ù´Â ¶æÀÌ ¾Æ´Ï¶ó ÇàÀÌ Å×À̺í·ÎºÎÅÍ °Ë»öµÉ ¹æ½Ä¿¡ À־ ÇÔÃàÀûÀÎ ¼ø¼­°¡ ¾ø´Ù´Â °ÍÀ» ÀǹÌÇÕ´Ï´Ù. µû¶ó¼­ ¾î¶² Å×À̺íÀÇ ÇàÀÌ Æ¯Á¤ ¼ø¼­·Î º¹±ÍµÇ±â¸¦ ¿øÇÑ´Ù¸é, ±× ¼ø¼­¸¦ ÁöÁ¤ÇØ ÁÖ¾î¾ß ÇÕ´Ï´Ù. 2) µ¥ÀÌÅÍ °Ë»ö ¹× º¯°æ SQL¹®Àº ´ÙÀ½ ¼¼ °¡Áö ¿µ¿ªÀ¸·Î Å©°Ô ºÐ·ùÇÒ ¼ö ÀÖ½À´Ï´Ù. DML(Data Manipulation Language) µ¥ÀÌÅ͸¦ °Ë»öÇϰųª º¯°æÇÏ´Â µ¥ÀÌÅÍ Á¶ÀÛ ¾ð¾î DDL(Data Definition Language) µ¥ÀÌÅÍÀÇ ±¸Á¶¸¦ Á¤ÀÇÇÏ´Â µ¥ÀÌÅÍ Á¤ÀÇ ¾ð¾î DCL(Data Control Language) µ¥ÀÌÅͺ£À̽º »ç¿ëÀÚ¿¡°Ô ºÎ¿©ÇÑ Æ¯±ÇÀ» Á¤ÀÇÇÏ´Â µ¥ÀÌÅÍ Á¦¾î ¾ð¾î DML¿¡´Â ´ÙÀ½ ³× °¡Áö ±âº» ¹®ÀåÀÌ ÀÖ½À´Ï´Ù. SELECT ¹® : Å×À̺í·ÎºÎÅÍ Çà °Ë»ö INSERT ¹® : Å×ÀÌºí¿¡ Çà Ãß°¡ UPDATE ¹® : Å×ÀÌºí ³»ÀÇ ±âÁ¸ Çà º¯°æ DELETE ¹® : Å×ÀÌºí¿¡¼­ Çà Á¦°Å ´ÙÀ½Àº SQLÀÇ Æ¯¼ºÀ̶ó°í ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸ðµç SQL ¹®Àº ¼¼¹ÌÄÝ·Ð(;)¿¡ ÀÇÇØ Á¾·áµÈ´Ù. SQL ¹®Àº ¸í·á¼ºÀ» À§ÇØ ÇÑ °³ ¶óÀÎÀÇ Áß¾Ó¿¡ À§Ä¡½ÃÅ°°Å³ª ¿©·¯ ¶óÀÎÀ¸·Î ºÐÇÒÇÒ ¼ö ÀÖ´Ù. SQLÀº ´ë¼Ò¹®ÀÚ¸¦ ±¸º°ÇÏÁö ¾Ê´Â´Ù. 3) SELECT ¹®ÀÇ ±¸¹® SELECT¹®Àº ³× °³ÀÇ DML¹® Áß¿¡¼­ °¡Àå ¸¹ÀÌ ¾²ÀÌ´Â ±¸¹®ÀÔ´Ï´Ù. ±×¸®°í UPDATE, INSERT, DELETE ¹® ³»¿¡¼­ ¼­ºê Äõ¸®·Î½á Á¸ÀçÇÒ ¼ö ÀÖ½À´Ï´Ù. SELECT ¹®Àº ÃÖ¼ÒÇÑ ´ÙÀ½ÀÇ µÎ ¿ä¼Ò·Î ±¸¼ºµË´Ï´Ù. SELECT LIST : °Ë»öµÉ ¿­ÀÇ LIST FROM ±¸ : ÇàÀ» °Ë»öÇϱâ À§ÇÑ TABLE ±×·³ °£´ÜÇÑ ¿¹¸¦ º¸ÁÒ. ´ÙÀ½Àº Çлý(Student)À̶õ Table¿¡¼­ À̸§(name)À» °Ë»öÇÏ´Â Äõ¸®ÀÔ´Ï´Ù. SELECT name FROM student; °á°ú´Â ´ÙÀ½°ú °°ÀÌ ³ª¿À°ÚÁÒ. NAME ---------- ¹Ú»ó¿í ¹èÈ¿ÀÏ ÀÌ¿øÈñ À±¸é¿ë ÃÖÀÎÈñ ½Å°üÈ£ ... ±¸±³¶ô ÇлýÀÇ À̸§°ú ³ªÀ̸¦ ¾Ë°í ½ÍÀ¸¸é Èñ¸ÁÇÏ´Â ¼ø¼­·Î ¿­À» ³ª¿­ÇÏ¸é µË´Ï´Ù. SELECT name, age FROM student; °á°ú´Â ´ÙÀ½°ú °°ÀÌ ³ª¿É´Ï´Ù. NAME AGE ---------- ---- ¹Ú»ó¿í 29 ¹èÈ¿ÀÏ 26 ÀÌ¿øÈñ 50 À±¸é¿ë 28 ÃÖÀÎÈñ 27 ½Å°üÈ£ 28 ... ±¸±³¶ô 28 Å×À̺íÀÇ ¸ðµç ¿­À» °Ë»öÇÏ·Á¸é *À» »ç¿ëÇÏ¸é µË´Ï´Ù. SELECT * FROM student; NAME AGE ENG_SCORE KOR_SCORE ... AVR_SCORE ---------- --- ---------- ---------- ... ---------- ¹Ú»ó¿í 29 90 85 ... 93 ¹èÈ¿ÀÏ 26 70 90 ... 80 ÀÌ¿øÈñ 50 30 10 ... 15 À±¸é¿ë 28 100 100 ... 100 ÃÖÀÎÈñ 27 90 90 ... 94 ½Å°üÈ£ 28 85 100 ... 96 ... ... ... ... ... ... ±¸±³¶ô 28 0 10 5 Âü! ORACLE¿¡¼­´Â DUALÀ̶ó´Â À¯Æ¿¸®Æ¼ TABLEÀ» »ç¿ëÇؼ­ »ê¼ú¿¬»êÀ̳ª ÇöÀç½Ã°£ µîÀ» ¾Ë ¼ö ÀÖ¾î¿ä. SELECT 3.14159*20 FROM DUAL; 3.14159*20 ---------- 62.8318 SELECT SYSDATE FROM DUAL; SYSDATE --------- 05-JUN-98 ¸ðµç SELECT ¹®¿¡ ÀÇÇؼ­ º¹±ÍµÈ °á°ú´Â Àӽà Å×À̺íÀ» ±¸¼ºÇÕ´Ï´Ù. °¢ °Ë»öµÈ ·¹ÄÚµå´Â ÀÌ Àӽà Å×ÀÌºí ³»¿¡¼­ ÇϳªÀÇ ÇàÀÌ°í ¼±Åà ¸®½ºÆ®ÀÇ °¢ ¿ä¼Ò´Â ÇϳªÀÇ ¿­ÀÔ´Ï´Ù. ¸¸¾à Äõ¸®°¡ ¾î¶°ÇÑ ·¹Äڵ嵵 º¹±Í½ÃÅ°Áö ¾Ê´Â´Ù¸é Àӽà Å×À̺íÀº ºó °ÍÀ¸·Î »ý°¢ÇÒ ¼ö ÀÖÁÒ. ÀÌ ±â´ÉÀº °ü°èÇü ¸ðµ¨ÀÇ ±Ùº» ¿øÄ¢ÀÔ´Ï´Ù. ±×¸®°í À§¿¡¼­ ¿­À» ÁöÁ¤ÇÑ °Íó·³ ¼±Åà ¸®½ºÆ® ³×¿¡¼­ Ç¥Çö½ÄÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. Ç¥Çö½ÄÀº ¿­°ú µ¿ÀÏÇÑ µ¥ÀÌÅÍŸÀÔ (¹®ÀÚ, ¼öÄ¡, ³¯Â¥)¿¡ ¼ÓÇÕ´Ï´Ù. ¿©·¯ºÐÀº ¿¬»êÀÚ, ³»ÀåÇÔ¼ö, ±×¸®°í »ó¼ö¸¦ ÀÌ¿ëÇÏ¿© ¿©·¯ºÐÀÇ APPLICATIONÀÇ Çʿ並 ¸¸Á·½Ãų ¼ö ÀÖ´Â º¹ÀâÇÑ Ç¥Çö½Äµµ ÀÛ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×¸®°í Ç¥Çö½ÄÀÌ ´Ù¼öÀÇ ¿­À» ÂüÁ¶ÇÒ Áö¶óµµ ORACLEÀÌ ¼±Åà ¸®½ºÆ® ³»¿¡ ÀÖ´Â °¢ ¿ä¼Ò¸¦ µ¶¸³µÈ ¿­·Î °£ÁÖÇÑ´Ù´Â °ÍÀ» ±â¾ïÇϼ¼¿ä. SQL¿¡¼­ »ç¿ëµÇ´Â »ê¼ú ¿¬»êÀÚ´Â C ¾ð¾î¿¡¼­ »ç¿ëµÇ´Â »ê¼ú ¿¬»êÀÚ¿Í µ¿ÀÏÇÕ´Ï´Ù. ´õÇϱâ(+), »©±â(-), °öÇϱâ(*), ³ª´©±â(/)... ¸ðµÎ ¶È~ °°ÁÒ? ´ÙÀ½Àº ÇлýµéÀÇ ¿µ¾î ¼ºÀû°ú ±¹¾î ¼ºÀûÀ» Æò±Õ³»´Â °ÍÀÔ´Ï´Ù. SELECT name, eng_score, kor_score, (eng_score+kor_score)/2 FROM student ; NAME ENG_SCORE KOR_SCORE (ENG_SCORE+KOR_SCORE)/2 ---------- --------- ---------- ----------------------- ¹Ú»ó¿í 90 85 87.5 ¹èÈ¿ÀÏ 70 90 80 ÀÌ¿øÈñ 30 10 20 À±¸é¿ë 100 100 100 ÃÖÀÎÈñ 90 90 90 ½Å°üÈ£ 85 100 87.5 ... ... ... ... ±¸±³¶ô 0 10 5 SQL¿¡¼­ »ç¿ëµÇ´Â ¹®ÀÚ¿­ ¿¬»êÀÚ(String Operator) Áß °¡Àå Áß¿äÇÑ °ÍÀÌ ¿¬°á ¿¬»êÀÚ(Concatenation Operator) ÀÔ´Ï´Ù. ÀÌ ¿¬»êÀÚ´Â µÑ ÀÌ»óÀÇ ¹®ÀÚ¿­À» ÇÔ²² ¿¬°áÇÒ ¼ö ÀÖ°Ô ÇÕ´Ï´Ù. SELECT name || ', ' || city FROM student; NAME||','||CITY ---------------- ¹Ú»ó¿í, ºÎ»ê ¹èÈ¿ÀÏ, ÁøÁÖ ÀÌ¿øÈñ, ¼­¿ï À±¸é¿ë, ¼ö¿ø ÃÖÀÎÈñ, ¼ö¿ø ½Å°üÈ£, ¼­¿ï ... ±¸±³¶ô, ºÎ»ê ¾î¶² °æ¿ì¿¡ ¹®ÀÚ¿­À» ¿¬°áÇÒ±î¿ä? Äõ¸®¿¡ ÀÇÇؼ­ º¹±ÍµÈ °ª °÷¿¡ ¹®ÀÚ¿­À» ³»ÀåÇϱâ À§Çؼ­ ¹®ÀÚ¿­À» Á¶ÇÕÇϱâ À§Çؼ­ ¾î¶² ¿­¿¡ ÇÒ´çÇÒ ¼ö ÀÖ´Â »õ·Î¿î °ªÀ» ÀÛ¼ºÇϱâ À§Çؼ­ ¿©·¯ºÐÀº µÎ °³ ÀÌ»óÀÇ ¹®ÀÚ¿­·Î ¿¬°á ¿¬»êÀÚ¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ', '´Â ¹®ÀÚ¿­À» ÄÞ¸¶(,)¿Í °ø¹éÀ¸·Î ¿¬°áÇÒ ¼ö ÀÖµµ·Ï »ç¿ëµÈ °ÍÀÔ´Ï´Ù. 4. SQLÀÇ ±âÃÊ (2) ÀÌÁ¦ ³»ÀåÇÔ¼ö¿¡ °üÇØ ¾Ë¾Æº¼±î¿ä? ORACLE»ç´Â ´Ù¾çÇÑ µ¥ÀÌÅÍ Å¸ÀÔÀ» Á¶ÀÛÇÏ°í º¯È¯Çϱâ À§Çؼ­ ¸¹Àº ³»ÀåÇÔ¼ö¸¦ Á¦°øÇÕ´Ï´Ù. ¹®ÀÚÇÔ¼ö ¼ýÀÚÇÔ¼ö ³¯Â¥ÇÔ¼ö º¯È¯ÇÔ¼ö ±×·ìÇÔ¼ö ÀâÇÔ¼ö(Miscellaneous Function) ÀÏ´Ü ¿©±â¼­´Â ÀÌ·± Á¾·ù°¡ ÀÖ´Ù´Â °Í¸¸ ¾Ë°í ³Ñ¾î°¡ÁÒ. SQLÀº ·¹Äڵ带 °Ë»öÇϴµ¥ ÀÌ¿ëÇÒ ¼ö ÀÖ´Â ±âÁØÀ» ÁöÁ¤ÇÏ´Â WHERE ±¸¸¦ Á¦°øÇÕ´Ï´Ù. ¾î¶² Å×À̺íÀÌ ¸¹Àº ÇàÀ» °¡Áö°í ÀÖÀ» °æ¿ì, ±× ÇàµéÀ» ¸ðµÎ °Ë»öÇϸé Âü ºÒÆíÇÏ°ÚÁÒ? WHERE ±¸´Â Äõ¸®¿¡ ÀÇÇØ °Ë»öµÇ´Â ÇàÀ» À§Çؼ­ ¸¸Á·µÇ¾î¾ß ÇÏ´Â ÇÑ °³ ÀÌ»óÀÇ Á¶°Ç¹®À¸·Î ±¸¼ºµÇ¾î ÀÖ½À´Ï´Ù. ¸¸¾à ¿©·¯ºÐÀÌ ¼­¿ï¿¡ »ç´Â ÇлýµéÀÇ List¸¸ ¿øÇÑ´Ù¸é ¾Æ·¡¿Í °°ÀÌ ÇÒ ¼ö ÀÖ°ÚÁÒ. SELECT name, eng_score, kor_score FROM student WHERE city='¼­¿ï'; NAME ENG_SCORE KOR_SCORE ---------- --------- ---------- ÀÌ¿øÈñ 30 10 ½Å°üÈ£ 85 100 WHERE¹®À» »ç¿ëÇÒ ¶§ AND ¿Í OR Å°¿öµå·Î Á¶°Ç¹®À» Á¶ÇÕÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ¼­¿ïÀ̳ª ¼ö¿ø¿¡ »ì°í ¿µ¾î ¼ºÀûÀÌ 80Á¡ ÀÌ»óÀÎ Çлý¸¸ º¸´Â ¿¹¸¦ µé¾îº¸ÁÒ. SELECT * FROM student WHERE city='¼­¿ï' OR city='¼ö¿ø' AND eng_score>=80; NAME AGE ENG_SCORE KOR_SCORE ... AVR_SCORE ---------- --- ---------- ---------- ... ---------- À±¸é¿ë 28 100 100 ... 100 ÃÖÀÎÈñ 27 90 90 ... 94 ½Å°üÈ£ 28 85 100 ... 96 ±×·³ µ¥ÀÌÅ͸¦ ¼ÒÆ®(Sort)½ÃÄѼ­ Äõ¸®ÇÏ´Â ¹ýÀ» º¼±î¿ä? ¿©·¯ºÐÀº ORDER BY ±¸¸¦ ÀÌ¿ëÇؼ­ Äõ¸®µÇ´Â µ¥ÀÌÅ͸¦ ¼ÒÆ®½Ãų ¼ö ÀÖ½À´Ï´Ù. ORDER BY ±¸´Â Äõ¸®°¡ º¹±Í½ÃÅ°´Â ÇàÀÇ ¼ø¼­¸¦ ¸Å±â´Âµ¥ »ç¿ëµÇ¾î¾ß ÇÏ´Â ¿­À» ÁöÁ¤Çϴµ¥ »ç¿ëµË´Ï´Ù. SELECT name, age FROM student ORDER BY name; NAME AGE ---------- --- ±¸±³¶ô 28 ¹Ú»ó¿í 29 ¹èÈ¿ÀÏ 26 ½Å°üÈ£ 28 À±¸é¿ë 28 ÀÌ¿øÈñ 50 ... ÃÖÀÎÈñ 27 ¼ø¼­¸¦ Á¤¸®ÇÒ ¶§ ¿À¶óŬÀÇ °æ¿ì´Â ¾Æ¹«·± ¿É¼ÇÀÌ ¾øÀ» °æ¿ì, ÇàÀ» ¿À¸§Â÷¼ø(ASC)À¸·Î ¼ø¼­¸¦ Á¤ÇÕ´Ï´Ù. ¿­ÀÇ ¼ø¼­¸¦ ³»¸²Â÷¼øÀ¸·Î Á¤¸®ÇÏ·Á¸é ¿­ÀÇ À̸§ µÚ¿¡ DESC Å°¿öµå¸¦ Ãß°¡ÇØ¾ß ÇÕ´Ï´Ù. SELECT name, age FROM student ORDER BY name DESC; NAME AGE ---------- --- ÃÖÀÎÈñ 27 ÀÌ¿øÈñ 50 À±¸é¿ë 28 ½Å°üÈ£ 28 ¹èÈ¿ÀÏ 26 ¹Ú»ó¿í 29 ... ±¸±³¶ô 28 ±×·±µ¥ °¡²ûÀº ³»°¡ ã°íÀÚ ÇÏ´Â µ¥ÀÌÅͳª ÇàÀÌ ¾ó¸¶³ª µÇ´ÂÁö ¾Ë°í ½ÍÀ» ¶§°¡ ÀÖÁÒ? ±×¶§´Â COUNT¶ó´Â ÇÔ¼ö¸¦ »ç¿ëÇÕ´Ï´Ù. COUNT ÇÔ¼ö´Â ÁöÁ¤µÈ ±âÁØÀ» ¸¸Á·½ÃÅ°´Â ÇàÀÇ ¼ö¸¦ º¹±Í½Ãŵ´Ï´Ù. SELECT count(*) FROM student WHERE eng_score>=80; COUNT(*) -------- 4 ±×·¯¸é ¼­ºêÄõ¸®´Â ¾î¶»°Ô »ç¿ëÇÏ´ÂÁö º¼±î¿ä? ¼­ºêÄõ¸®´Â ´Ù¸¥ DML(SELECT, UPDATE, DELETE, INSERT) ¹®À¸·Î Á¤Àǵ˴ϴÙ. ¸¸¾à¿¡ ¿µ¾î¼ºÀû¿¡ ´ëÇؼ­ Àüü Æò±Õº¸´Ù Á¡¼ö°¡ ³·Àº ÇлýÀ» Á¶È¸ÇÏ°í ½Í´Ù¸é ´ÙÀ½°ú °°ÀÌ »ç¿ëÇÏ¸é µË´Ï´Ù. avg()´Â ORALCEÀÌ Á¦°øÇÏ´Â Æò±ÕÀ» ³»´Â ÇÔ¼öÁÒ. SELECT name, eng_score FROM student WHERE eng_score < (SELECT avg(eng_score) FROM student); ¼­ºêÄõ¸®¸¦ »ç¿ëÇÒ °æ¿ì, ´ÙÀ½ÀÇ ³»¿ëÀ» ÁÖÀÇÇϼ¼¿ä. ¼­ºêÄõ¸®´Â °ýÈ£·Î ¹­¾î¾ß ÇÑ´Ù. ¼­ºêÄõ¸®¿¡ ÀÇÇؼ­ º¹±ÍµÈ ÇàÀÇ ¼ö´Â ÇÔ¼ö ¶Ç´Â ¿¬»êÀÚ°¡ ±â´ëÇÏ´Â °ªÀÇ ¼ö¿Í ÀÏÄ¡ÇØ¾ß ÇÑ´Ù. ORDER BY ±¸´Â ¼­ºêÄõ¸® ¹®¿¡¼­ »ç¿ëÇÒ ¼ö ¾ø´Ù. ¶Ç SELECT ¹®À¸·Î »õ·Î¿î Å×À̺íÀ» ¸¸µé ¼öµµ ÀÖ¾î¿ä. ´ÙÀ½°ú °°ÀÌ CREAT TABLE ¹®°ú SELECT ¹®À» ÇÔ²² »ç¿ëÇÏ¸é µË´Ï´Ù. WHERE ¹®À» Á־ ¿øÇÏ´Â Á¶°Ç¸¸À¸·Î Å×À̺íÀ» ¸¸µé ¼öµµ ÀÖ°ÚÁÒ. CREATE TABLE new_table_name AS select_statement; CREATE TABLE eng_score_table AS SELECT name, age, eng_score FROM student; ¿©·¯ºÐÀº ¼±Åà ¸®½ºÆ® ³»¿¡¼­ º¹ÀâÇÑ Ç¥Çö ¹®À» ÁöÁ¤ÇÒ ¶§ ±×°Í¿¡°Ô ¾ÙÀ̾¸¦ ÇÒ´çÇÔÀ¸·Î½á °á°ú °ªÀÇ ¹®¼­¸¦ º¸±â ÁÁ°Ô ÇÒ ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½ µÎ °¡Áö ¿¹¸¦ º¼±î¿ä? SELECT name, eng_score, kor_score, (eng_score+kor_score)/2 FROM student; NAME ENG_SCORE KOR_SCORE (ENG_SCORE+KOR_SCORE)/2 ---------- --------- ---------- ----------------------- ¹Ú»ó¿í 90 85 87.5 ¹èÈ¿ÀÏ 70 90 80 ÀÌ¿øÈñ 30 10 20 À±¸é¿ë 100 100 100 ÃÖÀÎÈñ 90 90 90 ½Å°üÈ£ 85 100 87.5 ... ... ... ... ±¸±³¶ô 0 10 5 SELECT name, eng_score, kor_score, (eng_score+kor_score)/2 AVERAGE FROM student; NAME ENG_SCORE KOR_SCORE AVERAGE ---------- --------- ---------- -------- ¹Ú»ó¿í 90 85 87.5 ¹èÈ¿ÀÏ 70 90 80 ÀÌ¿øÈñ 30 10 20 À±¸é¿ë 100 100 100 ÃÖÀÎÈñ 90 90 90 ½Å°üÈ£ 85 100 87.5 ... ... ... ... ±¸±³¶ô 0 10 5 ù ¹ø° ¿¹¿Í µÎ ¹ø° ¿¹¸¦ ºñ±³Çغ¸¸é µÎ ¹ø° ¿¹°¡ ÈξÀ ±ò²ûÇÏÁÒ? ÀÌ°ÍÀ» Ç¥Çö½Ä (eng_score+kor_score)/2¿¡ ¾ÙÀ̾ AVERAGE¸¦ ÇÒ´çÇÑ´Ù°í Çϸç, ¿©±â¼­ µÎ °¡Áö ÀÌÀÍÀ» ¾òÀ» ¼ö ÀÖ½À´Ï´Ù. Ç¥Çö½ÄÀ» Á¤È®È÷ ±â¼úÇÏ´Â À̸§À» °®´Â´Ù. ORDER BY ±¸ ³»¿¡¼­ ¾Ù¸®¾î½º¸¦ ÂüÁ¶ÇÒ ¼ö ÀÖ´Ù. ³»¿ëÀÌ HTMLÇÏ°í ºñ±³Çؼ­ Á» ¾î·Æ³ª¿ä? 5. SQLÀÇ ±âÃÊ (3) °ü°èÇü µ¥ÀÌÅͺ£À̽º ½Ã½ºÅÛ(RDBMS) ±â¼ú°ú ºñ°ü°èÇü µ¥ÀÌÅͺ£À̽º ½Ã½ºÅÛ(DBMS) ±â¼ú »çÀÌÀÇ ÇÑ °¡Áö ÁÖ¿ä Â÷ÀÌÁ¡Àº ³Î(Null) °ªÀÇ °³³äÀÔ´Ï´Ù. ºñ°ü°èÇü µ¥ÀÌÅͺ£À̽º ½Ã½ºÅÛ¿¡¼­, ¾î¶² ¹®ÀÚ ¶Ç´Â ¼öÄ¡ Çʵ忡 ¾î¶² °ªÀÌ ¾ø´Ù´Â °ÍÀº ¾î¶² Ưº°ÇÑ °ª¿¡ ÀÇÇؼ­ Ç¥½ÃµË´Ï´Ù. °ü°èÇü µ¥ÀÌÅͺ£À̽º¿¡¼­´Â ¾î¶² ¿­À» À§ÇÑ ³Î(Null) °ªÀº ´Ù¾çÇÑ ÀÌÀ¯·Î ³ªÅ¸³³´Ï´Ù. ÀÌ ¿­À» À§ÇÑ °ªÀº ¹®Á¦ÀÇ Çà¿¡ Àû¿ëµÇÁö ¾Ê´Â´Ù. ÀÌ ¿­Àº ¾ÆÁ÷ °ªÀ» ÇÒ´ç¹ÞÁö ¸øÇß´Ù. ±×·³ ¿­ °ªÀ¸·Î ³Î(Null)À» °®°í ÀÖ´Â ÇàÀ» ã¾Æº¼±î¿ä? SELECT name, eng_score, kor_score FROM student WHERE phone_no is Null; NAME ENG_SCORE KOR_SCORE ---------- --------- ---------- ¹èÈ¿ÀÏ 70 90 ÀÌ¿øÈñ 30 10 ... ... ... ±¸±³¶ô 0 10 ¾î¶² °ªÀÌ NullÀÎ ÀÌÀ¯¸¦ ÀÌÇØÇÏ´Â °ÍÀÌ Áß¿äÇÕ´Ï´Ù. ÀüÈ­¹øÈ£¿Í °°Àº °ÍÀº NullÀÌ µÉ ¼öµµ ÀÖÁÒ. ¿Ö³ÄÇϸé È¿ÀÏÀÌ´Â ÀÚÃëÇÏ°í, ¿øÈñ´Â »õ·Î ÀÌ»çÇߴµ¥ ÀüÈ­¸¦ ³õÁö ¾Ê¾Ò°í, ±³¶ôÀÌ´Â Áý¿¡¼­ ÂѰܳµ±â ¶§¹®¿¡.. ÈÄÈÄ.. ±×³É WHERE ÀýÀ» ÀÌ¿ëÇؼ­ Null °ªÀ» ãÀ» ¼ö ÀÖ´Ù´Â °Í¸¸ ±â¾ïÇϼ¼¿ä. ±×¸®°í NOT ¿¬»êÀÚ¸¦ ÀÌ¿ëÇؼ­ NullÀÌ ¾Æ´Ñ ÇàÀ» °Ë»öÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î¼­ ÀüÈ­¹øÈ£¸¦ ¸Þ¸ðÇÑ ÇлýµéÀÇ ÀüÈ­¹øÈ£¸¦ ¾Ë°í ½ÍÀ¸¸é ´ÙÀ½°ú °°ÀÌ ÇÏ¸é µÇÁö¿ä. SELECT name, eng_score, kor_score FROM student WHERE phone_no is Not Null; NAME ENG_SCORE KOR_SCORE ---------- --------- ---------- ¹Ú»ó¿í 90 85 À±¸é¿ë 100 100 ÃÖÀÎÈñ 90 90 ½Å°üÈ£ 85 100 ... ... ... ±×·³ ÀÌÁ¦ ¿¬»êÀÚ¿¡ ´ëÇؼ­ °£´ÜÈ÷ ¾Ë¾Æº¾½Ã´Ù. ¿¬»êÀÚ¿¡´Â LIKE, BETWEEN, IN µîÀÇ ¿¬»êÀÚ°¡ ÀÖ¾î¿ä. LIKE ¿¬»êÀڴ ã¾Æ³»°íÀÚ ÇÏ´Â Ç׸ñÀ» À§ÇÑ Á¤È®ÇÑ Ã¶ÀÚ¸¦ ¸ð¸¦ ¶§ Å×À̺íÀ» °Ë»öÇϴµ¥ ÀÌ¿ëÇÏ°Ô µË´Ï´Ù. ¹®¹ýÀº ´ÙÀ½°ú °°¾Æ¿ä. SELECT name, eng_score FROM student WHERE name like '%¿ø%'; NAME ENG_SCORE ---------- --------- ÀÌ¿øÈñ 30 BETWEEN ¿¬»êÀÚ´Â AND ¿Í ÇÔ²² »ç¿ëµÇ¾î ¿¬°áµÇ´Â µÎ °³ÀÇ Á¶°Ç¹®°ú °°ÀÌ ÀÛ¿ëÇÕ´Ï´Ù. SELECT name, eng_score FROM student WHERE eng_name BETWEEN 85 AND 95; À§ÀÇ ¹®ÀåÀº ¾Æ·¡ÀÇ ¹®Àå°ú µ¿ÀÏÇÑ ¹®ÀåÀÔ´Ï´Ù. SELECT name, eng_score FROM student WHERE eng_score >= 85 AND eng_score <= 95; NAME ENG_SCORE ---------- --------- ¹Ú»ó¿í 90 À±¸é¿ë 100 ÃÖÀÎÈñ 90 ½Å°üÈ£ 85 ¸¶Áö¸·À¸·Î ÀÌÁ¦ IN ¿¬»êÀÚ¿¡ ´ëÇØ ¾Ë¾Æº¸ÁÒ. IN ¿¬»êÀÚ´Â ¿­ ¶Ç´Â Ç¥Çö½ÄÀÇ °ªÀ» °¡´ÉÇÑ °ªµéÀÇ ¸®½ºÆ®¸¦ ºñ±³Çϴµ¥ »ç¿ëµË´Ï´Ù. ±×¸®°í IN ¿¬»êÀÚ´Â Boolean °ªÀ» º¹±Í½ÃÅ°ÁÒ. Ç¥Çö½ÄÀÌ Ç¥Çö½Ä ¸®½ºÆ®¿¡ ÀÖ´Â ¸ðµç °ª Áß Çϳª¿Í °°À¸¸é TRUE Ç¥Çö½ÄÀÌ Ç¥Çö½Ä ¸®½ºÆ®¿¡ ÀÖ´Â ¸ðµç °ª Áß °°Àº°Ô ¾øÀ¸¸é FALSE SELECT name FROM student WHERE city IN ('Suwon', 'Seoul'); NAME ---------- À±¸é¿ë ÃÖÀÎÈñ ½Å°üÈ£ À§ÀÇ ³»¿ë°ú ¹Ý´ëÀÇ ³»¿ëÀÌ ³ªÅ¸³ªµµ·Ï NOT Å°¿öµå¸¦ »ç¿ëÇÒ ¼öµµ ÀÖÁÒ. SELECT name FROM student WHERE city NOT IN ('Suwon', 'Seoul'); NAME AGE ---------- --- ±¸±³¶ô 28 ¹Ú»ó¿í 29 ¹èÈ¿ÀÏ 26 ÀÌ¿øÈñ 50 ... [ SQL ¿¡¼­ join À̶õ... ] Ãâó : phpschool , ±Û¾´ÀÌ : ¸í¶ûÆóÀ΢â ÀÌ Ä÷³¿¡¼­ µ¥ÀÌÅͺ£À̽º Å×ÀÌºí µðÀÚÀο¡ ´ëÇØ ¾ê±âÇϱâ Àü¿¡, ÇÊÀÚ´Â SQL SELECT ¹®¿¡ ´ëÇØ ¼³¸íÇß¾ú´Ù. ÀÌ ¹®ÀåÀº ´ÙÀ½°ú °°Àº ÀϹÝÀûÀÎ Çü½ÄÀ» °®°í ÀÖ¾ú´Ù: SELECT column_name(s) [AS alias] FROM table_name [ORDER BY column_name(s) (ASC | DESC) ] WHERE (search_criteria); CDÀÇ µ¥ÀÌÅͺ£À̽º¸¦ °Ë»öÇÒ ¶§ °¡Àå ´Ù¾çÇÏ°Ô »ç¿ëÇß´ø Çü½ÄÀÌ´Ù. ±×·¯³ª ÇÊÀÚ´Â ÇϳªÀÇ µ¥ÀÌÅͺ£À̽º Å×ÀÌºí¿¡¼­ ·¹Äڵ带 °¡Á®¿À´Â °Í¸¸ »ìÆ캸¾Ò´Ù. Áö±Ý±îÁö Å×ÀÌºí °ü°è¿¡ ´ëÇØ ¼³¸íÇ߱⠶§¹®¿¡, ÀÏ·ÃÀÇ °ü°èÇü µ¥ÀÌÅͺ£À̽º Å×ÀÌºí¿¡¼­ ·¹Äڵ带 °¡Á®¿À±â À§ÇØ SELECT¹®À» »ç¿ëÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ ¾Ë¾Æº¼ °ÍÀÌ´Ù. Peter GabrielÀÇ CD¿¡ °üÇÑ µ¥ÀÌÅͺ£À̽º ·¹Äڵ带 º¸ÀÚ. ´ÙÀ½ µÎ Å×À̺íÀº ¾ÆƼ½ºÆ®¿Í CD Á¤º¸¸¦ Æ÷ÇÔÇÏ°í, °­Á¶µÇ¾î ÀÖ´Â ArtistID Çʵ忡 ÀÏ´ë´Ù ¿¬°á(ÇϳªÀÇ ¾ÆƼ½ºÆ®¿¡ ¿©·¯ °³ÀÇ CD¿¡ ¿¬°áµÇ´Â)À» °®°í ÀÖ´Ù. ArtistID ArtistName 22 Peter Gabriel CDID ArtistID Title Year Quality 15 22 So 1984 10 16 22 Us 1992 10 ´ÙÀ½ SQL ¹®ÀåÀ» »ç¿ëÇÏ¿© Peter Gabriel¿¡ ´ëÇÑ ¸ðµç ¾ÆƼ½ºÆ® Á¤º¸¸¦ ãÀ» ¼ö ÀÖ´Ù. SELECT * FROM Artists WHERE ArtistID=22; ±×¸®°í ´ÙÀ½ SQL ¹®ÀåÀ» »ç¿ëÇÏ¿© CDÀÇ ¸ðµç Á¤º¸¸¦ ãÀ» ¼ö ÀÖ´Ù. SELECT * FROM CDs WHERE ArtistID=22; ÀÌ°ÍÀº ¿©·¯ºÐ¿¡°Ô À½¾Ç°¡¿Í À½¾Ç°¡ÀÇ ¾Ù¹ü¿¡ ´ëÇÑ µÎ Á¾·ùÀÇ µ¥ÀÌÅ͸¦ Á¦°øÇÑ´Ù. À§¿Í °°Àº ¸ðµç Á¤º¸¸¦ Çϳª·Î °¡Á®¿Ã ¼ö ÀÖ´Ù¸é ÁÁÁö ¾ÊÀ»±î? »ç½Ç, ÇÊÀÚ´Â È¿À²¼ºÀ» ³ôÀ̱â À§ÇØ ÀÌ ¸ðµç Á¤º¸¸¦ µÎ °³ÀÇ Å×À̺í·Î ³ª´©¾ú´Ù. °ü°èÇü Å×À̺íÀÌ °¡Áö´Â ÁÖ¿äÇÑ ¿äÁ¡Àº µÎ °³ÀÇ Å×À̺íÀ» °¡Á®¿Ã ¼ö ÀÖ°í, ´ÙÀ½ Å×À̺í°ú °°ÀÌ ¾ÆƼ½ºÆ®¿Í CD Á¤º¸·Î ±¸¼ºµÈ ¾ÆÁÖ Å« ÇϳªÀÇ Å×À̺í·Î ÇÕÄ¥ ¼ö ÀÖ´Ù´Â °ÍÀÌ´Ù. ArtistID Title Year Quality Peter Gabriel So 1984 10 Peter Gabriel Us 1992 10 µÎ Å×À̺íÀ» Çϳªµµ Á¶ÀÎ(join)Çϰųª ¿¬°áÇϱâ À§ÇØ °øÅëµÈ Å° Çʵå(¿©±â¼­´Â ArtistID Çʵå)°¡ ÇÊ¿äÇÏ´Ù. À§¿¡ ÀÖ´Â µÎ SQL ¹®ÀåÀ» °¡Á®¿Í¼­, °¢°¢ÀÇ Å×ÀÌºí¿¡¼­ °¡Á®¿Â ¸ðµç Á¤º¸·Î ±¸¼ºµÈ ÇϳªÀÇ °¡»ó Å×À̺íÀ» ¸¸µé±â À§ÇØ µÎ Å×À̺íÀ» ÇÔ²² ½è´Ù. SELECT * FROM Artist,CD WHERE (CD.ArtistID=Artist.ArtistID); ÀÌ°ÍÀº ´ÙÀ½°ú °°ÀÌ º¸ÀÏ °ÍÀÌ´Ù. CDID ArtistID Artist Title Year Quality Peter Gabriel¿¡ ´ëÇÑ ArtistID·Î SQL ¹®À» Á¦ÇÑÇÑ´Ù¸é ´ÙÀ½°ú °°ÀÌ ÁúÀǸ¦ ÀÛ¼ºÇÑ´Ù. SELECT * FROM Artist,CD WHERE (CD.ArtistID=Artist.ArtistID) AND Artist.ArtistID=22; °á°ú´Â ´ÙÀ½°ú °°´Ù. CDID ArtistID Artist Title Year Quality 15 22 Peter Gabriel So 1984 10 16 22 Peter Gabriel Us 1992 10 SQL SELECT¹®¿¡ WHERE Àý¿¡ µîÈ£(=) ¿¬»êÀÚ¸¦ »ç¿ëÇÏ¿© °øÅë(Å°) Çʵå·Î µÎ Å×À̺íÀ» ¿¬°áÇÒ ¼ö ÀÖ´Ù. JOIN Å°¿öµå »ç¿ëÇϱâ Å×À̺íÀ» JOIN Çϱâ À§ÇØ µîÈ£(=) ¿¬»êÀÚ¸¦ »ç¿ëÇÒ »Ó¸¸ ¾Æ´Ï¶ó, SQLÀº µÎ °³ ÀÌ»óÀÇ Å×ÀÌºí »çÀÌ¿¡ º¸´Ù º¹ÀâÇÑ JOIN¿¡ »ç¿ëµÇ´Â ¿¬»êÀÚ¸¦ Æ÷ÇÔÇÏ°í ÀÖ´Ù. SQL ¹®Àº ´ÙÀ½°ú °°´Ù. SELECT * FROM Artist,CD WHERE (CD.ArtistID=Artist.ArtistID) AND Artist.ArtistID=22; ¸í½ÃÀûÀ¸·Î JOINµÈ Å×À̺íÀ» ¸¸µé±â À§ÇØ ´ÙÀ½°ú °°ÀÌ ÇÒ ¼ö ÀÖ´Ù. SELECT * FROM (Artist INNER JOIN CD ON CD.ArtistID=Artist.ArtistID) WHERE Artist.ArtistID=22; µÎ °³ÀÇ °°Àº ¹®Àå¿¡¼­ ¾Ë ¼ö ÀÖ´Â °Íó·³, µÎ ¹ø° ÁúÀÇ´Â µÎ °³ÀÇ °ü°èÇü Å×À̺íÀ» JOIN ÇÏ¿© °¡»ó Å×À̺íÀ» ¸¸µå´Â °ÍÀ» ´õ¿í ¸íÈ®ÇÏ°Ô ÇØÁØ´Ù. ±×¸®°í ³ª¼­ ¿Ã¹Ù¸¥ ArtistID·Î °á°ú Å×À̺íÀ» ÇÊÅ͸µÇÑ´Ù. Áö±Ý±îÁö, ¿ì¸®´Â JOIN ´ë½Å¿¡ INNER JOINÀ» »ç¿ëÇØ¾ß ÇÏ´ÂÁö¿¡ ´ëÇØ ¹«½ÃÇß´Ù. - ±×°ÍÀº ±× ÀÚü¸¸À¸·Îµµ °¡Ä¡ ÀÖ´Â ÁÖÁ¦ÀÌ´Ù. µÎ °³ÀÇ °°Àº ¹®Àå¿¡¼­ ¾Ë ¼ö ÀÖ´Â °Íó·³, µÎ ¹ø° ÁúÀÇ´Â µÎ °ü°èÇü Å×À̺íÀ» Çϳª·Î JOINÇÏ¿© ÇϳªÀÇ °¡»ó Å×À̺íÀ» ¸¸µé°í ³ª¼­ ¿Ã¹Ù¸¥ ArtistID·Î °á°ú Å×À̺íÀ» ÇÊÅ͸µÇÑ´Ù´Â Á¡¿¡¼­ ´õ ¸íÈ®ÇÏ´Ù. Áö±Ý±îÁö ´Ü¼øÈ÷ JOIN ´ë½Å¿¡ INNER JOINÀ» »ç¿ëÇØ¾ß ÇÏ´ÂÁö¿¡ ´ëÇؼ­´Â ¼³¸íÇÏÁö ¾Ê¾Ò´Ù. SELF JOINÀº ¹«¾ùÀΰ¡? SELF-JOINÀº ƯÁ¤ À¯ÇüÀÇ »óȲ ƯÈ÷, ´õ ÀÌ»ó µÎ °³ÀÇ Å×À̺í·Î ³ª´©´Â °Í°ú °°Àº Á¤±ÔÈ­°¡ ÇÊ¿ä ¾ø´Â µ¥ÀÌÅͺ£À̽º Å×À̺íÀ» °®°í ÀÖ´Â °æ¿ì- ¿¡¸¸ À¯¿ëÇÑ µµ±¸ÁßÀÇ Çϳª´Ù. ÀüÇüÀûÀÎ °æ¿ì´Â µ¥ÀÌÅ͸¦ °®°í ÀÖ´Â ÇÑ Å×À̺íÀÌ µ¿ÀÏÇÑ Å×ÀÌºí¿¡ ÀúÀåµÈ µ¥ÀÌÅÍ °ª¿¡ ´ëÇÑ ¸µÅ©¸¦ Æ÷ÇÔÇÏ°í ÀÖ´Â °æ¿ì´Ù. SQL Ã¥¿¡¼­ º¸°ÔµÇ´Â Ç¥ÁØÀ̳ª ´Ù¸§¾ø´Â ¿¹Á¦´Â Employees Å×À̺íÀÇ ·¹Äڵ忡 ¸µÅ©¸¦ °®°í ÀÖ´Â-Manager ID Çʵ带 Æ÷ÇÔÇÏ°í ÀÖ´Â- ´ÙÀ½°ú °°Àº Employee Å×À̺íÀÌ´Ù. Employees EmployeeID EmployeeName ManagerID 61 Sue Smith (null) 62 David Jones 61 63 Troy Parker 61 64 Claire Smith-Jones 63 65 Grover Rivers 63 °¢ Á¾¾÷¿øÀÇ °ü¸®ÀÚ À̸§À» ¹ÝȯÇÏ´Â ÁúÀÇ´Â ¾î¶»°Ô ¸¸µå´Â°¡? ÇÑ °¡Áö´Â ·çÇÁ ¾È¿¡ Áßø ÁúÀǸ¦ ³Ö´Â °ÍÀÌ´Ù. ÀÌ°ÍÀº PHP, ASP, ColdFusion, JSP¿Í °°Àº À¥ °³¹ßÀÚµéÀÌ ÀÌ·¯ÇÑ ¹®Á¦¸¦ ¸¸³ª°Ô µÇ¸é »ç¿ëÇÏ´Â °¡Àå ÀϹÝÀûÀÎ Á¢±Ù ¹æ¹ýÀÌ´Ù. ¹°·Ð, ÀÌ·¯ÇÑ Á¢±Ù ¹æ¹ýÀº ¼öÇà ¼º´É Ãø¸é¿¡¼­ ²ûÂïÇÑ ÇØ°á¹æ¹ýÀÌ´Ù. SQL JOINÀ» ÀÌ¿ëÇÏ´Â °ÍÀÌ ¼­¹ö »çÀÌµå ±â¼úÀ» »ç¿ëÇÏ¿© °¢°¢ÀÇ ÁúÀǸ¦ Á¶ÇÕÇÏ´Â °Íº¸´Ù ÈξÀ ´õ ºü¸£´Ù. ¿©±â¼­´Â ¼­¹ö »çÀÌµå ±â¼ú ´ë½Å¿¡ SELF JOINÀ» »ç¿ëÇÒ °ÍÀÌ´Ù. SELF JOIN »ç¿ëÇϱâ SELF JOINÀº ÇϳªÀÇ Å×À̺íÀÌ ½º½º·Î¸¦ JOINÇÏ´Â ÀÏ¹Ý SQL JOINÀÌ´Ù. SQL JOINÀº Å×À̺íÀÇ °¢ ÀνºÅϽº¿¡ °³º°ÀûÀÎ À̸§À» ºÎ¿©ÇÏ´Â Å×À̺í À̸§ º°Äª(alias)À» »ç¿ëÇÏ¿© ¼öÇàµÈ´Ù. ¿¹¸¦ µé¸é ´ÙÀ½°ú °°´Ù: SELECT E1.EmployeeName AS Employee, E2.EmployeeName AS Manager FROM Employees AS E1 INNER JOIN Employees AS E2 ON E1.ManagerID = E2.EmployeeID À§¿Í °°Àº SQL ÄÚµå´Â ´ÙÀ½°ú °°Àº µÎ °³ÀÇ µ¿ÀÏÇÑ Å×À̺íÀ» È¿À²ÀûÀ¸·Î »ý¼ºÇÑ´Ù. Ei(Employees) EmployeeID EmployeeName ManagerID 61 Sue Smith (null) 62 David Jones 61 63 Troy Parker 61 64 Claire Smith-Jones 63 65 Grover Rivers 63 E2(Employees) EmployeeID EmployeeName ManagerID 61 Sue Smith (null) 62 David Jones 61 63 Troy Parker 61 64 Claire Smith-Jones 63 65 Grover Rivers 63 ÀÌ Å×ÀÌºí¿¡¼­´Â °­Á¶µÈ Ä÷³ÀÌ JOINµÇ¾ú´Ù. ½ÇÁ¦·Î Å×ÀÌºí¿¡ ´ëÇÑ ´Ù¸¥ º¹»çº»À» ¸¸µç °ÍÀÌ ¾Æ´Ï¶ó´Â °Í¿¡ ÁÖ¸ñÇÑ´Ù. Å×ÀÌºí ±×ÀÚü¸¦ JOINÇßÁö¸¸, Å×À̺íÀ» µÎ °³ÀÇ Å×À̺í·Î »ý°¢ÇÑ´Ù¸é ÀÌ°ÍÀº ´õ ÀÌÇØÇϱ⠽±´Ù.(Àû¾îµµ ÇÊÀÚ´Â ±×·¸´Ù!) SQL OUTER JOIN ¸ðµç Á¾·ùÀÇ SQL JOINÀº È¿À²ÀûÀ¸·Î ÇϳªÀÇ Å×ÀÌºí¿¡ ÀÖ´Â ¿­°ú JOIN ÇÏ´Â ´Ù¸¥ Å×ÀÌºí¿¡ ÀÖ´Â ¿­À» °öÇÑ´Ù.(±×¸®°í ¸¹Àº Å×À̺íÀÌ JOIN ¿¬»ê¿¡ Âü¿©ÇÏ´Â °Íó·³ Å×À̺íÀ» Æ÷ÇÔÇϱâ À§ÇØ È®ÀåµÉ ¼ö ÀÖ´Ù. Ä«Å×½Ã¾È °ö(CROSS JOIN)¿¡ ´ëÇؼ­ ¾ê±âÇÒ ¶§, ÇÑ Å×À̺íÀÇ ¸ðµç Çà°ú ´Ù¸¥ Å×À̺íÀÇ ¸ðµç ÇàÀ» °öÇÑ °á°ú·Î ¸¸µé¾îÁö´Â ¿­À» º¼ ¼ö ÀÖ¾ú´Ù. INNER JOINÀº °°Àº °ªÀ» °®°í ÀÖ´Â Å° Çʵ带 °®°í ÀÖ´Â ÇุÀ» °¡Á®¿À±â À§ÇØ ÀÌ·¯ÇÑ Ä«Å×½Ã¾È °öÀ¸·Î ¸¸µé¾îÁö´Â Çà¿¡ ´ëÇÑ À¯¿ëÇÑ ÇÊÅ͸¦ Á¦°øÇÑ´Ù. INNER JOIN ¿¬»êÀÇ °á°ú´Â JOINÇÑ µÎ Å×ÀÌºí¿¡ ÀÖ´Â °¢ Å°¸¦ ÇϳªÀÇ Çà¿¡ °®°í ÀÖ´Â ÇàÀÌ µÈ´Ù. ±×·¯³ª ÇÑ Å×ÀÌºí¿¡ ÀÖ´Â Çà¿¡ ÀÖ´Â Å° °ª°ú ´Ù¸¥ Å×ÀÌºí¿¡ ÀÖ´Â Å° °ªÀÌ ÀÏÄ¡ÇÏÁö ¾Ê´Â °æ¿ì¿¡´Â ¾î¶²°¡? INNER JOINÀº ±×·¯ÇÑ ÇàÀ» ¹«½ÃÇÑ´Ù. OUTER JOINÀº INNER JOIN¿¡¼­ ºüÁö´Â ÇàÀ» Æ÷ÇÔÇϱâ À§ÇØ »ç¿ëÇÑ´Ù. ¿¹Á¦·Î »ç¿ëÇß´ø CD µ¥ÀÌÅͺ£À̽º¸¦ »ç¿ëÇÏ¸é º¸´Ù ¸íÈ®ÇÏ°Ô ÀÌÇØ°¡ µÉ °ÍÀÌ´Ù. Áö±Ý±îÁö, CD Ä÷º¼ÇÀÇ Ä«Å»·Î±×¸¦ ¸¸µé±â À§ÇØ ¾ÆƼ½ºÆ®(Artist) µ¥ÀÌÅÍ¿Í CD µ¥ÀÌÅ͸¦ °¡Á®¿À´Â µ¥ JOINÀ» »ç¿ëÇß´Ù. ±×·¯³ª ÇÊÀÚ°¡ ¶óµð¿À¿¡¼­ »õ·Î¿î ¾ÆƼ½ºÆ®¿¡ °üÇØ ¾ê±âÇÏ´Â °ÍÀ» µé¾ú°í, Áï½Ã ±× ¾ÆƼ½ºÆ® ¿©±â¼­´Â David Gray -¸¦ µ¥ÀÌÅͺ£À̽º¿¡ Ãß°¡Çϱâ·Î ÇÑ´Ù°í ÇÏÀÚ. Artists ArtistID ArtistName 1 Peter Gabriel 2 Bruce Hornsby 3 Lyle Lovett 4 Beach Boys 5 David Gray Artists¿Í CD Å×À̺íÀ» °¡Áö°í INNER JOINÀ» »ç¿ëÇß´Ù¸é, °á°ú´Â ´ÙÀ½°ú °°À» °ÍÀÌ´Ù. SELECT * FROM Artists, CDs WHERE Artists.ArtistID=CDs.ArtistID CDID CDs.ArtistID Artists.ArtistID ArtisName Title Year 1 1 1 Peter Gabriel So 1984 2 1 1 Peter Gabriel Us 1992 3 2 2 Bruce Hornsby The Way It Is 1986 4 2 2 Bruce Hornsby Scenes from the Southside 1990 5 1 1 Peter Gabriel Security 1990 6 3 3 Lyle Lovett Joshua Judges Ruth 1992 7 4 4 Beach Boys Pet Sounds 1966 ÀÌ °á°ú´Â Á¤È®ÇÏ°Ô ÇÊÀÚÀÇ Ä«Å»·Î±×¸¦ º¸¿©ÁØ´Ù. ±×·¯³ª ÇÊÀÚ°¡ Ä«Å»·Î±×¿¡ Ãß°¡ÇÒ ¿¹Á¤ÀÎ ´Ù¸¥ ¾ÆƼ½ºÆ®¿Í David Gray´Â ¾î¶²°¡? CDs.ArtistID=5ÀÎ ÀÏÄ¡ÇÏ´Â ÇàÀÌ ¾ø±â ¶§¹®¿¡ ±×·¯ÇÑ ¾ÆƼ½ºÆ®µéÀº ÀÌ °á°ú¿¡¼­ ºüÁ®ÀÖ´Ù. ¿©·¯ºÐÀº Áß¿äÇÑ°Ô ¾Æ´Ï¶ó°í ¸»ÇÒÁöµµ ¸ð¸£Áö¸¸, ¸¸¾à µÎ Å×À̺íÀÌ Customer¿Í Orders¶ó¸é? ¶Ç´Â Orders¿Í Items¶ó¸é ¾î¶²°¡? ù¹ø° °æ¿ì¿¡ ÁÖ¹®À» ÇÑ °í°´¸¸ÀÌ ¸®Æ÷Æ®¿¡ ³ªÅ¸³¯ °ÍÀÌ´Ù. µÎ¹ø° °æ¿ì¿¡´Â ½ÇÁ¦·Î ÁÖ¹®À» ¹ÞÀº Ç׸ñ¸¸ÀÌ ³ªÅ¸³ª°Ô µÉ °ÍÀÌ´Ù. ÀÌ·¯ÇÑ Á¾·ùÀÇ ºüÁø Á¤º¸µéÀº ¾î¶² Á¾·ùÀÇ °è»êÀ» ¿ÏÀüÈ÷ ¸ÁÄ¥°ÍÀÌ´Ù! OUTER JOIN ¿¬»êÀº ÀÌ·¯ÇÑ ¹®Á¦¸¦ ¼öÁ¤ÇÒ ¼ö ÀÖ´Ù. OUTER JOIN »ç¿ëÇϱâ OUTER JOINÀº ´ÙÀ½°ú °°Àº ¼¼°¡Áö°¡ ÀÖ´Ù. LEFT OUTER JOIN (*=) RIGHT OUTER JOIN (=*) FULL OUTER JOIN OUTER JOINÀÇ ¸ñÀûÀº ºüÁø ÇàÀ̳ª ÀÏÄ¡ÇÏÁö ¾Ê´Â ÇàÀ» Æ÷ÇÔÇϱâ À§ÇÑ °ÍÀ̶ó´Â °ÍÀÌ´Ù. ¿©·¯ºÐÀº ÀÌ ¼¼°¡Áö OUTER JOINÀÌ ¹«¾ùÀ» ÀǹÌÇÏ´ÂÁö ¾Æ¸¶µµ ÀÌÇØÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. LEFT, RIGHT, FULL ±¸¹®Àº ¸ðµÎ ¾î´À °ÍÀÌ Å×À̺íÀÇ ÀÏÄ¡ÇÏÁö ¾Ê´Â Ä÷³À» Æ÷ÇÔÇÏ´Â °ÍÀÎÁö¸¦ ÁöÁ¤ÇÏ´Â °ÍÀÌ´Ù. CD Ä÷º¼Ç ¿¹Á¦¸¦ ¼öÁ¤Çϱ⸦ ¿øÇÑ´Ù¸é, ¿ì¸®´Â INNER JOINÀ» ´ÙÀ½°ú °°Àº OUTER JOINÀ¸·Î ¹Ù²Ü ¼ö ÀÖ´Ù. SELECT * FROM Artists, CDs WHERE Artists.ArtistID *= CDs.ArtistID LEFT OUTER JOIN ¿¬»êÀÚ´Â JOIN µÇ´Â Å×À̺íÀÇ ¿ÞÂÊ Æí¿¡ ÀÖ´Â ¸ðµç ¿­, ¿©±â¼­´Â Artists Å×ÀÌºí¿¡ ÀÖ´Â ¿­À» Æ÷ÇÔÇϵµ·Ï ÇÑ´Ù. Áß¿äÇÑ °ÍÀº LEFT, RIGHT´Â SQL ¹®Àå¿¡ ¾²¿©ÀÖ´Â Å×À̺íÀÇ ¼ø¼­¿¡ µû¸¥ ´Ù´Â °ÍÀÌ´Ù. ´ÙÀ½ SQL ¹®ÀåÀº ¸ðµÎ °°´Ù: SELECT * FROM Artists, CDs WHERE Artists.ArtistID *= CDs.ArtistID SELECT * FROM CDs, Artists WHERE CDs.ArtistID =* Artists.ArtistID SELECT * FROM Artists LEFT OUTER JOIN CDs ON Artists.ArtistID = CDs.ArtistID SELECT * FROM CDs RIGHT OUTER JOIN Artists ON CDs.ArtistID = Artists.ArtistID ÃßÃøÇÒ ¼ö ÀÖ´Â °Íó·³, FULL OUTER JOINÀº µÎ Å×ÀÌºí¿¡¼­ ¸ðµç ÀÏÄ¡ÇÏÁö ¾Ê´Â ÇàÀ» °á°ú·Î Æ÷ÇÔÇÑ´Ù. OUTER JOINÀº ÃÑ ÇÕ°è µ¥ÀÌÅÍ ¸®Æ÷Æ®¸¦ ¸¸µå´Â µ¥ ƯÈ÷ À¯¿ëÇÏ´Ù. Inventory(»óÇ° ¸ñ·Ï) Å×ÀÌºí¿¡ ÀÖ´Â °¢ Ç׸ñ¿¡ ´ëÇÑ ÁÖ¹®À» ¼¼±â À§ÇØ ´ÙÀ½°ú °°Àº SQL ¹®ÀåÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù. SELECT Inventory.InventoryID, COUNT(Orders.OrderID) FROM Inventory LEFT OUTER JOIN Orders ON Inventory.InventoryID = Orders.InventoryID GROUP BY Inventory.InventoryID ÀÌ SQL ¹®ÀåÀº ÀÏÄ¡ÇÏ´Â ÁÖ¹®ÀÌ ¾ø´Â »óÇ°¸ñ·ÏÀ» Æ÷ÇÔÇÑ ¸ðµç »óÇ° ¸ñ·Ï¿¡ ´ëÇÑ ÁÖ¹® ¼ö¸¦ ¼¾´Ù.(ÀÌ ¿¹Á¦´Â Orders Å×ÀÌºí¿¡ ÀÖ´Â ·¹Äڵ尡 ÇϳªÀÇ »óÇ° Ç׸ñ¿¡ ´ëÇÑ ÁÖ¹®À» Æ÷ÇÔÇÏ°í ÀÖ´Ù°í °¡Á¤ÇÑ´Ù). ÀÌ ±â¼úÀ» »ç¿ëÇÏ¿© °í°´º° ÁÖ¹®¼ö, º¥´õº° »óÇ°¼ö, ¶Ç´Â ÇÑ Å×ÀÌºí¿¡ ¾î¶² ¿­ÀÌ ±×¿¡ ÇØ´çÇÏ´Â °ªÀ» °®°í ÀÖÁö ¾Ê´Ù´Â °ÍÀ» ¾Æ´Â °ÍÀÌ À¯¿ëÇÑ ¾î¶² Á¾·ùÀÇ °ü°è¿¡ ´ëÇؼ­µµ ¾Ë ¼ö ÀÖ´Ù. ÇÁ¸®Ã¿ ÀÚ¹Ù Å©·¹ÇÁÆ® µ¿È£È¸¿¡¼­ °¡Á®¿Ô½À´Ï´Ù¸¸, ¿øº» Ãâó´Â ´Ù¸¥°÷ÀΰŠ°°³×¿ä.. ±×¸®°í, ¸í·É¾î ºÎºÐÀº mysql°ú Á¶±Ý Ʋ¸°ºÎºÐÀÌ ÀÖ½À´Ï´Ù. ±×ºÎºÐÀº mysql.com ¿¡¼­ ¹®¼­ÀڷḦ º¸½Ã±â ¹Ù¶ø´Ï´Ù. ¼¿ÇÁÁ¶ÀÎÀÇ ½¬¿î ¿¹¸¦ Çϳª µéÀÚ¸é,,, Ä¿¹Â´ÏƼ »çÀÌÆ®¿¡¼­ Ä£±¸µî·ÏÀ» ÇÒ¶§, ³ª¸¦ Ä£±¸·Î µî·ÏÇÑ »ç¶÷, ³»°¡ Ä£±¸·Î µî·ÏÇÑ »ç¶÷Àº ´Ü¼ø Äõ¸®·Î °¡´ÉÇÏÁö¸¸, ¼­·Î Ä£±¸·Î µî·ÏÇÑ »ç¶÷À» Ç¥½ÃÇÒ¶§ ¼¿ÇÁÁ¶ÀÎÀ» »ç¿ëÇÏ°Ô µË´Ï´Ù. ´ëÃæ ÀÌ·± ¸ð½ÀÀÌ°ÚÁÒ. select a.userid from frend as a, frend as b where a.userid=b.target and b.userid = a.target; db¸¦ ÀÌ¿ëÇÑ joinÀ» ÀßÇØ¾ß php ½ºÅ©¸³Æ® ³»¿¡¼­ ½ºÅ©¸³Æ®·Î ÇÏ´Â ÀÛ¾÷ÀÌ ÁÙ¾îµé°Ô µÇ¸é, ¿À·ù°¡ ¹ß»ýÇÒ °¡´É¼ºÀÌ ÁÙ°Ô µË´Ï´Ù. À§¿¡ Äõ¸®Áß¿¡ ÇÑ°¡Áö°¡ Ʋ·È³×¿ä... À§¿¡ Äõ¸®´Â ±×³É ¼­·Î¼­·Î Ä£±¸·Î µî·ÏÇÑ »ç¶÷ÀÌ°í, ³ª¶û ¼­·Î¼­·Î Ä£±¸ÇÑ »ç¶÷À̸é, where Àý¿¡ and b.userid = 'myid'; ºÎºÐÀÌ µé¾î°¡¾ß°ÚÁÒ..