|











|
|
|
 |
0 |
|
View Articles |
|
 |
 Name |
¼Õº´¸ñ |
(2002-03-28 22:19:51, Hit : 17970, Vote : 1810)
|
|
 |
Homepage |
 http://www.itmembers.net |
 |
Subject |
 ¿À¶óŬ µ¥ÀÌÅÍ °Ë»ö - JOIN (1) EquJoin |
 |
 |
Áö±Ý±îÁö ¿ì¸®´Â ÇϳªÀÇ Å×À̺íÀ» ´ë»óÀ¸·Î °Ë»ö ¿¬½ÀÀ» Çß½À´Ï´Ù.
À̹ø ½Ã°£¿¡´Â µÎ °³ ÀÌ»óÀÇ Å×À̺í·ÎºÎÅÍ ¿øÇÏ´Â µ¥ÀÌÅ͸¦ °Ë»öÇÒ ¼ö ÀÖ´Â ¹æ¹ý¿¡ ´ëÇØ ¾Ë¾Æº¸±â·Î ÇÏÁÒ.

µÎ °³ ÀÌ»óÀÇ Å×À̺í·ÎºÎÅÍ ¿øÇÏ´Â Á¤º¸¸¦ °Ë»öÇϱâ À§Çؼ´Â JOIN ¹®À» »ç¿ëÇÕ´Ï´Ù.
±×·¯³ª JOINÀÌ ¹Ýµå½Ã µÎ °³ ÀÌ»óÀÇ Å×ÀÌºí¿¡¼¸¸ »ç¿ëµÇ´Â °ÍÀº ¾Æ´Õ´Ï´Ù. ÇϳªÀÇ Å×ÀÌºí¿¡¼µµ JOINÀ» »ç¿ëÇÏ¿© ¸¶Ä¡ µÎ °³ÀÇ Å×À̺íÀÎ °Íó·³ »ç¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù.(À̰ÍÀ» Self JoinÀ̶ó°í Çϴµ¥ ´ÙÀ½ ½Ã°£¿¡ ´Ù·ì´Ï´Ù.)
JOIN ¹æ¹ý¿¡´Â EQUJOIN, NON-EQUJOIN, OUTER JOIN, SELF JOIN µîÀÌ Àִµ¥
À̹ø ½Ã°£¿¡´Â EQUJOIN¿¡ ´ëÇØ¼¸¸ ¾Ë¾Æº¸±â·Î ÇϰڽÀ´Ï´Ù.
³ª¸ÓÁö ¼¼ Á¾·ùÀÇ JOIN ¹æ¹ýÀº ´ÙÀ½ ½Ã°£¿¡ ´Ù·ç±â·Î ÇÏÁÒ.

¸ÕÀú ½Ç½ÀÀ» ÅëÇØ EQUJOINÀÌ ¾î¶² °ÍÀÎÁö ´«À¸·Î È®ÀκÎÅÍ ÇÏÁÒ.
¾Æ·¡¿Í °°ÀÌ EMP_SKILL Å×À̺í°ú SKILL Å×À̺íÀÌ ÀÖ´Ù°í ÇÒ ¶§,

