home > Á¤º¸¸¶´ç >
»çÀ̹ö°ÀǽÇ
Á¦ ¸ñ
[¿À¶óŬ±âÃʽǹ«] Quiz1.
±Û¾´ÀÌ
yjan
µî·ÏÀÏ
2009-03-30
÷ºÎ
³» ¿ë
¼ö¾÷½Ã°£¿¡ ROWNUM ¿¡ ´ëÇØ¼ ¹è¿ì¼ÌÁÒ ¸î°¡Áö ½Ç½Àµµ Çϼ̴µ¥...°ü·ÃµÈ Ãß°¡ ¼³¸í°ú
°ü·ÃµÈ ÄõÁ ³¾²²¿ä~~
(Á¶±Ý¾î·Á¿ï¼ö ÀÖÀ¸³ª...ÀÚ¼¼ÇÑ ¼³¸íÀº ¼ö¾÷½Ã°£¿¡~~)
-- ROWNUM ¿¡ ´ëÇÑ ¼³¸í....
ROWNUMÀ̶õ ¾î¶² Å×ÀÌºí ³»¿¡ ¹°¸®ÀûÀ¸·Î ÀúÀåµÇ¾î ÀÖ´Â Ä÷³ÀÌ ¾Æ´Ï¶ó
CURRVAL,NEXTVAL, ROWID, LEVEL µî°ú °°ÀÌ ¸ðµç SQL¿¡ ±×´ë·Î »ðÀÔÇØ¼ »ç¿ëÇÒ ¼ö ÀÖ´Â °¡»ó(Pseudo)ÀÇ Ä÷³ÀÌ´Ù. SQLÀÌ ½ÇÇàµÇ´Â °úÁ¤¿¡¼ ¹ß»ýÇÏ´Â ÀϷùøÈ£À̹ǷΠ°¢ SQL¼öÇà½Ã¸¶´Ù °°Àº ·Î¿ì¶ó ÇÏ´õ¶óµµ ¼·Î ´Ù¸¥ ROWNUMÀ» °¡Áú ¼ö ÀÖ´Ù. ±×·¯¹Ç·Î ÀÌ·¯ÇÑ ³»ºÎÀûÀÎ °ªÀ» Á¶°ÇÀý¿¡ »ç¿ëÇÏ¿© ¿ì¸®°¡ ¿øÇÏ´Â ¸¸Å¸¸ 󸮰¡ ¼öÇàµÇµµ·Ï ÇÒ ¼ö ÀÖ´Ù. ÀÌ ¹æ¹ý ¿ª½Ã Àüü¸¦ ó¸®ÇÏÁö ¾Ê°í ÀϺθ¸ ó¸®Çϵµ·Ï À¯µµÇÏ´Â ¹æ¹ýÀ̹ǷΠÇϳªÀÇ ºÎºÐ¹üÀ§Ã³¸®¶ó°í ¸»ÇÒ ¼ö ÀÖ´Ù.
SQL ½ÇÇà°úÁ¤ÀÇ ¾î´À ƯÁ¤ ºÎºÐ¿¡¼ ROWNUMÀÌ °áÁ¤µÇ¾îÁö¹Ç·Î Á¤È®È÷ ¾ËÁö ¸øÇÏ°í »ç¿ëÇÏ¸é ¿ì¸®°¡ ¿øÇÏÁö ¾Ê´Â °á°ú°¡ ÃßÃâµÉ ¼öµµ ÀÖ´Ù.
À妽º¸¦ ÅëÇØ ¿¢¼¼½ºÇÑ Å×À̺íÀÇ ·Î¿ìµé Áß¿¡ ´Ù¸¥ Á¶°ÇÀ» È®ÀÎÇÏ¿© ¸¸Á·ÇÏ´Â ·Î¿ìµé¸¸ ROWNUMÀÌ ºÎ¿©µÇ¾î ¿î¹Ý´ÜÀ§·Î º¸³»Áø´Ù´Â °ÍÀ» ¾Ë ¼ö ÀÖ´Ù.
±×·¯¹Ç·Î ¿î¹Ý´ÜÀ§°¡ ä¿öÁö°Å³ª ROWNUMÀÌ 10º¸´Ù Ä¿Áö´Â ¼ø°£ ¼öÇàÀ» ¸ØÃá´Ù. ¸¸¾à ¿¢¼¼½º´Â ÇßÀ¸³ª Á¶°ÇÀ» ¸¸Á·ÇÏ´Â ·Î¿ì°¡ ¾ø´Ù¸é ³¡±îÁö ROWNUM <= 10À» ¸¸Á·ÇÏÁö ¸øÇßÀ¸¹Ç·Î 󸮴 Àüü¹üÀ§°¡ ³¡³¯ ¶§±îÁö °è¼ÓµÉ °ÍÀÌ´Ù.
ROWNUMÀÌ ºñ·Ï SQL´ÜÀ§·Î »ý¼ºµÇ´Â °ªÀÌÁö¸¸ \'ORDER BY\'°¡ ¼öÇàµÇ±â Àü¿¡ ÀÌ¹Ì WHERE Àý¿¡ ÀÖ´Â Á¶°ÇÀ» ¸¸Á·ÇÏ´Â ·Î¿ì¸¶´Ù ºÎ¿©µÇ¾î Àӽðø°£¿¡ ÀúÀåµÈ´Ù. ±×·¯¹Ç·Î \'ORDER BY\'¸¦ ¼öÇàÇϱâ Àü¿¡ ÀÌ¹Ì \'ROWNUM<=10\'ÀÌ Àû¿ëµÇ¾î ´Ü 10°Ç¸¸ Á¤·ÄÇÏ¿© ¿î¹Ý´ÜÀ§·Î º¸³½´Ù. À̰ÍÀº ¿ì¸®°¡ ¿øÇÏ´Â °á°ú°¡ ¾Æ´Ò »Ó¸¸ ¾Æ´Ï¶ó ÃÖÁ¾ÀûÀ¸·Î ÃßÃâµÈ ·Î¿ìµéÀÇ ROWNUMÀº ¼øÂ÷ÀûÀ¸·Î ³ªÅ¸³ªÁöµµ ¾Ê´Â´Ù. ÀÌ¿Í °°ÀÌ Àüü ¹üÀ§Ã³¸®¸¦ ÇÏ´Â °æ¿ì´Â ÃÖÁ¾ÀûÀ¸·Î ÃßÃâµÇ´Â ·Î¿ìÀÇ ¼ø¼¿Í ROWNUMÀÌ ÀÏÄ¡ÇÏÁö ¾ÊÀ¸¸ç À߸øµÈ °á°ú¸¦ ÃßÃâÇÑ´Ù´Â »ç½ÇÀ» ¸í½ÉÇϱ⠹ٶõ´Ù.
±×·¯¹Ç·Î ÃßÃâµÇ´Â ·Î¿ì Áß¿¡ 10¹øÂ° ·Î¿ì¸¦ ã±â À§ÇØ \'...WHERE ROWNUM=10\'À» ¿ä±¸Çß´Ù¸é ÀÌ Á¶°ÇÀ» ¸¸Á·ÇÏ´Â ·Î¿ì´Â °áÄÚ ÃßÃâµÉ ¼ö°¡ ¾ø´Ù. ¿ø·¡ÀÇ Á¶°ÇÀ» ¸ðµÎ ¸¸Á·ÇÏ¿© ROWNUMÀÌ \'1\'ÀÌ µÉ ¼ö ÀÖ¾ú´Ù ÇÏ´õ¶óµµ Á¶°Ç¿¡ ÀÖ´Â \'ROWNUM=10\'¿¡ ÀÇÇØ¼ ¹«½ÃµÇ¾î ROWNUMÀº ¾ÆÁ÷ \'1\'ÀÌ µÇÁöµµ ¸øÇß´Ù. ±×·¯¹Ç·Î ROWNUMÀÌ \'1\'ÀÌ µÇÁö ¾Ê°í¼´Â ¿µ¿øÈ÷ ROWNUMÀº \'10\'ÀÌ µÉ ¼ö ¾øÀ¸¹Ç·Î ÀÌ·¯ÇÑ Á¶°ÇÀ» ¸¸Á·ÇÏ´Â ·Î¿ì´Â °áÄÚ Ã£À» ¼ö°¡ ¾ø´Ù.
SQL³»¿¡ ORDER BY ³ª GROUP BY°¡ ÀÖ´Ù¸é »óȲÀº ÀüÇô ´Þ¶óÁø´Ù. ¿ì¸®°¡ ¾î¶² Á¶°Ç¿¡ ¸Â´Â µ¥ÀÌÅ͸¦ ¿¢¼¼½ºÇÏ¿© Á¤·ÄÇÑ ¼ö 10°Ç¸¸ ÃßÃâÇϱâ À§Çؼ ´ÙÀ½°ú °°Àº SQLÀ» ¼öÇà½ÃŲ´Ù¸é ¿ì¸®°¡ ¿øÇÏ´Â °á°ú¸¦ ¾òÀ» ¼ö ¾ø´Ù.
-- Ãß°¡³»¿ë ÂüÁ¶´Â Á¦ ºí·Î±×·Î http://yjan.tistory.com/entry/±âÃʽǹ«-¿À¶óŬ-ROWNUM
2. QUIZ
°íÁ¤µÈ ÇüÅÂÀÇ È¸é¿¡¼ Ç×»ó Á¤È®È÷ 10 µî±îÁöÀÇ µ¥ÀÌÅ͸¸ ÇÊ¿äÇÑ °æ¿ìÀÌ´Ù.
´ÙÀ½°ú °°Àº EMP Å×À̺í°ú µ¥ÀÌÅͰ¡ ÀÖ´Ù.
SELECT ROWNUM, SAL, ENAME, JOB, EMPNO
FROM EMP
ORDER BY SAL DESC, ENAME;
ROWNUM µ¥ÀÌÅÍ´Â ORDER BY¿¡ ÀÇÇØ ¼ÒÆ® °¡ ¼öÇàµÇ±â Àü¿¡ ºÙ¿©Áö¹Ç·Î °á°ú´Â ´ÙÀ½°ú °°ÀÌ ³ªÅ¸³´Ù.
ROWNUM SAL ENAME JOB EMPNO
9 5000 KING PRESIDENT 7839
13 3500 FORD ANALYST 7902
8 3000 SCOTT ANALYST 7788
4 2975 JONES MANAGER 7566
6 2850 BLAKE MANAGER 7698
7 2450 CLARK MANAGER 7782
2 1600 ALLEN SALESMAN 7499
10 1500 TURNER SALESMAN 7844
14 1300 MILLER CLERK 7934 <--- 9¹øÂ° ·Î¿ì 9À§
5 1250 MARTIN SALESMAN 7654 <--- 10¹øÂ° ·Î¿ì 10À§ : CASE 2
3 1250 WARD SALESMAN 7521 <--- 11¹øÂ° ·Î¿ì 10À§ : CASE 1
11 1100 ADAMS CLERK 7876 <--- 12¹øÂ° ·Î¿ì 12À§
12 950 JAMES CLERK 7900
1 800 SMITH CLERK 7369
14 rows selected.
-- ¿ä±¸»çÇ×
À§ÀÇ µ¥ÀÌÅ͸¦ ÀÌ¿ëÇÏ¿© ¼øÀ§¸¦ ³ªÅ¸³»´Â Ä÷³°ú ÇÔ²² 10À§ ±îÁö ³ª¿À´Â SQL¹®°ú (À§ÀÇ »ùÇà µ¥ÀÌÅÍ °æ¿ì WARD, 11 ¹øÂ° ·Î¿ì) Á¤È®È÷ 10¹øÂ° ·Î¿ì±îÁö¸¸ ³ª¿À´Â (À§ÀÇ »ùÇà µ¥ÀÌÅÍ °æ¿ì MARTIN, 10 ¹øÂ° ·Î¿ì) SQL¹®À» ÀÛ¼ºÇ϶ó.
Áï, ´ÙÀ½°ú °°Àº °á°ú°¡ ³ª¿À°Ô Ç϶ó.
ROWNUM SAL ENAME JOB EMPNO
1 5000 KING PRESIDENT 7839
2 3500 FORD ANALYST 7902
3 3000 SCOTT ANALYST 7788
4 2975 JONES MANAGER 7566
5 2850 BLAKE MANAGER 7698
6 2450 CLARK MANAGER 7782
7 1600 ALLEN SALESMAN 7499
8 1500 TURNER SALESMAN 7844
9 1300 MILLER CLERK 7934
10 1250 MARTIN SALESMAN 7654
11 1250 WARD SALESMAN 7521
-- Ãß°¡³»¿ë ¹× ÂüÁ¶´Â Á¦ ºí·Î±×·Î http://yjan.tistory.com/entry/±âÃʽǹ«-Quiz-Á¤È®È÷-10À§±îÁö¸¸-±¸Ç϶ó
--Áߺ¹µ¥ÀÌÅÍ »èÁ¦
CREATE TABLE ADDRBOOK(
JUMIN VARCHAR2(14) NOT NULL,
NAME VARCHAR2(20),
ADDR VARCHAR2(50),
TEL VARCHAR2(20)
);
INSERT INTO ADDRBOOK VALUES('111111-1111111','È«±æµ¿','¼¿ï °³²±¸ ¿ª»ïµ¿','02-333-4567');
INSERT INTO ADDRBOOK VALUES('333333-4444444','°¡±æµ¿','¼¿ï °³²±¸ ´ëÄ¡µ¿','02-567-7654');
INSERT INTO ADDRBOOK VALUES('111111-1111111','È«±æµ¿','¼¿ï °³²±¸ ¿ª»ïµ¿','02-333-4567');
COMMIT;
SELECT JUMIN, NAME FROM ADDRBOOK;
DELETE FROM ADDRBOOK A WHERE ROWID > (SELECT MIN(ROWID) FROM ADDRBOOK B WHERE A.JUMIN = B.JUMIN);
ROLLBACK;
DELETE FROM ADDRBOOK A WHERE ROWID < (SELECT MAX(ROWID) FROM ADDRBOOK B WHERE A.JUMIN = B.JUMIN);
DELETE FROM ADDRBOOK A
WHERE ROWID IN
(SELECT ROWID
FROM (SELECT ROW_NUMBER()
OVER(PARTITION BY B.JUMIN ORDER BY B.JUMIN) ROW_NUM
FROM ADDRBOOK B)
WHERE ROW_NUM > 1);
SELECT ROWID, ENAME FROM EMP;
SELECT ENAME FROM EMP WHERE ROWID = 'AAAM3SAAEAAAAIVAAD';
SELECT ROWNUM,ENAME,SAL FROM EMP WHERE SAL>= 2900;
¼¿ï ±¸·Î±¸ ±¸·Îµ¿ 197-10 À̾ؾ¾º¥Ã³µå¸²Å¸¿ö2Â÷ 12Ãþ 1202, 1209È£ (ÁÖ)¿À¿£Á¦À̽ýºÅÛÁî,¿À¶óŬÀÚ¹Ù±³À°Çпø
´ëÇ¥ÀÚ¸í : ÀÌ Á¾ ö | »ç¾÷ÀÚ¹øÈ£ : 107-86-88432 | ÀüÈ:070-7555-4760~1 | ÆÑ½º :02-837-4760
Åë½ÅÆÇ¸Å¾÷ ½Å°í¹øÈ£ : Á¦2009-¼¿ï±¸·Î-0447È£
Copyright ¨Ï oraclejava.co.kr All rights reserved.