°úÁ¤ ¸ñÇ¥

º» °úÁ¤¿¡¼­´Â SELECT ¹®ÀåÀÇ º¸´Ù Áøº¸µÈ Ư¡¿¡ ´ëÇؼ­ ¹è¿ï °ÍÀÔ´Ï´Ù. ¾Ë·ÁÁöÁö ¾ÊÀº Á¶°Ç °ªÀ» ±Ù°Å·Î °ªÀ» ±¸Çϱâ À§ÇØ ´Ù¸¥ SQL ¹®ÀåÀÇ WHERE Àý¿¡ ¼­ºêÄõ¸®¸¦ ÀÛ¼ºÇÕ´Ï´Ù. º» °úÁ¤Àº ´ÜÀÏ Çà ¼­ºêÄõ¸®¿Í ´ÙÁß Çà ¼­ºêÄõ¸®¸¦ ´Ù·ì´Ï´Ù.

 

¹®Á¦¸¦ ÇØ°áÇϱâ À§ÇÑ ¼­ºêÄõ¸® »ç¿ë

Jonesº¸´Ù ¸¹Àº ±Þ¿©¸¦ ¹Þ´Â Á¾¾÷¿øÀ» ã±â À§ÇÑ ÁúÀǸ¦ ÀÛ¼ºÇÏ°íÀÚ ÇÕ´Ï´Ù.
ÀÌ ¹®Á¦¸¦ ÇØ°áÇϱâ À§Çؼ­ µÎ°³ÀÇ ÁúÀÇ°¡ ÇÊ¿äÇÕ´Ï´Ù. ÇϳªÀÇ ÁúÀÇ´Â JonesÀÇ ±Þ¿©¸¦ ¾Ë±â À§ÇÑ °ÍÀÌ°í, µÎ¹ø° ÁúÀÇ´Â ±×°Íº¸´Ù ¸¹Àº ±Þ¿©¸¦ ¹Þ´Â Á¾¾÷¿øÀ» ã´Â °ÍÀÔ´Ï´Ù.
ÇϳªÀÇ ÁúÀǸ¦ ´Ù¸¥ ÁúÀÇ ³»ºÎ¿¡ µÎ´Â ¹æ¹ýÀ¸·Î µÎ°³ÀÇ ÁúÀǸ¦ Á¶ÇÕÇÏ¿© ÀÌ ¹®Á¦¸¦ ÇØ°áÇÒ ¼ö ÀÖ½À´Ï´Ù.
³»ºÎ ÁúÀÇ ¶Ç´Â ¼­ºêÄõ¸®´Â ¿ÜºÎÁúÀÇ ¶Ç´Â ¸ÞÀÎ Äõ¸®(main query)¿¡ ÀÇÇØ »ç¿ëµÇ´Â °ªÀ» ¸®ÅÏÇÕ´Ï´Ù. ¼­ºêÄõ¸®ÀÇ »ç¿ëÀº µÎ°³ÀÇ ÁúÀǸ¦ ¼øÂ÷ÀûÀ¸·Î ¼öÇàÇÏ¿© µÎ¹ø° ÁúÀÇÀÇ °Ë»ö °ªÀ¸·Î ù¹ø° ÁúÀÇÀÇ °á°ú¸¦ »ç¿ëÇÏ´Â °ÍÀÔ´Ï´Ù.

 

¼­ºêÄõ¸®

¼­ºêÄõ¸®´Â ´Ù¸¥ SELECT ¹®ÀåÀÇ Àý¿¡ ³»ÀåµÈ SELECT ¹®ÀåÀÔ´Ï´Ù. ¼­ºêÄõ¸®¸¦ »ç¿ëÇÏ¿© °£ ´ÜÇÑ ¹®ÀåÀ» °­·ÂÇÑ ¹®ÀåÀ¸·Î ¸¸µé ¼ö ÀÖ½À´Ï´Ù. Å×À̺í ÀÚüÀÇ µ¥ÀÌÅÍ¿¡ ÀÇÁ¸ÇÏ´Â Á¶°ÇÀ¸·Î Å×À̺íÀÇ ÇàÀ» °Ë»öÇÒ ÇÊ¿ä°¡ ÀÖÀ» ¶§ ¼­ºêÄõ¸®´Â ¾ÆÁÖ À¯¿ëÇÕ´Ï´Ù.