EMP_NUM, SKILL_NO, SKILL_NAMEÀ» Çѹø¿¡ Ç¥½ÃÇÏ°í ½Í½À´Ï´Ù.
±×·±µ¥ EMP_NUM Ä÷³Àº EMP_SKILL Å×ÀÌºí¿¡¸¸ ÀÖ°í,
EMP_NO Ä÷³Àº EMP_SKILL°ú SKILL Å×ÀÌºí ¸ðµÎ¿¡ ÀÖ°í,
SKILL_NAME Ä÷³Àº SKILL Å×ÀÌºí¿¡¸¸ ÀÖ½À´Ï´Ù.
Áï Ç¥½ÃÇÏ°í ½ÍÀº Ä÷³ÀÌ µÎ °³ÀÇ Å×ÀÌºí¿¡ ³ª´µ¾î ÀÖ´Ù´Â °ÍÀÔ´Ï´Ù.
ÀÌ·² ¶§ µÎ °³ÀÇ Å×ÀÌºí¿¡¼ ¿øÇÏ´Â Ä÷³¸¸ °ñ¶ó¼ Ç¥½ÃÇÏ·Á ÇÑ´Ù¸é JOINÀ» »ç¿ëÇÕ´Ï´Ù.
- ½Ç½ÀÀ» Çϱâ Àü¿¡ SKILL Å×À̺í Çϳª¸¦ ¸¸µì½Ã´Ù.
´ÙÀ½ Äڵ带 ±×´ë·Î º¹»çÇÏ¿© ½ÇÇàÇϸé À§¿Í °°Àº SKILL Å×À̺íÀÌ ¸¸µé¾îÁý´Ï´Ù.
DROP TABLE SKILL;
CREATE TABLE SKILL
( SKILL_NO CHAR(4) PRIMARY KEY,
SKILL_NAME VARCHAR2(30) NOT NULL);
INSERT INTO SKILL VALUES ('C101', 'CUSTOMER ENGINEER');
INSERT INTO SKILL VALUES ('D101', 'DATABASE ADMIN');
INSERT INTO SKILL VALUES ('E101', 'ERP ENGINEER');
INSERT INTO SKILL VALUES ('P101', 'PROGRAMMER');
INSERT INTO SKILL VALUES ('S101', 'SYSTEM PROGRAMMER');
INSERT INTO SKILL VALUES ('S102', 'SYSTEM ADMIN');
- ´ÙÀ½°ú °°ÀÌ ÀÔ·ÂÇÏ¿© ±× °á°ú¸¦ »ìÆì º¾½Ã´Ù.
SELECT A.EMP_NUM,
A.SKILL_NO,
B.SKILL_NAME
FROM EMP_SKILL A,
SKILL B
WHERE A.SKILL_NO = B.SKILL_NO;
FROM ÀýÀ» À¯ÀÇÇØ¼ º¸¼¼¿ä.
EMP_SKILL Å×À̺íÀ» A¶ó°í Çϰí, SKILL Å×À̺íÀ» B¶ó°í ÇÑ´Ù´Â ¶æÀÔ´Ï´Ù.
±×·² ¶§, AÀÇ EMP_NUM°ú AÀÇ SKILL_NO¿Í BÀÇ SKILL_NAMEÀ» Ç¥½ÃÇ϶ó´Â ¶æÀÔ´Ï´Ù.
±×·±µ¥ ¸ðµÎ Ç¥½ÃÇ϶ó´Â °ÍÀº ¾Æ´Õ´Ï´Ù. WHERE ÀýÀ» º¸¸é AÀÇ SKILL_NO¿Í BÀÇ SKILL_NO°¡ °°Àº °Í¸¸ Ç¥½ÃÇ϶ó´Â °ÍÀÌÁÒ.
ÀÌÇØµÇ½ÃÁÒ?
ÀÚ, ±×·³ Á¤¸®ÇÕ´Ï´Ù.
- JOINÀº Çϳª ÀÌ»óÀÇ Å×ÀÌºí¿¡¼ ¿øÇÏ´Â Ä÷³À» °Ë»öÇÒ ¶§ »ç¿ëÇÕ´Ï´Ù.
- ´Ü, JOINÀº FROM Àý¿¡¼ ¸í½ÃÇÑ Å×À̺íÀÇ Ä÷³¿¡¸¸ ÇÑÁ¤ÇÕ´Ï´Ù.
- À̶§ Ä÷³ °£ÀÇ °ªµéÀÌ ¼·Î ÀÏÄ¡ÇÒ ¶§¸¸ »ç¿ëÇÏ´Â JOINÀ» EQUJOINÀ̶ó°í ÇÕ´Ï´Ù.(À§¿¡¼ ½Ç½ÀÇÑ °Å!)
- ¹Ýµå½Ã WHERE ÀýÀÌ ÀÖ¾î¾ß°ÚÁÒ. À§ÀÇ ¿¹¿¡¼´Â 'A¿Í BÀÇ EMP_NO°¡ °°Àº ·¹ÄÚµå Áß¿¡¼'¶ó´Â Á¶°ÇÀÌ ÀÖ½À´Ï´Ù.
±×·±µ¥ ¸¸¾à WHERE Á¶°ÇÀÌ »ý·«µÇ¸é...? µÚ¿¡ ¼³¸íÀÌ ¾Æ¿À°ÚÁö¸¸ Cartesian Product¶ó´Â °ÍÀÌ ¹ß»ýÇÕ´Ï´Ù.(µÚ¿¡¼ ´Ù½Ã ¼³¸íÇϰڽÀ´Ï´Ù.)
- WHERE Á¶°ÇÀº ÃÖ¼ÒÇÑ Å×ÀÌºí ¼ö¿¡¼ Çϳª¸¦ »« °Í¸¸ÅÀº ÀÖ¾î¾ß ÇÕ´Ï´Ù. ±×·¡¾ß Cartesian Product¶ó´Â °Ô ¹ß»ýÇÏÁö ¾Ê½À´Ï´Ù.
- À§ÀÇ ¿¹¿¡¼ EMP_SKILL Å×À̺íÀ» A·Î, SKILL Å×À̺íÀ» B·Î Ç¥ÇöÇßÁÒ? ÀÌ·² ¶§ A¿Í B¸¦ Correlation Name(¿¬°üµÈ À̸§)À̶ó°í ºÎ¸¨´Ï´Ù.
EQUJOIN¿¡ ´ëÇØ ½Ç½ÀÀ» Çϳª ´õ ÇØº¸ÁÒ.
´ÙÀ½°ú °°Àº Å×À̺íÀÌ ÀÖÀ» ¶§
AÀÇ EMP_NUM°ú CÀÇ EMP_NUMÀÌ °°°í, BÀÇ SKILL_NO¿Í CÀÇ SKILL_NO°¡ °°Àº ·¹Äڵ带 °ñ¶ó EMP_NUM, LAST_NAME, SKILL_NO, SKILL_NAMEÀ» Ç¥½ÃÇÏ·Á¸é ¾î¶»°ÔÇØ¾ß ÇÒ±î¿ä?
 

