°úÁ¤ ¸ñÇ¥

º» °úÁ¤¿¡¼­´Â ´ÙÁß ¿­ ¼­ºêÄõ¸® ÀÛ¼º°ú SELECT ¹®ÀåÀÇ FROM Àý¿¡¼­ ¼­ºêÄõ¸®¸¦ ÀÛ¼ºÇÏ´Â ¹æ¹ýÀ» ¹è¿ó´Ï´Ù.

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

Áö±Ý±îÁö´Â SELECT ¹®ÀåÀÇ WHERE Àý ¶Ç´Â HAVING Àý¿¡¼­ ¿ÀÁ÷ ÇϳªÀÇ ¿­À» ºñ±³ÇÏ´Â ´ÜÀÏ Çà ¼­ºêÄõ¸®¿Í ´ÙÁß Çà ¼­ºêÄõ¸®¸¦ ÀÛ¼ºÇß½À´Ï´Ù. µÎ°³ ÀÌ»óÀÇ ¿­À» ºñ±³ÇÏ·Á°í ÇÑ´Ù¸é, ³í¸® ¿¬»êÀÚ¸¦ »ç¿ëÇÏ¿© È¥ÇÕ WHERE ÀýÀ» ÀÛ¼ºÇØ¾ß ÇÕ´Ï´Ù. ´ÙÁß ¿­ ¼­ºêÄõ¸®´Â Áߺ¹µÇ´Â WHERE Àý Á¶°ÇÀ» ´ÜÀÏ WHERE Àý·Î Á¶ÇÕÇϵµ·Ï ÇÕ´Ï´Ù.

±¸¹®Çü½Ä

 SELECT column, column, ...
 FROM   table
 WHERE  (column, column, ...) IN
                        (SELECT column, column, ...
                         FROM    table
                         WHERE   condition);

 

´ÙÁß ¿­ ¼­ºêÄõ¸® »ç¿ë

À§ÀÇ ¿¹´Â ¼­ºêÄõ¸®°¡ Çϳª ÀÌ»óÀÇ ¿­À» ¸®ÅÏÇϱ⠶§¹®¿¡ ´ÙÁß ¿­ ¼­ºêÄõ¸®ÀÔ´Ï´Ù. ÀÌ°ÍÀº SAL ¿­°ú COMM ¿­À» ºñ±³ÇÕ´Ï´Ù. ÀÌ°ÍÀº ±Þ¿©¿Í º¸³Ê½º°¡ ºÎ¼­ 30¿¡ ÀÖ´Â ¾î¶² Á¾¾÷¿øÀÇ ±Þ¿©¿Í º¸³Ê½º¿¡ ÀÏÄ¡ÇÏ´Â Á¾¾÷¿øÀÇ À̸§, ºÎ¼­ ¹øÈ£, ±Þ¿© ±×¸®°í º¸³Ê½º¸¦ µð½ºÇ÷¹ÀÌÇÕ´Ï´Ù.

À§ÀÇ SQL ¹®ÀåÀÇ °á°ú´Â ´ÙÀ½°ú °°½À´Ï´Ù.

ENAME         DEPTNO       SAL      COMM
---------- --------- --------- ---------
JAMES             30       950
WARD              30      1250       500
MARTIN            30      1250      1400
TURNER            30      1500         0
ALLEN             30      1600       300
BLAKE             30      2850

6 rows selected.

 

Pairwise ¿Í Nonpairwise ºñ±³

´ÙÁß ¿­ ¼­ºêÄõ¸®¿¡¼­ÀÇ ¿­ ºñ±³´Â pairwise ºñ±³ ¶Ç´Â nonpairwise ºñ±³ÀÔ´Ï´Ù. ¾Õ ½½¶óÀ̵åÀÇ ¿¹¿¡¼­ pairwise ºñ±³´Â WHERE Àý¿¡¼­ ½ÇÇàµË´Ï´Ù. SELECT ¹®ÀåÀÇ °¢ Èĺ¸ ÇàÀº ºÎ¼­ 30¿¡ ÀÖ´Â Á¾¾÷¿øÀÇ ±Þ¿©¿Í º¸³Ê½º¿¡ ÀÏÄ¡ÇÕ´Ï´Ù.

nonpairwise ºñ±³(a cross product)¸¦ ¿øÇÑ´Ù¸é ´ÙÁß Á¶°ÇÀ» °¡Áö´Â WHERE ÀýÀ» »ç¿ëÇØ¾ß ÇÕ´Ï´Ù.

 

Nonpairwise ºñ±³ ¼­ºêÄõ¸®

À§ÀÇ ¿¹´Â ¿­ÀÇ nonpairwise ºñ±³ÀÔ´Ï´Ù. ±Þ¿©¿Í º¸³Ê½º°¡ ºÎ¼­ 30¿¡ ÀÖ´Â Á¾¾÷¿øÀÇ ±Þ¿©¿Í º¸³Ê½º¿¡ ÀÏÄ¡ÇÏ´Â Á¾¾÷¿øÀÇ À̸§, ºÎ¼­ ¹øÈ£, ±Þ¿© ±×¸®°í º¸³Ê½º¸¦ µð½ºÇ÷¹ÀÌÇÕ´Ï´Ù.

À§ÀÇ SQL ¹®ÀåÀÇ °á°ú´Â ´ÙÀ½°ú °°½À´Ï´Ù.

ENAME         DEPTNO       SAL      COMM
---------- --------- --------- ---------
JAMES             30       950
BLAKE             30      2850
TURNER            30      1500         0
ALLEN             30      1600       300
WARD              30      1250       500
MARTIN            30      1250      1400