´ÙÀ½ÀÇ SQL Àý¿¡ ¼­ºêÄõ¸®¸¦ ÀÛ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù.

±¸¹®Çü½Ä¿¡¼­:

        operator        >, = ¶Ç´Â IN °°Àº ºñ±³ ¿¬»êÀÚ¸¦ Æ÷ÇÔÇÕ´Ï´Ù.

ÁÖ: ºñ±³ ¿¬»êÀÚ´Â ´ÜÀÏ Çà ¿¬»êÀÚ(>, =, >=, <, <>, <=)¿Í ´ÙÁß Çà ¿¬»êÀÚ(IN, ANY, ALL)°¡ ÀÖ½À´Ï´Ù.

¼­ºêÄõ¸®´Â Á¾Á¾  ÁßøµÈ SELECT, ºÎ¼Ó SELECT ¶Ç´Â ³»ºÎ SELECT ¹®ÀåÀ¸·Î ºÒ¸®¿öÁý´Ï´Ù. ÀϹÝÀûÀ¸·Î ¼­ºêÄõ¸®¸¦ ¸ÕÀú ½ÇÇàÇÏ°í, ±×°ÍÀÇ °á°ú¸¦ ¸ÞÀÎ Äõ¸® ¶Ç´Â ¿ÜºÎ ÁúÀÇ¿¡ ´ëÇÑ ÁúÀÇ Á¶°ÇÀ» ¿Ï¼ºÇϴµ¥ »ç¿ëÇÕ´Ï´Ù

¼­ºêÄõ¸® »ç¿ë

½½¶óÀ̵忡¼­ ³»ºÎ ÁúÀÇ´Â Á¾¾÷¿ø 7566ÀÇ ±Þ¿©¸¦ °áÁ¤ÇÕ´Ï´Ù. ¿ÜºÎ ÁúÀÇ´Â ³»ºÎ ÁúÀÇÀÇ °á°ú¸¦ ¹ÞÀ¸¸ç, ÀÌ ±Þ¿©º¸´Ù ¸¹ÀÌ ¹Þ´Â ¸ðµç Á¾¾÷¿øÀ» µð½ºÇ÷¹ÀÌÇϱâ À§ÇØ ÀÌ °á°ú¸¦ »ç¿ëÇÕ´Ï´Ù.

 

¼­ºêÄõ¸® »ç¿ë Áöħ

 

´ÜÀÏ Çà ¼­ºêÄõ¸®

´ÜÀÏ Çà ¼­ºêÄõ¸®´Â³»ºÎ SELECT ¹®ÀåÀ¸·ÎºÎÅÍ ÇϳªÀÇ ÇàÀ» ¸®ÅÏÇÏ´Â ÁúÀÇÀÔ´Ï´Ù. ÀÌ·± À¯ÇüÀÇ ¼­ºêÄõ¸®´Â ´ÜÀÏ Çà ¿¬»êÀÚ¸¦ »ç¿ëÇÕ´Ï´Ù. ½½¶óÀ̵å´Â ´ÜÀÏ Çà ¿¬»êÀÚÀÇ ¸ñ·ÏÀ» º¸¿©ÁÝ´Ï´Ù.

¿¹

¾÷¹«°¡ Á¾¾÷¿ø 7369°ú ¶È°°Àº Á¾¾÷¿øÀ» µð½ºÇ÷¹ÀÌÇÕ´Ï´Ù.  

SQL> SELECT   ename, job
  2  FROM     emp
  3  WHERE    job =
  4                 (SELECT  job
  5                  FROM     emp
  6                  WHERE    empno = 7369);


ENAME      JOB
---------- ---------
JAMES      CLERK
SMITH      CLERK
ADAMS      CLERK
MILLER     CLERK

 

´ÜÀÏ Çà ¼­ºêÄõ¸® ½ÇÇà

À§ÀÇ ¿¹´Â ¾÷¹«°¡ Á¾¾÷¿ø 7369ÀÇ ¾÷¹«¿Í °°°í, ±Þ¿©°¡ Á¾¾÷¿ø 7876º¸´Ù ¸¹Àº Á¾¾÷¿øÀ» µð½ºÇ÷¹ÀÌÇÕ´Ï´Ù.