¸ÕÀú Á÷Á¢ ÇØº¸½Ã°í, ´äÀ» È®ÀÎÇϽ÷Á¸é ¾Æ·¡ÀÇ ºó °ø°£À» ¸¶¿ì½º·Î µå·¡±×ÇÏ¸é º¸ÀÔ´Ï´Ù.
SELECT A.EMP_NUM,
LAST_NAME,
B.SKILL_NO,
SKILL_NAME
FROM EMP A,
SKILL B,
EMP_SKILL C
WHERE C.EMP_NUM = A.EMP_NUM
AND C.SKILL_NO = B.SKILL_NO;
¸¶Áö¸·À¸·Î Cartesian Product(īƼÀü ÇÁ·Î´öÆ®)¿¡ ´ëÇØ ¤°í ³Ñ¾î°¡°Ú½À´Ï´Ù.
CartesianÀº ¿ø·¡ 'µ¥Ä«¸£Æ®ÀÇ' ¶Ç´Â 'µ¥Ä«¸£Æ®ùÊ'À̶ó´Â ¶æÀÔ´Ï´Ù. ¼öÇп¡¼´Â ÆòÇà ¶Ç´Â Á÷°¢À̶ó´Â Àǹ̷Π»ç¿ëµË´Ï´Ù. Product´Â ¼öÇп¡¼ '°ö'À̶ó´Â ¶æÀÌÁÒ.
µû¶ó¼ Cartesina Product´Â 'Á÷°¢ÀÇ °ö'(?)À̶ó°í Ç®ÀÌÇϸé...... ´õ Çì±ò¸®°ÚÁÒ?
¼öÇп¡¼ īƼÀü °öÀº ÀÓÀÇÀÇ µÎ ÁýÇÕ A, B°¡ ÀÖÀ» ¶§, AÀÇ ¿ø¼Ò a¿Í BÀÇ ¿ø¼Ò b¸¦ Á¶ÇÕÇÏ¿© ¸¸µç (a,b)ÀÇ ¼ø¼½ÖÀ» ¸ðµÎ ¸ðÀº ÁýÇÕÀ» ¶æÇÕ´Ï´Ù. µû¶ó¼ AÀÇ ¿ø¼Ò°¡ 3°³À̰í BÀÇ ¿ø¼Ò°¡ 4°³À̸é A¿Í BÀÇ Cartesian Porduct´Â 3¡¿4°³°¡ ³ª¿É´Ï´Ù.
¾Æ·¡ ±×¸²À» º¸½ÃÁÒ.

EMP_SKILLÀÇ ·¹Äڵ尡 7°³, SKILLÀÇ ·¹Äڵ尡 6°³°¡ µÇ´Ï±î µÎ Å×À̺íÀÇ Cartesian Product´Â 42°³ÀÇ ·¹Äڵ尡 Ç¥½ÃµË´Ï´Ù.
µÎ °³ÀÇ Å×À̺íÀ» JOINÇÒ ¶§ ½Ç¼ö·Î WHERE ÀýÀ» »ç¿ëÇÏÁö ¾Ê¾Ò°Å³ª WHERE Á¶°ÇÀ» À߸ø ÁöÁ¤ÇÏ¸é ¶æÇÏÁö ¾Ê°Ô ÀÌ·± Cartesian Product°¡ ¹ß»ýÇϱ⵵ ÇÕ´Ï´Ù.
À§ÀÇ ±×¸²À» º¸¸é µÎ Å×À̺íÀÇ SKILL_NO°¡ °°Àº ·¹ÄÚµå Áß¿¡¼ EMP_NUM°ú SKILL_NO, SKILL_NAMEÀ» Ç¥½ÃÇϸé 7°³ÀÇ ·¹Äڵ尡 Ãâ·ÂµÇ¾î¾ß Çϴµ¥,
À߸øÇؼ WHERE A.SKILL_NO=B.SKILL_NO¶ó´Â Á¶°ÇÀ» ÁÖÁö ¾ÊÀ¸¸é 42°³ÀÇ ·¹Äڵ尡 Ãâ·ÂµË´Ï´Ù.
»ý°¢º¸´Ù ¼³¸íÀÌ ²Ï ±æ¾îÁ³³×¿ä. ŸÀÌÇÎÇÏ´À¶ó ¼Õ°¡¶ôÀÌ ´Ù ¾ÆÇÅ´Ï´Ù.
ÀÌ»ó µ¿Á־ƺü ¼Õº´¸ñÀ̾ú½À´Ï´Ù.
|
 |
 |
|
|
|