°úÁ¤ ¸ñÀû
º» °úÁ¤¿¡¼´Â
ºä »ý¼º°ú »ç¿ë¿¡ ´ëÇØ ¹è¿ó´Ï´Ù. ¶ÇÇÑ, ºä¿¡ ´ëÇÑ Á¤º¸¸¦ ÀÐ¾î µéÀ̱â À§ÇØ °ü·Ã µ¥ÀÌÅÍ »çÀü °´Ã¼¸¦ ÁúÀÇÇÏ´Â °ÍÀ» ¹è¿ì°Ô
µË´Ï´Ù.
ºä¶õ?
Å×À̺íÀÇ ºä¸¦
»ý¼ºÇÔÀ¸·Î½á µ¥ÀÌÅÍ Á¶ÇÕ ¶Ç´Â ³í¸®Àû ºÎºÐÁýÇÕÀ» ³ªÅ¸³¾ ¼ö ÀÖ½À´Ï´Ù. ºä´Â Å×ÀÌºí ¶Ç´Â ´Ù¸¥ ºä¸¦ ±âÃÊ·Î ÇÏ´Â ³í¸®Àû Å×À̺íÀÔ´Ï´Ù. ºä´Â ±×
ÀÚü·Î¼ ¼ÒÀ¯ÇÏ´Â µ¥ÀÌÅÍ ´Â ¾øÁö¸¸ ⹮ó·³ â¹®À» ÅëÇØ ¾î¶² µ¥ÀÌÅ͸¦ º¸°Å³ª º¯°æÇÒ ¼ö ÀÖ½À´Ï´Ù.
ºäÀÇ ÀåÁ¡
º¸´Ù ÀÚ¼¼ÇÑ Á¤º¸¸¦ ¾Ë°íÀÚ ÇÑ´Ù¸é, ´ÙÀ½À» ÂüÁ¶ÇϽʽÿÀ. Oracle Server SQL Reference, Release 7.3 ¶Ç´Â 8.0, ¡°CREATE VIEW.¡±
´Ü¼ø ºä¿Í º¹ÇÕ ºä
ºä´Â 2°¡Áö Á¾·ù Áï, ´Ü¼ø ºä¿Í º¹ÇÕ ºä°¡ ÀÖ½À´Ï´Ù.
±Ùº»ÀûÀÎ Â÷ÀÌÁ¡Àº DML(»ðÀÔ, °»½Å, »èÁ¦) ÀÛ¾÷¿¡ °ü·ÃµÇ¾î ÀÖ½À´Ï´Ù.
ºä »ý¼º
CREATE VIEW ¹®Àå¿¡¼ ¼ºêÄõ¸®¸¦ ³»ÀåÇÏ¿© ºä¸¦ »ý¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù.
±¸¹®¿¡¼:
OR REPLACE |
ÀÌ¹Ì Á¸ÀçÇÑ´Ù¸é ºä¸¦ ´Ù½Ã »ý¼ºÇÕ´Ï´Ù. |
FORCE |
±âº» Å×À̺íÀÇ Á¸Àç ¿©ºÎ¿¡ °ü°è¾øÀÌ ºä¸¦ »ý¼ºÇÕ´Ï´Ù. |
NOFORCE |
±âº» Å×À̺íÀÌ Á¸ÀçÇÒ °æ¿ì¿¡¸¸ ºä¸¦ »ý¼ºÇÕ´Ï´Ù. |
view |
ºäÀÇ À̸§ÀÔ´Ï´Ù. |
alias |
ºä ÁúÀÇ¿¡ ÀÇÇØ ¼±ÅÃµÈ Ç¥Çö½Ä¿¡ ´ëÇÑ À̸§À» ÁöÁ¤ÇÕ´Ï´Ù. º°ÄªÀÇ ¼ö´Â ºä¿¡ ÀÇÇØ ¼±ÅÃµÈ Ç¥Çö½ÄÀÇ ¼ö¿Í ÀÏÄ¡ÇØ¾ß ÇÕ´Ï´Ù. |
subquery |
SELECT ¹®ÀåÀ» ¿Ï¼ºÇÕ´Ï´Ù. SELECT ¸®½ºÆ®¿¡¼ ¿¿¡ ´ëÇÑ º°ÄªÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. |
WITH CHECK OPTION |
´ÜÁö ºä¿¡ ÀÇÇØ ¾×¼¼½º °¡´ÉÇÑ ÇุÀÌ »ðÀÔ, °»½ÅµÉ ¼ö ÀÖÀ½À» ¸í½ÃÇÕ´Ï´Ù. |
constraint |
CHECK OPTION Á¦¾à Á¶°Ç¿¡ ´ëÇØ ÁöÁ¤µÈ À̸§ÀÔ´Ï´Ù. |
WITH READ ONLY |
ºä¿¡¼ ¼öÇàµÉ ¼ö ÀÖ´Â DML ÀÛ¾÷ÀÌ Çϳªµµ ¾øÀ½À» È®½ÇÈ÷ ÇÕ´Ï´Ù. |
ºä »ý¼º (°è¼Ó)
À§ÀÇ ¿¹´Â ºÎ¼ 10ÀÇ ¸ðµç Á¾¾÷¿ø¿¡ ´ëÇÑ Á¾¾÷¿ø ¹øÈ£,
À̸§, ¾÷¹«¸íÀ» Æ÷ÇÔÇÏ´Â ºä¸¦ »ý¼ºÇÕ´Ï´Ù.
SQL*Plus DESCRIBE ¸í·É¾î¸¦ »ç¿ëÇÏ¿© ºäÀÇ ±¸Á¶¸¦ µð½ºÇ÷¹ÀÌ ÇÒ ¼ö
ÀÖ½À´Ï´Ù.
Name Null?
Type |
ºä »ý¼º Áöħ
ºä »ý¼º (°è¼Ó)
¼ºêÄõ¸®¿¡¼ ¿ º°ÄªÀ» Æ÷ÇÔÇÔÀ¸·Î½á ¿ À̸§À» Á¦¾îÇÒ ¼ö
ÀÖ½À´Ï´Ù.
À§ÀÇ ¿¹´Â ºÎ¼ 30¿¡ ´ëÇØ EMPLOYEE_NUMBER º°ÄªÀ» °®´Â Á¾¾÷¿ø ¹øÈ£, NAME º°ÄªÀ» °®´Â À̸§, SALARY º°ÄªÀ» °®´Â ±Þ¿©¸¦ Æ÷ÇÔÇÏ´Â ºä¸¦
»ý¼ºÇÕ´Ï´Ù.
¶Ç´Â, CREATE VIEW Àý¿¡¼ ¿ º°ÄªÀ» Æ÷ÇÔÇÏ¿© ¿ À̸§À» Á¦¾îÇÒ ¼ö ÀÖ½À´Ï´Ù.
ºä¿¡¼ µ¥ÀÌÅÍ °Ë»ö
ÀÓÀÇÀÇ
Å×ÀÌºí¿¡¼ ÇÒ ¼ö ÀÖ´Â °Íó·³ ºä·ÎºÎÅÍ µ¥ÀÌÅ͸¦ °Ë»öÇÒ ¼ö ÀÖ½À´Ï´Ù. Àüü ºäÀÇ ³»¿ëÀ» µð½ºÇ÷¹ÀÌ Çϰųª, ´ÜÁö ƯÁ¤ Çà°ú ¿¸¸À» º¼ ¼ö
ÀÖ½À´Ï´Ù.
µ¥ÀÌÅÍ »çÀüÀÇ ºä
ÀÏ´Ü ºä°¡ »ý¼ºµÇ¸é, ºäÀÇ À̸§°ú ºä Á¤ÀǸ¦ º¸±â À§ÇØ
USER_VIEWS ¶ó´Â µ¥ÀÌÅÍ »çÀü Å×À̺íÀ» ÁúÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù. ºä¸¦ ¸¸µå´Â SELECT ¹®ÀåÀÇ ÅؽºÆ®´Â LONG ¿¿¡
ÀúÀåµË´Ï´Ù.
µ¥ÀÌÅÍ ¾×¼¼½º ºä
ºä¸¦ »ç¿ëÇÏ¿© µ¥ÀÌÅ͸¦
¾×¼¼½º ÇÒ ¶§ ¿À¶óŬ ¼¹ö´Â ´ÙÀ½ ÀÛ¾÷À» ¼öÇàÇÕ´Ï´Ù:
1. USER_VIEWS µ¥ÀÌÅÍ »çÀü Å×ÀÌºí¿¡¼ ºä Á¤ÀǸ¦ °Ë»öÇÕ´Ï´Ù.
2. ºä
±â¹Ý Å×ÀÌºí¿¡ ´ëÇÑ ¾×¼¼½º ±ÇÇÑÀ» È®ÀÎÇÕ´Ï´Ù.
3. ºä ÁúÀǸ¦ ±âº» Å×ÀÌºí ¶Ç´Â Å×À̺íµé¿¡¼ÀÇ µ¿µîÇÑ ÀÛ¾÷À¸·Î ÀüȯÇÕ´Ï´Ù. ´Þ¸® ¸»Çϸé,
µ¥ÀÌÅÍ´Â ±âº» Å×ÀÌºí¿¡¼ °Ë»öµÇ°Å³ª, ±âº» Å×À̺íÀÇ µ¥ÀÌÅÍ¿¡ °»½ÅÀ» ÇÕ´Ï´Ù.
ºä ¼öÁ¤
OR
REPLACE ¿É¼ÇÀº ºñ·Ï ÀÌ À̸§ÀÌ ÀÌ¹Ì Á¸ÀçÇÒÁö¶óµµ ºä°¡ »ý¼ºµÉ ¼ö ÀÖµµ·Ï ÇØÁֹǷÎ, ±× ¼ÒÀ¯ÀÚ¿¡ ´ëÇÑ ¿À·¡µÈ ºä ¹öÀüÀ»
´ëüÇÕ´Ï´Ù.
ÁÖ:
CREATE VIEW Àý¿¡¼ ¿ º°ÄªÀ» ÁöÁ¤ÇÒ ¶§, º°ÄªÀº ¼ºêÄõ¸®ÀÇ ¿°ú µ¿ÀÏÇÑ ¸í·ÉÀ¸·Î ³ª¿µÊÀ» ¸í½ÉÇϽʽÿÀ.
º¹ÇÕ ºä »ý¼º
À§ÀÇ ¿¹´Â ºÎ¼¸í, ÃÖ¼Ò ±Þ¿©, ÃÖ´ë ±Þ¿©, ºÎ¼ÀÇ Æò±Õ
±Þ¿©ÀÇ º¹ÀâÇÑ ºä¸¦ »ý¼ºÇÕ´Ï´Ù. ´Ù¸¥ À̸§ÀÌ ºä¿¡ ´ëÇØ ÁöÁ¤µÆÀ½À» ¸í½ÉÇϽʽÿÀ. ºäÀÇ ¾î¶² ¿ÀÌ ÇÔ¼ö³ª Ç¥Çö½Ä¿¡¼ À¯·¡µÇ¾ú´Ù¸é º°ÄªÀº
ÇʼöÀûÀÔ´Ï´Ù.
SQL*Plus DESCRIBE ¸í·É¾î¸¦ »ç¿ëÇÏ¿© ºäÀÇ ±¸Á¶¸¦ º¼ ¼ö ÀÖ½À´Ï´Ù. SELECT ¹®ÀåÀ» »ý¼ºÇÏ¿© ºäÀÇ
³»¿ëÀ» µð½ºÇ÷¹ÀÌ ÇÕ´Ï´Ù.
SQL> SELECT * |
NAME MINSAL MAXSAL
AVGSAL |
ºä¿¡¼ DML ¿¬»ê ¼öÇà
¿¬»êÀÌ ¾î¶² ƯÁ¤ ±ÔÄ¢À» µû¸¥´Ù¸é ºä¸¦ ÅëÇØ µ¥ÀÌÅÍ¿¡ DML ÀÛ¾÷À» ¼öÇàÇÒ ¼ö ÀÖ½À´Ï´Ù.
´ÙÀ½ Áß ¾î´À °ÍÀ» Æ÷ÇÔÇÏÁö
¾Ê´Â´Ù¸é ºä¿¡¼ ÇàÀ» Á¦°ÅÇÒ ¼ö ÀÖ½À´Ï´Ù:
ºä¿¡¼ DML ¿¬»ê ¼öÇà ±ÔÄ¢ (°è¼Ó)
ÀÌÀü ½½¶óÀ̵å¿Í ´ÙÀ½ Áß ÀϺο¡¼
¾ð±ÞµÈ ÀÓÀÇÀÇ Á¶°ÇÀ» Æ÷ÇÔÇÏÁö ¾Ê´Â´Ù¸é ºä¿¡¼ µ¥ÀÌÅ͸¦ ¼öÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù:
À§ÀÇ ÀÓÀÇÀÇ Á¶°ÇÀ» Æ÷ÇÔÇÏÁö ¾Ê°í µðÆúÆ® °ª¾ø´Â NOT NULL ¿À» Æ÷ÇÔÇÏÁö ¾Ê´Â´Ù¸é, ºä¸¦ ÅëÇØ
µ¥ÀÌÅ͸¦ Ãß°¡ÇÒ ¼ö ÀÖ½À´Ï´Ù. ºä¸¦ ÅëÇØ ±âº» Å×À̺í·Î Á÷Á¢ÀûÀ¸·Î °ªÀ» Ãß°¡ÇÒ ¼ö ÀÖÀ½À» ¸í½ÉÇϽʽÿÀ.
º¸´Ù ÀÚ¼¼ÇÑ Á¤º¸¸¦ ¾Ë°íÀÚ
ÇÑ´Ù¸é, ´ÙÀ½À» ÂüÁ¶ÇϽʽÿÀ.
0racle8 Server SQL
Reference, Release 7.3 ¶Ç´Â 8.0, ¡°CREATE VIEW.¡±
WITH CHECK OPTION Àý »ç¿ë
ºä¸¦ ÅëÇØ ÂüÁ¶ ¹«°á¼º üũ¸¦ ¼öÇàÇÏ´Â °ÍÀÌ
°¡´ÉÇÕ´Ï´Ù. ¶ÇÇÑ µ¥ÀÌÅͺ£À̽º ·¹º§¿¡¼ Á¦¾à Á¶°ÇÀ» Àû¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ºä´Â µ¥ÀÌÅÍ ¹«°á¼ºÀ» º¸È£Çϱâ À§ÇØ »ç¿ëµÉ ¼ö ÀÖÁö¸¸, »ç¿ëÀº ¸Å¿ì
Á¦Çѵ˴ϴÙ.
ºä¸¦ ÅëÇØ ¼öÇàµÇ´Â INSERT¿Í UPDATE´Â WITH CHECK OPTION ÀýÀÌ ÀÖÀ¸¸é ºä¸¦ °¡Áö°í °Ë»öÇÒ ¼ö
¾ø´Â Çà »ý¼ºÀ» Çã¿ëÇÏÁö ¾ÊÀ½À» ¸í½ÃÇÕ´Ï´Ù. ±×·¯¹Ç·Î »ðÀԵǰųª °»½ÅµÇ´Â µ¥ÀÌÅÍ¿¡ ´ëÇؼ ¹«°á¼º Á¦¾àÁ¶°Ç°ú µ¥ÀÌÅÍ °ËÁõ üũ¸¦
Çã¿ëÇÕ´Ï´Ù.
ºä°¡ ¼±ÅÃÇÏÁö ¾ÊÀº Çà¿¡ ´ëÇØ DML ÀÛ¾÷À» ¼öÇàÇÏ·Á°í Çϸé, ÁöÁ¤µÈ Á¦¾àÁ¶°Ç ¸í°ú ÇÔ²² ¿¡·¯°¡ µð½ºÇ÷¹ÀÌ
µË´Ï´Ù.
SQL> UPDATE empvu20 |
ÁÖ: ºÎ¼¹øÈ£°¡ 10À¸·Î º¯°æµÈ´Ù¸é ºä´Â ´õ ÀÌ»ó ±× Á¾¾÷¿øµéÀ» º¼ ¼ö ¾ø±â ¶§¹®¿¡ ¾Æ¹« Ç൵ °»½ÅµÇÁö ¾Ê½À´Ï´Ù. ±×·¯¹Ç·Î, WITH CHECK OPTION Àý·Î ºä´Â ºÎ¼ 20 Á¾¾÷¿ø¸¸ º¼ ¼ö ÀÖ°í, ÀÌ Á¾¾÷¿øµé¿¡ ´ëÇÑ ºÎ¼¹øÈ£°¡ ºä¸¦ ÅëÇØ º¯°æµÇ´Â °ÍÀ» Çã¿ëÇÏÁö ¾Ê½À´Ï´Ù.
DML ¿¬»ê ºÎÁ¤
WITH READ ONLY ¿É¼ÇÀ¸·Î ºä¸¦ »ý¼ºÇÏ¿© ºä¿¡¼
DML ¿¬»êÀÌ ¼öÇàµÉ ¼ö ¾ø°Ô ÇÕ´Ï´Ù. À§ÀÇ ¿¹´Â ºä¿¡¼ ÀÓÀÇÀÇ DML ¿¬»êÀ» ÇÏÁö ¸øÇϵµ·Ï EMPVU10 ºä¸¦ ¼öÁ¤ÇÕ´Ï´Ù.
ºä¿¡¼
ÇàÀ» Á¦¾îÇÏ·Á°í ÇÏ¸é ¿¡·¯°¡ ¹ß»ýµË´Ï´Ù.
SQL> DELETE FROM empvu10 |
ºä Á¦°Å
ºä¸¦ Á¦°ÅÇϱâ
À§ÇØ DROP VIEW ¹®ÀåÀ» »ç¿ëÇÕ´Ï´Ù. ÀÌ ¹®ÀåÀº µ¥ÀÌÅͺ£À̽º¿¡¼ ºä Á¤ÀǸ¦ Á¦°ÅÇÕ´Ï´Ù. ºä »èÁ¦´Â ºä°¡ ¸¸µé¾îÁø ±âº» Å×ÀÌºí¿¡´Â ¿µÇâÀ»
¹ÌÄ¡Áö ¾Ê½À´Ï´Ù. ±× ºä¿¡ ±âÃÊÇÏ¿© ¸¸µé¾îÁø ºä ¶Ç´Â ´Ù¸¥ ¾îÇø®ÄÉÀ̼ÇÀº ¹«È¿È µË´Ï´Ù. »ý¼ºÀÚ ¶Ç´Â DROP ANY VIEW ±ÇÇÑÀ» °¡Áø
»ç¶÷¸¸ ºä¸¦ Á¦°ÅÇÒ ¼ö ÀÖ½À´Ï´Ù.
±¸¹®Çü½Ä¿¡¼:
view ºäÀÇ
À̸§ÀÔ´Ï´Ù.
ÀζóÀÎ ºä SELECT ¹®ÀÇ FROM Àý¿¡ ÀÖ´Â ÀζóÀÎ ºä´Â SELECT ¹®ÀÇ µ¥ÀÌÅÍ ¼Ò½º¸¦ Á¤ÀÇÇÕ´Ï´Ù. ´ÙÀ½ ¿¹Á¦¿¡¼ ÀζóÀÎ ºä b´Â EMP Å×ÀÌºí¿¡ ÀÖ´Â °¢ ºÎ¼ÀÇ ºÎ¼ ¹øÈ£ ¹× ÃÖ°í ±Þ¿©¿¡ ´ëÇÑ ¼¼ºÎ »çÇ×À» ¹ÝȯÇÏ¸ç ±âº» ÁúÀÇÀÇ WHERE a.deptno = b.deptno AND a.sal < b.maxsal ÀýÀº ÇØ´ç ºÎ¼¿¡¼ ÃÖ°í ±Þ¿©º¸´Ù Àû°Ô ¹Þ´Â ¸ðµç »ç¿ø¿¡ ´ëÇÑ »ç¿ø À̸§, ±Þ¿©, ºÎ¼ ¹øÈ£ ¹× ÃÖ°í ±Þ¿©¸¦ Ç¥½ÃÇÕ´Ï´Ù. SQL> SELECT a.ename, a.sal, a.deptno, b.maxsal 2 FROM emp a, (SELECT deptno, max(sal) maxsal 3 FROM emp 4 GROUP BY deptno) b 5 WHERE a.deptno = b.deptno 6 AND a.sal < b.maxsal;
ENAME SAL DEPTNO MAXSAL ---------- --------- --------- --------- CLARK 2450 10 5000 MILLER 1300 10 5000 ... TURNER 1500 30 2850 JAMES 950 30 2850 10 rows selected. |
¡°Top-N¡± ºÐ¼®
Top-N ÁúÀÇ´Â Å×ÀÌºí¿¡¼ Á¶°Ç¿¡ ´ëÇÑ ÃÖ»óÀ§ ·¹ÄÚµå n°³ ¶Ç´Â ÃÖÇÏÀ§ ·¹ÄÚµå n°³¸¦ Ç¥½ÃÇÏ´Â ½Ã³ª¸®¿À¿¡ À¯¿ëÇÕ´Ï´Ù. ÀÌ °á°ú ÁýÇÕÀº ´Ù¸¥ ºÐ¼®¿¡µµ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, Top-N ºÐ¼®À» »ç¿ëÇÏ¿© ´ÙÀ½ À¯ÇüÀÇ ÁúÀǸ¦ ¼öÇàÇÒ ¼ö ÀÖ½À´Ï´Ù.
¡°Top-N¡± ºÐ¼® ¼öÇà
Top-N ÁúÀÇ´Â ´ÙÀ½¿¡ ¼³¸íµÈ ¿ä¼Ò¿Í ÇÔ²² ÀÏ°ü¼º ÀÖ´Â Áßø ÁúÀÇ ±¸Á¶¸¦ »ç¿ëÇÕ´Ï´Ù.
¡°Top-N¡± ºÐ¼® ¿¹Á¦
½½¶óÀÌµå ¿¹Á¦´Â EMP Å×ÀÌºí¿¡¼ ÃÖ»óÀ§ ¼ÒµæÀÚ ¼¼ ¸íÀÇ À̸§ ¹× ±Þ¿©¸¦ Ç¥½ÃÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÕ´Ï´Ù. ¼ºê Äõ¸®´Â EMP Å×ÀÌºí¿¡¼ ¸ðµç »ç¿øÀÇ À̸§ ¹× ±Þ¿©¿¡ ´ëÇÑ ¼¼ºÎ »çÇ×À» ¹ÝȯÇÏ¿© ±Þ¿©ÀÇ ³»¸²Â÷¼øÀ¸·Î Á¤·ÄÇÕ´Ï´Ù. ±âº» ÁúÀÇÀÇ WHERE ROWNUM <= 3 Àý·Î ÀÎÇØ °á°ú ÁýÇÕ Áß »óÀ§ ·¹ÄÚµå ¼¼ °¡Áö¸¸ Ç¥½ÃµË´Ï´Ù.
´ÙÀ½Àº ÀζóÀÎ ºä¸¦ »ç¿ëÇÏ´Â Top-N ºÐ¼®ÀÇ ´Ù¸¥ ¿¹Á¦ÀÔ´Ï´Ù. ´ÙÀ½ ¿¹Á¦¿¡¼´Â ÀζóÀÎ ºä E¸¦ »ç¿ëÇÏ¿© ȸ»çÀÇ ÃÖÀå±â ±Ù¹« »ç¿ø ³× ¸íÀ» Ç¥½ÃÇÕ´Ï´Ù.
SQL> SELECT ROWNUM as SENIOR,E.ename, E.hiredate
2 FROM (SELECT ename,hiredate FROM emp
3 ORDER BY hiredate)E
4 WHERE rownum <= 4;
SENIOR ENAME HIREDATE
--------- ---------- ---------
1 SMITH 17-DEC-80
2 ALLEN 20-FEB-81
3 WARD 22-FEB-81
4 JONES 02-APR-81
Quick Quiz - SPL 12Àå