¿¹´Â ¼¼°³ÀÇ ÁúÀÇ ºí·ÏÀ¸·Î ±¸¼ºµË´Ï´Ù: ÇÑ °³ÀÇ ¿ÜºÎ ÁúÀÇ¿Í µÎ °³ÀÇ ³»ºÎ ÁúÀÇ. ³»ºÎ ÁúÀÇ ºí·ÏµéÀÌ ¸ÕÀú ½ÇÇàµÇ°í, ÁúÀÇ °á°ú CLERK°ú 1100À» ¸®ÅÏÇÕ´Ï´Ù. ±×·± ´ÙÀ½¿¡ ¿ÜºÎ ÁúÀÇ ºí·ÏÀÌ Ã³¸®µÇ°í ¿ÜºÎ ÁúÀÇÀÇ °Ë»ö Á¶°ÇÀ» ¿Ï¼ºÇϱâ À§ÇØ ³»ºÎ ÁúÀÇ¿¡ ÀÇÇØ ¸®ÅÏµÈ °ªÀ» »ç¿ëÇÕ´Ï´Ù.

³»ºÎ ÁúÀÇ µÎ°³´Â ´ÜÀÏ °ª(CLERK°ú 1100)À» ¸®ÅÏÇϹǷΠÀÌ SQL ¹®ÀåÀ» ´ÜÀÏ Çà ¼­ºêÄõ¸® ¶ó°í ºÎ¸¨´Ï´Ù.

ÁÖ: ¿ÜºÎ ÁúÀÇ¿Í ³»ºÎ ÁúÀÇ´Â ´Ù¸¥ Å×À̺í·ÎºÎÅÍ µ¥ÀÌÅ͸¦ ±¸ÇÒ ¼ö ÀÖ½À´Ï´Ù.

 

¼­ºêÄõ¸®¸¦ °¡Áø HAVING Àý

¼­ºêÄõ¸®¸¦ WHERE Àý »Ó¸¸¾Æ´Ï¶ó HAVING Àý¿¡¼­µµ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿À¶óŬ ¼­¹ö´Â ¼­ºêÄõ¸®¸¦ ½ÇÇàÇÏ°í ±× °á°ú¸¦ ¸ÞÀÎ Äõ¸®ÀÇ HAVING Àý¿¡ ¸®ÅÏÇÕ´Ï´Ù.
½½¶óÀ̵åÀÇ SQL ¹®ÀåÀº ºÎ¼­ 20º¸´Ù ÃÖ¼Ò ±Þ¿©°¡ ¸¹Àº ¸ðµç ºÎ¼­¸¦ µð½ºÇ÷¹ÀÌÇÕ´Ï´Ù.

   DEPTNO   MIN(SAL)
--------- ---------
       10      1300
       30       950


¿¹


°¡Àå ÀûÀº Æò±Õ ±Þ¿©¸¦ ã½À´Ï´Ù.

SQL> SELECT     job, AVG(sal)
  2  FROM       emp
  3  GROUP BY   job
  4  HAVING     AVG(sal) = (SELECT    MIN(AVG(sal))
  5                         FROM      EMP
  6                         GROUP BY  job);

 

¼­ºêÄõ¸® ¿¡·¯

¼­ºêÄõ¸®ÀÇ ÀϹÝÀûÀÎ ¿¡·¯ÁßÀÇ Çϳª´Â ´ÜÀÏ Çà ¼­ºêÄõ¸®¿¡ ´ëÇؼ­ Çϳª ÀÌ»óÀÇ ÇàÀÌ ¸®Å쵂 ´Â °ÍÀÔ´Ï´Ù.

À§ÀÇ SQL ¹®Àå¿¡¼­ GROUP BY Àý(deptno)À» Æ÷ÇÔÇÏ´Â ¼­ºêÄõ¸®´Â °¢ ±×·ì¿¡ ´ëÇØ ´ÙÁß ÇàÀ» ¸®ÅÏÇÕ´Ï´Ù. ÀÌ °æ¿ì ¼­ºêÄõ¸®ÀÇ °á°ú´Â 800, 1300 ±×¸®°í 950ÀÌ µÉ °ÍÀÔ´Ï´Ù.