6 rows selected.

¸¶Áö¸· µÎ ÁúÀÇÀÇ ºñ±³ Á¶°ÇÀº ´Ù¸£Áö¸¸ °á°ú´Â °°½À´Ï´Ù. °á°ú´Â EMP Å×À̺íÀÇ Æ¯Á¤ µ¥ÀÌÅͷκÎÅÍ ±¸ÇØÁø °ÍÀÔ´Ï´Ù.

Pairwise ¼­ºêÄõ¸®

pairwise ¼­ºêÄõ¸®ÀÇ °á°ú´Â ¿ª½Ã ¶È°°ÀÌ 6°³ÀÇ ÇàÀ» ¸®ÅÏÇÕ´Ï´Ù.

 

Nonpairwise ¼­ºêÄõ¸®

nonpairwise ¼­ºêÄõ¸®ÀÇ °á°ú´Â Á¾¾÷¿ø ClarkÀ» Æ÷ÇÔÇÕ´Ï´Ù. ClarkÀÇ ±Þ¿©´Â Turner¿Í °°°í º¸³Ê½º´Â Allen°ú °°½À´Ï´Ù.

 

¼­ºêÄõ¸®ÀÇ °á°ú ÁýÇÕ¿¡ Null ¸®ÅÏ

À§ÀÇ SQL ¹®ÀåÀº ¾î¶² Á¾¼ÓÇÏ´Â Á÷¿øÀ» °¡ÁöÁö ¾Ê´Â Á¾¾÷¿øÀ» µð½ºÇ÷¹ÀÌ ÇÏ·Á°í ÇÕ´Ï´Ù. ³í¸®ÀûÀ¸·Î, ÀÌ SQL ¹®ÀåÀº 8°³ÀÇ ÇàÀ» ¸®ÅÏÇØ¾ß ÇÕ´Ï´Ù. ±×·¯³ª, SQL ¹®ÀåÀº ¾î¶² Ç൵ ¸®ÅÏÇÏ Áö ¾Ê½À´Ï´Ù. ³»ºÎ ÁúÀÇ¿¡ ÀÇÇØ ¸®ÅÏµÈ °ª ÁßÀÇ Çϳª°¡ null °ªÀ̹ǷΠÀüü ÁúÀÇ´Â ÇàÀÌ ¾ø´Ù°í ¸®ÅÏÇÕ´Ï´Ù. ±× ÀÌÀ¯´Â null °ªÀ» ºñ±³ÇÏ´Â ¸ðµç Á¶°ÇÀº nullÀÌ µÇ±â ¶§¹®ÀÔ´Ï´Ù. ±×·¡¼­ ¼­ºêÄõ¸®ÀÇ °á°ú ÁýÇÕÀÇ ÀϺΰ¡ null °ªÀÏ ¶§ NOT IN ¿¬»êÀÚ¸¦ »ç¿ëÇÏÁö ¸¶½Ê½Ã¿À. NOT IN ¿¬»êÀÚ´Â !=ALL°ú ¶È°°½À´Ï´Ù.

¼­ºêÄõ¸® °á°ú ÁýÇÕÀÇ ÀϺκÐÀ¸·Î¼­ÀÇ null °ªÀº IN ¿¬»êÀÚ¸¦ »ç¿ëÇÒ ¶§´Â ¹®Á¦°¡ µÇÁö ¾Ê½À´Ï´Ù. IN ¿¬»êÀÚ´Â =ANY¿Í ¶È°°½À´Ï´Ù. ¿¹¸¦ µé¸é, Á¾¼ÓÀûÀÎ ¾î¶² Á÷¿øÀ» °¡Áö´Â Á¾¾÷¿øÀ» µð½ºÇ÷¹ ÀÌ Çϱâ À§Çؼ­´Â ´ÙÀ½ÀÇ SQL ¹®ÀåÀ» »ç¿ëÇÕ´Ï´Ù.

SQL> SELECT    employee.ename   
  2  FROM      emp employee   
  3  WHERE     employee.empno IN (SELECT manager.mgr   
  4                               FROM  emp manager);


ENAME      
----------
KING      
¡¦
6 rows selected.      

 

  1. ´ÙÀ½ ¹®ÀåÀ» ½ÇÇàÇÏ´Â °æ¿ì ¼­ºêÄõ¸®³»¿¡ NULL°ªÀÌ Æ÷ÇԵǾî ÀÖ´Ù¸é ¸ÞÀÎÄõ¸®ÀÇ ½ÇÇà°á°ú´Â ¾î¶»°Ô µÇ°Ú´Â°¡?
    SELECT e.ename FROM emp e
    WHERE e.empno NOT IN ( SELECT m.mgr FROM emp m);

    A. Ç×»ó no rows selected
    B. Á¤»óÀû ¼öÇà
    ´ä
    X Á¤´ä:A


  2. ´ÙÀ½ º¸±âÀÇ µÎ SQL¹®ÀåÀÇ ½ÇÇà°á°ú´Â Ç×»ó µ¿ÀÏÇÏ´Ù.
    a. SELECT ename, deptno, sal, comm FROM emp
    WHERE (sal, NVL(comm, -1)) IN
    (SELECT sal, NVL(comm, -1) FROM emp WHERE deptno=30);
    b. SELECT ename, deptno, sal, comm FROM emp
    WHERE sal IN
    (SELECT sal FROM emp WHERE deptno=30)
    AND NVL(comm, -1) IN
    (SELECT NVL(comm, -1) FROM emp WHERE deptno=30);
    A. ±×·¸´Ù
    B. ¾Æ´Ï´Ù
    ´ä
    X Á¤´ä:B