¿ÜºÎ ÁúÀÇ´Â ¼­ºêÄõ¸®ÀÇ °á°ú(800,950,1300)¸¦ ¹ÞÀ¸¸ç ÀÌ·¯ÇÑ °á°ú´Â WHERE Àý¿¡¼­ »ç¿ë µË´Ï´Ù. WHERE ÀýÀº ¿ÀÁ÷ ÇϳªÀÇ °ª¸¸À» ÇÊ¿ä·Î ÇÏ´Â ´ÜÀÏ Çà ºñ±³ ¿¬»êÀÚÀÎ µ¿µî(=) ¿¬»êÀÚ¸¦ Æ÷ÇÔÇÕ´Ï´Ù. = ¿¬»êÀÚ´Â ¼­ºêÄõ¸®·ÎºÎÅÍ ÇϳªÀÌ»óÀÇ °ªÀ» ¹ÞÀ» ¼ö ¾øÀ¸¹Ç·Î ¿¡·¯¸¦ ¹ß»ý½Ãŵ´Ï´Ù.

ÀÌ ¿¡·¯¸¦ Á¤Á¤ÇÏ·Á¸é = ¿¬»êÀÚ¸¦ INÀ¸·Î º¯°æÇÏ¸é µË´Ï´Ù.

 

´ÙÁß Çà ¼­ºêÄõ¸®

Çϳª ÀÌ»óÀÇ ÇàÀ» ¸®ÅÏÇÏ´Â ¼­ºêÄõ¸®¸¦ ´ÙÁß Çà ¼­ºêÄõ¸® ¶ó°í ºÎ¸¨´Ï´Ù. ´ÙÁß Çà ¼­ºêÄõ¸®´Â ´ÜÀÏ Çà ¿¬»êÀÚ ´ë½Å¿¡ ´ÙÁß Çà ¿¬»êÀÚ¸¦ »ç¿ëÇÕ´Ï´Ù. ´ÙÁß Çà ¿¬»êÀÚ´Â Çϳª ÀÌ»óÀÇ °ªÀ» ¿ä±¸ ÇÕ´Ï´Ù.

SQL> SELECT  ename, sal, deptno
  2  FROM    emp
  3  WHERE   sal IN (SELECT   MIN(sal)
  4                  FROM     emp
  5                  GROUP BY deptno);

¿¹

ºÎ¼­¿¡ ¼ÓÇÑ Á¾¾÷¿øÀÇ ÃÖ¼Ò ±Þ¿©¿Í µ¿ÀÏÇÑ ±Þ¿©¸¦ ¹Þ´Â Á¾¾÷¿øÀ» ã½À´Ï´Ù. °á°úÀûÀ¸·Î, ºÎ¼­¿¡¼­ ÃÖ¼Ò ±Þ¿©¸¦ ¹Þ´Â Á¾¾÷¿ø Á¤º¸¿¡, ±× ±Þ¿©¿Í µ¿ÀÏÇÑ ±Þ¿©¸¦ ¹Þ´Â ´Ù¸¥ ºÎ¼­ÀÇ Á¾¾÷¿øÀÇ Á¤º¸¸¦ °¡Á®¿Ã °ÍÀÔ´Ï´Ù.

³»ºÎ ÁúÀÇ°¡ ¸ÕÀú ½ÇÇàµÇ¾î ¼¼°³ÀÇ °á°ú 800, 950, 1300À» Æ÷ÇÔÇÏ´Â ÁúÀÇ °á°ú¸¦ »êÃâÇÕ´Ï´Ù. ±×·± ´ÙÀ½¿¡ ¸ÞÀÎ Äõ¸® ºí·ÏÀÌ Ã³¸®µÇ°í °Ë»ö Á¶°ÇÀ» ¿Ï¼º½ÃÅ°±â À§Çؼ­ ³»ºÎ ÁúÀÇ¿¡ ÀÇÇØ ¸® ÅÏµÈ °ªÀ» »ç¿ëÇÕ´Ï´Ù. »ç½Ç, ¸ÞÀÎ Äõ¸®´Â ¿À¶óŬ ¼­¹ö¿¡°Ô´Â ´ÙÀ½Ã³·³ º¸ÀÔ´Ï´Ù.

SQL> SELECT   ename, sal, deptno
  2  FROM     emp
  3  WHERE    sal IN (800, 950, 1300);

 

´ÙÁß Çà ¼­ºêÄõ¸®(°è¼Ó)

ANY ¿¬»êÀÚ(±×¸®°í ±×°ÍÀÇ synonym SOME ¿¬»êÀÚ)´Â °ªÀ» ¼­ºêÄõ¸®¿¡ ÀÇÇØ ¸®ÅÏµÈ °¢°¢ÀÇ °ª°ú ºñ±³ÇÕ´Ï´Ù. À§ÀÇ ¿¹´Â ±Þ¿©°¡ ¾î¶² clerkº¸´Ù ÀÛÀ¸¸é¼­ clerkÀÌ ¾Æ´Ñ Á¾¾÷¿øÀ» µð½ºÇ÷¹ÀÌ ÇÕ´Ï´Ù. ClerkÀÇ ÃÖ´ë ±Þ¿©´Â $1300ÀÔ´Ï´Ù. SQL ¹®ÀåÀº clerkÀÌ ¾Æ´Ï°í $1300 ÀÌÇϸ¦ ¹ö´Â ¸ðµç Á¾¾÷¿øÀ» µð½ºÇ÷¹ÀÌÇÕ´Ï´Ù.

<ANY ´Â ÃÖ´ë°ªº¸´Ù ÀÛÀ½À» ÀǹÌÇÕ´Ï´Ù.  >ANY´Â ÃÖ¼Ò°ªº¸´Ù ¸¹À½À» ÀǹÌÇÕ´Ï´Ù.  =ANY´Â IN°ú °°½À´Ï´Ù.

 

´ÙÁß Çà ¼­ºêÄõ¸®(°è¼Ó)

ALL ¿¬»êÀÚ´Â °ªÀ» ¼­ºêÄõ¸®¿¡ ÀÇÇØ ¸®ÅÏµÈ ¸ðµç °ª°ú ºñ±³ÇÕ´Ï´Ù. À§ÀÇ ¿¹´Â ±Þ¿©°¡ ¸ðµç ºÎ¼­ÀÇ Æò±Õº¸´Ù ¸¹Àº Á¾¾÷¿øÀ» µð½ºÇ÷¹ÀÌÇÕ´Ï´Ù. ºÎ¼­ÀÇ °¡Àå ¸¹Àº Æò±Õ ±Þ¿©´Â $2916.66 À̹ǷΠÁúÀÇ´Â $2916.66º¸´Ù ¸¹Àº ±Þ¿©¸¦ ¹Þ´Â Á¾¾÷¿øÀ» ¸®ÅÏÇÕ´Ï´Ù.

>ALLÀº ÃÖ´ë°ªº¸´Ù Å©´Ù´Â °ÍÀ» ÀǹÌÇϸç <ALLÀº ÃÖ¼Ò°ªº¸´Ù ÀÛ´Ù´Â °ÍÀ» ÀǹÌÇÕ´Ï´Ù.

NOT ¿¬»êÀÚ´Â IN, ANY ±×¸®°í ALL ¿¬»êÀÚ¿¡¼­µµ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

 

  1. ´ÙÀ½ ¹®Àå Áß ¹®¹ý¿¡ Ʋ¸° °ÍÀº?
    A. SELECT DEPTNO, NAME, SAL FROM EMP WHERE DEPT_ID=10, SALARY>=2000;
    B. SELECT DEPTNO »ç¹ø, SAL "¿ù ±Þ¿©" FROM EMP;
    C. SELECT EMPNO, SAL FROM EMP WHERE JOB = 'Sales Representitive';
    D. SELECT NAME, JOB, SAL FROM EMP WHERE SAL< (SELECT AVG(SAL) FROM EMP);
    ´ä
    X Á¤´ä:A


  2. ´ÙÀ½ ¹®Àå Áß ¹®¹ý¿¡ ¸Â´Â °ÍÀº?
    A. SELECT empno, ename FROM emp WHERE sal = ( SELECT avg(sal) FROM emp GROUP BY deptno);
    B. SELECT ename, job FROM emp WHERE job IN ( SELECT job FROM emp ORDER BY job);
    C. SELECT deptno, MIN(sal) FROM emp GROUP BY deptno HAVING (SELECT MIN(sal) FROM emp WHERE deptno=20) < MIN(sal);
    D. SELECT empno, ename, job FROM emp WHERE sal < ANY(SELECT sal FROM emp WHERE job='CLERK');
    ´ä
    X Á¤´ä:D