Linux Oracle ¼³Ä¡¿Í È°¿ë(¥±)

À̼öÁØ(dislevel@newhuman.org)

 

 

¼­   ·Ð

    Áö³­ È£¿¡¼­´Â Linux Oracle ÀÇ ¼³Ä¡¹ý°ú »ç¿ëÀÚ µî·Ï, ÀÚµ¿½ÃÀÛ/Á¾·á¸¦ ¼³Á¤ÇÏ´Â ¹æ¹ý¿¡ ´ëÇؼ­ ¾Ë¾Æº¸¾Ò´Ù. À̹ø È£¿¡¼­´Â sqlplus ÀÇ ±âº» »ç¿ë¹ý, Oracle SQL ÁúÀǾî, ±×¸®°í Pro*C ¿¡ ´ëÇØ ¾Ë¾Æº¸°í, ´ÙÀ½ È£¿¡¼­´Â PHP3 ¿Í ¿¬µ¿À» ÁÖÁ¦·Î ÀÌ ±ÛÀ» ¸¶Ä¥±î ÇÑ´Ù.

 

°¡. sqlplus ¸¦ ÀÌ¿ëÇÑ Oracle User ·ÎÀÇ Á¢¼Ó

    ¸ÕÀú Oracle ÀÌ ½Ã½ºÅÛ¿¡ ¼³Ä¡µÇ¸é¼­ ÀÚµ¿ÀûÀ¸·Î »ý¼ºµÇ´Â µÎ °³ÀÇ Æ¯º°ÇÑ »ç¿ëÀÚ °èÁ¤À» ¾Ë¾Æº¸ÀÚ.
    ÀÌ·¯ÇÑ »ç¿ëÀÚ°èÁ¤Àº ÀüÇüÀûÀ¸·Î µ¥ÀÌÅͺ£À̽º¸¦ À§ÇÑ ±âº»ÀûÀÎ µ¥ÀÌÅÍ µñ¼Å³Ê¸® Á¤º¸¸¦ À¯ÁöÇϱâ À§ÇÑ °ÍÀÌ´Ù. °¡´ÉÇÑ ÇÑ ºü¸¥ ½Ã°£ ³»¿¡ ±âº»ÀûÀ¸·Î ÁöÁ¤µÈ ¾ÏÈ£¸¦ ¹Ù²Ù´Â °ÍÀÌ ÁÁ´Ù.
    ¾î·°Å³ª Áö³­ È£¿¡¼­ ¼³¸íÇÑ ¹Ù¿Í °°ÀÌ »ç¿ëÀÚ °èÁ¤Àº ´ÙÀ½°ú °°ÀÌ »ý¼ºÇÒ ¼ö ÀÖ´Ù.

SQL*PLUS ¿¡ ¿¬°áÇÏ°í »ç¿ëÀÚ¸¦ »ý¼ºÇÑ´Ù.

      $ sqlplus system/manager

     SQL*Plus: Release 8.0.5.1.0 - Production

     Copyright (c) Oracle Corporation 1997.  All rights reserved.

     Connected to:

    Oracle8 Server Release 8.0.5.0.0 - Production Release

    PL/SQL Release 8.0.5.0.0 - Production

    SQL> create user <user> identified by <psw>

    User created.

    SQL> grant connect, resource to <user>

    Grant succeeded.

    SQL> exit
    Disconnected from Oracle8 Server Release 8.0.5.0.0 - Production Release
    PL/SQL Release 8.0.5.0.0 - Production

    ½Ã½ºÅÛ¿¡ »õ·Î¿î »ç¿ëÀÚ°èÁ¤À» »ý¼ºÇÏ¿´±â ¶§¹®¿¡ »õ·Î¿î °èÁ¤À» °¡Áö°í ½Ã½ºÅÛ¿¡ ·Î±×ÀÎ ÇÒ ¼ö ÀÖ´Ù. Oracle µ¥ÀÌÅͺ£À̽º¿¡ ·Î±×ÀÎ Çϱâ À§Çؼ­´Â ´ÙÀ½°ú °°´Ù.

     $ sqlplus <user>/<password>

    ÀÌÁ¦¾ß ºñ·Î¼Ò ¿©·¯ºÐÀº Oracle µ¥ÀÌÅͺ£À̽º¿Í ½ÇÁúÀûÀÎ ´ëÈ­¸¦ ÇÒ ¼ö ÀÖ´Â Áغñ°¡ ´Ù µÇ¾ú´Ù. ¿©·¯ºÐµéÀº sqlplus ¸¦ ÅëÇؼ­ ÀÌ ÀÏÀ» ÇÒ ¼ö ÀÖ´Ù.

 

³ª. sqlplus ÀÇ °£´ÜÇÑ ÀÌÇØ

    sqlplus ´Â ´ÙÀ½°ú °°Àº ±â´ÉÀ» Á¦°øÇÑ´Ù.

    ¹é¹®ÀÌ ºÒ¿©ÀÏ°ßÀ̶ó, °£´ÜÇÑ ¿¹Á¦¸¦ ÅëÇؼ­ À§ÀÇ »çÇ×À» Á¤¸®ÇØ º¸µµ·Ï ÇÏÀÚ. SQL À» ¸ÕÀú ¼³¸íÇÏ´À³Ä sqlplus¸¦ ¸ÕÀú ¼³¸íÇÏ´À³Ä ¹®Á¦´Â ÀÏ´Ü µ¤¾î³õÀÚ. (»ç½Ç Oracle À» ¼Õ´ë°íÀÚ ÇÑ´Ù¸é ±âº»ÀûÀÎ SQL Á¤µµ´Â ¾Ë°í ÀÖ¾î¾ß ÇÏÁö ¾ÊÀ»±î?)

    °¡Àå ¸¹ÀÌ ¾²´Â ¿¹·Î ÀüÈ­¹øÈ£ºÎ µ¥ÀÌÅͺ£À̽º¸¦ ±¸¼ºÇغ¸ÀÚ. ÀüÈ­¹øÈ£ºÎ¿¡´Â »ç¶÷ÀÇ À̸§, ÁÖ¼Ò, ÀüÈ­¹øÈ£ µîÀÇ Çʵ尡 ÇÊ¿äÇÏ´Ù. sqlplus »ó¿¡¼­ ´ÙÀ½À» ÀÔ·ÂÇØ º¸ÀÚ.

    [oracle@ora oracle]$ sqlplus dislevel/****** ; ¿©·¯ºÐÀÌ »ý¼ºÇÑ »ç¿ëÀÚ·Î Á¢¼ÓÇÒ °Í!!
     SQL*Plus: Release 8.0.5.0.0 - Production on Tue Jul 13 18:22:0 1999

     (c) Copyright 1998 Oracle Corporation.  All rights reserved.

     Connected to:
     Oracle8 Server Release 8.0.5.1.0 - Production
     PL/SQL Release 8.0.5.1.0 - Production

     SQL>
     SQL> create table tel_list (
       2  name       char(20),  ; À̸§ Çʵå
       3  addr       char(50),  ; ÁÖ¼Ò Çʵå
       4  phone      char(15));  ; ÀüÈ­¹øÈ£ Çʵå

     Table created.

     SQL>

    sqlplus ¸¦ »ç¿ëÇØ º¸¸é ¾Ë°ÚÁö¸¸, postgresql ÀÇ ±×°Íº¸´Ù´Â ÈξÀ ºÒÆíÇÒ °ÍÀÌ´Ù. Å×À̺íÀ» ±¸¼ºÇÏ´Â Çʵ尡 ¸î °³ ¾ÈµÇ±â¿¡ ¸ÁÁ¤ÀÌÁö, ¼ö½Ê°³³ª µÇ´Â ÇʵåÁß¿¡¼­ Çϳª¶óµµ öÀÚ³ª ¹®¹ýÀÌ À߸øµÈ´Ù¸é óÀ½ºÎÅÍ ´Ù½Ã ÃľߵǴ ºÒ»ó»ç°¡ »ý±â¸®¶ó. ´ç¿¬È÷, ¿©·¯ºÐµéÀ» µµ¿ÍÁÙ ÁÁÀº ¹æ¹ýÀÌ ÀÖ±â´Â Çѵ¥, ¹Ù·Î vi °°Àº ÆíÁý±â¸¦ ÀÌ¿ëÇÏ´Â ¹æ¹ýÀÌ´Ù. sqlplus »ó¿¡¼­ vi ÆíÁý±â¸¦ ºÎ¸£·Á¸é ´ÙÀ½°ú °°ÀÌ ÇÑ´Ù.

     SQL>
     SQL> !vi ÆÄÀϸí (sql ¹®À» »ç¿ëÇÏ·Á¸é ÆÄÀϸí.sql ·Î ÆÄ ÀÏ À̸§À» Á¤ÇÑ´Ù.)

    ÀÌÁ¦ ¿©·¯ºÐµéÀº ¸¾ ³õ°í SQL ¹®À» ÆíÁý ÇÒ ¼ö ÀÖ´Ù. ºñ·Ï °£´ÜÇÑ ¹®ÀåÀ̱â´Â ÇÏÁö¸¸ À§ÀÇ SQL ¹®À» vi¸¦ ÀÌ¿ëÇØ ÀÔ·ÂÇÏ°í ÀúÀåÇÏÀÚ. ÆÄÀÏ À̸§À» tel_list.sql À̶ó°í Çß´Ù¸é, ´ÙÀ½°ú °°ÀÌ start ¹®À» ÀÌ¿ëÇÑ´Ù.

     ~
     ~
     ~
     ¡°tel_list.sql¡± [New File] 5 lines, 89 characters written

     SQL> start tel_list.sql

     Table created.

     SQL>

    °£´ÜÇϳª¸¶, sqlplus ¿¡¼­ÀÇ ÀÛ¾÷À» ¸î °¡Áö ÇØ º¼ ¼ö ÀÖ¾ú´Ù. ¾Æ½Ã´Ù½ÃÇÇ, µ¥ÀÌÅͺ£À̽º¿¡¼­ÀÇ ÀÛ¾÷Àº ´ëºÎºÐ table ÀÇ »ý¼º°ú »èÁ¦, ÀÚ·áÀÇ ÀÔ·Â, »èÁ¦ ¼öÁ¤ µîÀÌ´Ù. ±× ÀÌ¿Ü¿¡ ½Ã½ºÅÛ °ü¸® ÀûÀÎ Ãø¸éÀº µ¥ÀÌÅͺ£À̽º ½Ã½ºÅÛ¸¶´Ù Á¶±Ý¾¿ Â÷ÀÌ°¡ ÀÖÀ¸¹Ç·Î Á» ´õ ±í¼÷ÇÑ ³»¿ëÀº ÇØ´ç ¸Å´º¾óÀ̳ª Ã¥ µîÀ» Âü°íÇÏ´Â °ÍÀÌ ÁÁ´Ù. sqlplus ¿¡¼­ »ç¿ëµÇ´Â ¸î °¡Áö ±â´ÉÀ» ´õ »ìÆ캸ÀÚ.

      Table ÀÇ »èÁ¦

       drop table <table_name>;

    Table ÀÇ ±¸¼º ¿ä¼Ò È®ÀÎ

    desc table tel_list;   ; tel_list .. ¿ª½Ã table_name ÀÌ´Ù.  
    ¿ì¸®°¡ »ý¼ºÇÑ tel_list ¿¡ ´ëÇÑ ±¸¼ºÀ» È®ÀÎÇÒ ¼ö ÀÖ´Ù.

      Name                            Null?    Type
      ------------------------------- -------- ----
      NAME                                     CHAR(20)
      ADDR                                     CHAR(50)
      PHONE                                    CHAR(15)

     SQL>

    SQL ¸í·É Áß ·¹ÄÚµåÀÇ º¯°æÀ» ¹ß»ý½Ãų ¼ö ÀÖ´Â ¸í·ÉÀ» ½ÇÇàÇÏ°íÀÚ ÇÒ °æ¿ì. delete, update, insert µîµî, ¿¡´Â commit ¸í·ÉÀ» ÇØ ÁÖ¾î¾ß ±× Áï½Ã È¿°ú¸¦ º¼ ¼ö ÀÖ´Ù. commit ´ë½Å rollback ¸í·ÉÀ» ½ÇÇàÇϸé delete ³ª update, insert µîÀÇ ¹®ÀåµéÀÌ ¸í·É Ãë¼Ò°¡ µÈ´Ù.

    commit;

    ollback;

    ´ÙÀ½ÀÇ ¿¹Á¦´Â ¹»±î? Á¶±Ý µ¶Æ¯Çϱâ´Â Çѵ¥ ÀÌ ºÎºÐÀº µ¶ÀÚ ¿©·¯ºÐµé¿¡°Ô ¼÷Á¦·Î ³²±â°Ú´Ù.

     select * from user_objects;

     sqlplus ÀÇ Á¾·á´Â ´ÙÀ½°ú °°ÀÌ ÇÑ´Ù.
    SQL> exit
     Disconnected from Oracle8 Server Release 8.0.5.1.0 - Production
     PL/SQL Release 8.0.5.1.0 - Production
     [oracle@ora oracle]$

 

´Ù. Oracle µ¥ÀÌÅÍ Å¸ÀÔ

    ÀÌÁ¦ sqlplus ¿¡¼­ °£´ÜÇϳª¸¶ ¸î °¡Áö ÀÛ¾÷À» ÇÒ ¼ö ÀÖÀ¸¹Ç·Î ÀÌÁ¦´Â Oracle ÀÇ SQL À» ¿©·¯ °³ ¤¾îº¸±â·Î ÇÏÀÚ. sqlplus ¿¡ ´ëÇÑ ´õ ÀÚ¼¼ÇÑ ³»¿ëÀº ¿ª½Ã RTFM !!

    ColumnÀÇ À¯ÇüÀº ¸Å¿ì ¸¹Àºµ¥ ±âº»ÀûÀÎ µ¥ÀÌÅÍ À¯ÇüÀº ¹®ÀÚ, ¼ýÀÚ, DATE, RAW°¡ ÀÖ´Ù.
    ±âŸ ÀÚ¼¼ÇÑ ³»¿ëÀº ¿ª½Ã RTFM ÀÌ°í(ÀÌ ¿¬Àç´Â Oracle ¸Å´º¾óÀÌ ¾Æ´ÔÀ» ¾Ë¾ÆÁֱ⠹ٶõ´Ù) ´Ù¸¸ date Çü¿¡ °üÇÑ °£´ÜÇÑ ¿¹Á¦¸¦ µé±î ÇÑ´Ù. ¿©·¯ºÐµéÀÌ ½Ã°£À» Ç¥ÇöÇÏ°íÀÚ ÇÒ ¶§, ¡®YYYY-MM-DD HH:MI:SS PM¡¯ Çü½ÄÀ¸·Î ±¸ÇÏ°í ½Í´Ù¸é ´ÙÀ½°ú °°ÀÌ ÇØ ÁØ´Ù.

     SQL> select TO_CHAR(SYSDATE,¡¯YYYY-MM-DD HH:MI:SS PM¡¯) from DUAL;

     TO_CHAR(SYSDATE,¡¯YYYY-
     ----------------------
     1999-07-13 08:26:43 PM

     SQL>

    À§ ¿¹Á¦´Â ÇöÀçÀÇ (½Ã½ºÅÛ)½Ã°£À» ¿øÇÏ´Â Çü½Ä´ë·Î º¸¿©ÁØ ¿¹ÀÌ´Ù. TO_CHAR À̶ó´Â ¸»Àº ÁüÀÛÇÏ°ÚÁö¸¸, ÀÚ·áÇüÀ» char ÇüÀ¸·Î ¹Ù²Ù¾î ÁØ´Ù. ½Ã°£À» ¹®ÀÚÇüÀ¸·Î ¹Ù²Ù¾î ¿©·¯ºÐµéÀÌ È°¿ëÇÒ ¼ö ÀÖ´Ù´Â ¸»ÀÌ´Ù.

 

¶ó. Oracle SQL ¾ð¾î

    Oracle SQL Àº ±â´É»ó ´ÙÀ½ 3 °³ÀÇ ºÐ¾ß·Î ³ª´«´Ù.

    DDL(Data Definetion Language)  ¿ÀºêÁ§Æ® Á¤ÀÇ ±â´É, Å×ÀÌºí »ý¼º

    CREATE               »ý¼º (CREATE·Î »ý¼ºÇÑ TableÀº DROPÀ¸·Î »èÁ¦ÇÑ´Ù.)
     ALTER               ¼öÁ¤
     DROP                 »èÁ¦

    DML(Data Manipulation Language)  µ¥ÀÌŸ Á¶ÀÛ ±â´É,Çà°ú ¿­¿¡ ´ëÇÑ ÀÛ¾÷

     SELECT               µ¥ÀÌÅÍ Ãëµæ
     DELETE               ÇØ´ç µ¥ÀÌÅÍ »èÁ¦
     INSERT                µ¥ÀÌÅÍ »ðÀÔ
     UPDATE               µ¥ÀÌÅÍ ¼öÁ¤

    DCL(Data Contorl Language)  µ¥ÀÌŸ Á¦¾î ±â´É, À¯Àú°ü¸®

     GRANT
     ROVOKE

    ºñ·Ï ¼³¸íÀº ºÎÁ·ÇßÁö¸¸, ¾î·°Å³ª ¿©·¯ºÐÀº create ¹®À» ÅëÇØ µ¥ÀÌÅͺ£À̽º »ç¿ëÀÚ, table µîÀ» ¸¸µé¾î µÐ »óÅ´Ù. (Á» Àü¿¡ tel_list ¶ó´Â table À» ¸¸µé¾î µÐ °ÍÀ» ±â¾ïÇÏÀÚ) ÀÌ°ÍÀ» ÀÌ¿ëÇØ À§ÀÇ SQL ¸í·É¾î¸¦ ÀÌÇØÇØ º¸ÀÚ. ÀÌ ¿¬Àç¿¡¼­ ÁÖ·Î ´Ù·ç´Â ³»¿ëÀº select, delete µîÀÇ DML ¸í·É¾îµéÀÌ´Ù. ¸ÕÀú ¾Æ±î ¸¸µé¾î µÐ tel_list table ¿¡ ¾î¶² °ªÀ» ³Ö¾îº¸±â·Î ÇÏÀÚ.

    SQL> insert into tel_list values
       2  (¡®À̼öÁØ¡¯,¡¯¼­¿ï½Ã °­³²±¸ ³íÇöµ¿ 261¡¯,¡¯02-3218-****¡¯);

     1 row created.

     SQL>

    Insert ±¸¹®Àº ºñ±³Àû °£´ÜÇÏ´Ù. ÇØ´ç Å×ÀÌºí ¸í°ú °ªÀ» Â÷·Ê´ë·Î Áý¾î³ÖÀ¸¸é µÈ´Ù. ¿©·¯ °¡Áö SQL ±¸¹®ÀÇ ¿¬½ÀÀ» À§ÇØ Á» ´õ ¸¹Àº µ¥ÀÌÅ͸¦ »ðÀÔÇϱ⠹ٶõ´Ù. ´ÙÀ½Àº ¿Ã·ÁÁø ÀÚ·áÀÇ ¼öÁ¤ÀÌ´Ù.

    SQL> update tel_list set phone = ¡®016-223-****¡¯ where name = ¡®À̼öÁØ¡¯;

     1 row updated.

     SQL>
    À̸§ÀÌ ¡®À̼öÁØ¡¯ ÀÎ »ç¶÷ÀÇ ÀüÈ­¹øÈ£¸¦ ¡®016-223-****¡¯ ·Î ¹Ù²Û ¿¹ÀÌ´Ù. where À̶ó´Â »õ·Î¿î ±¸¹®ÀÌ ³ª¿Ô´Âµ¥, ÀÌ°ÍÀº ÁúÀǸ¦ Á» ´õ ¸íÈ®ÇÏ°Ô Á¦¾àÇØ ÁØ´Ù. À§ÀÇ ¹®ÀåÀ» where Àý ÀÌÇϸ¦ »ý·«ÇÏ°í ½ÇÇàÇÑ´Ù¸é table »óÀÇ ¸ðµç phone ÀÚ·á°¡ ¡®016-223-****¡¯ ·Î ¹Ù²î¾îÁ® ¹ö¸± °ÍÀÌ´Ù. ´ÙÀ½Àº ÀÚ·áÀÇ »èÁ¦ÀÌ´Ù. ¿ª½Ã where ÀýÀ» ÅëÇØ Á¦¾àÀ» ÇØ ÁÖ¾ú´Ù. ¹«½¼ ¶æÀÎÁö´Â Àß ¾Ë °ÍÀÌ´Ù.

    SQL> delete from tel_list where name=¡¯À̼öÁØ¡¯;

     1 row deleted.

    ¸¶Áö¸·À¸·Î select ±¸¹®ÀÌ´Ù. select ±¸¹®À» ¸Ç ¸¶Áö¸·À¸·Î ÇÑ ÀÌÀ¯´Â ´Ù¸¥ ÁúÀǾî¿Í´Â ´Þ¸® ºÎ°¡ÀûÀÎ ±¸¹®ÀÌ ¸¹±â ¶§¹®ÀÌ´Ù. ÀÌÁ¦ºÎÅÍ Çϳª¾¿ »ìÆ캸±â·Î ÇÏÀÚ. ´ÙÀ½Àº ±âº»ÀûÀÎ select ±¸¹®ÀÌ´Ù. º¸±â ½±°Ô ¾à°£ ¼ÕÁúÇß´Ù.

     SQL> select * from tel_list;

     NAME            ADDR                        PHONE
     ------ ----------------------------------------
     Àü¼ºÈñ     ¼­¿ï½Ã °­³²±¸ ³íÇöµ¿ 261   02-3218-****
     ±èÇü±Ô     ´ë±¸                                053-642-****
     ÀÌ¹Ì°æ     ´ë±¸                                016-546-****
     ¼±ÀºµÎ     ºÎ»ê                                0523-387-****

     SQL> select name, phone from tel_list;

     NAME         PHONE
     -------------------- ---------------
     Àü¼ºÈñ        02-3218-****
     ±èÇü±Ô        053-642-****
     ÀÌ¹Ì°æ        016-546-****
     ¼±ÀºµÎ        0523-387-****

     SQL> select * from tel_list where name like ¡®ÀÌ%¡¯;

     NAME             ADDR         PHONE
     ------ -----------------------------------------
     ÀÌ¹Ì°æ              ´ë±¸         016-546-****

     SQL>

    Çϳª¾¿ »ìÆ캸±â·Î ÇÏÀÚ. óÀ½ ÁúÀÇ ¹®Àº °£´ÜÇÏ´Ù. tel_list TABLE »óÀÇ ¸ðµç ÀڷḦ º¸¿©ÁØ´Ù. µÎ ¹ø° ÁúÀÇ ¹®Àº ¿øÇÏ´Â ÀÚ·á(¿¹·Î À̸§°ú ÀüÈ­¹øÈ£)¸¸À» º¸¿©ÁØ´Ù. ¼¼ ¹ø° ÁúÀǹ®Àº Á¶±Ý µ¶Æ¯ÇÏ´Ù. where Àý ÀÌÇÏ¿¡¼­ name ÇʵåÀÇ Á¦¾àÀÌ ¡®like¡¯ ·Î ³ª¿ÍÀÖ´Ù. ÀÌ°ÍÀº °Ë»ö¿£ÁøµîÀ» ±¸ÇöÇÑ ¶§ À¯¿ëÇѵ¥ ¡®ÀÌ%¡¯ ¶ó´Â ¸»Àº ù ±ÛÀÚ¿¡ ¡®ÀÌ¡¯ ÀÚ°¡ µé¾î°¡´Â ¸ðµç ÀڷḦ ã¾ÆÁØ´Ù. ¹®ÀÚ¿­ Áß¿¡  ¡®ÀÌ¡¯ °¡ Æ÷ÇÔµÈ´Ù¸é ¡®%ÀÌ%¡¯ ÀÏ °ÍÀÌ´Ù.

    like ±îÁö ÀÌÇØÇß´Ù¸é ²Ò³ª ¼º°øÇÑ °ÍÀÌ´Ù. ±×·±µ¥ ÀÌ°ÍÀ¸·Î ³¡³­ °ÍÀÌ ¾Æ´Ï´Ù. °è¼Ó »ìÆ캸±â·Î ÇÏÀÚ.

     SQL> select name from tel_list;

     NAME
     --------------------
     Àü¼ºÈñ
     ±èÇü±Ô
     À̹̰æ
     ¼±ÀºµÎ

     SQL> select name from tel_list order by name;

     NAME
     --------------------
     ±èÇü±Ô
     ¼±ÀºµÎ
     À̹̰æ
     Àü¼ºÈñ

     SQL> select name from tel_list order by name desc;

     NAME
     --------------------
     Àü¼ºÈñ
     À̹̰æ
     ¼±ÀºµÎ
     ±èÇü±Ô

     SQL>

    À§ÀÇ ¿¹´Â order by¸¦ ÀÌ¿ëÇÑ ¿¹ÀÌ´Ù. óÀ½ °ÍÀº order by ¸¦ ÀÌ¿ëÇÏÁö ¾ÊÀº °ÍÀÌ°í ´ÙÀ½Àº À̸§ ¼ø¼­´ë·Î °Ë»öÇÑ ¿¹ÀÌ¸ç ¸¶Áö¸·Àº À̸§ÀÇ ¿ª¼øÀÌ´Ù.
    SQL> select addr, count(*) from tel_list group by addr;

      ADDR                                     COUNT(*)
     --------------------------------------------------
      ´ë±¸                                            2
      ºÎ»ê                                            1
      ¼­¿ï½Ã °­³²±¸ ³íÇöµ¿ 261               1

    À§ÀÇ ¿¹´Â µ¥ÀÌÅÍÀÇ Åë°è¸¦ ³¾ ¶§ ¸¹ÀÌ ¾²ÀδÙ. ¿ì¸®°¡ ¸¸µé¾îµÐ ÁÖ¼Ò Çʵ尡 ±×¸® ¼¼ºÐÈ­µÇÁö´Â ¾Ê¾ÒÁö¸¸ ³ªÁß¿¡ ½Ã, ±º, µµ ¸í µîÀ» ¼¼ºÐÈ­ ÇØ µÐ´Ù¸é À§ÀÇ ¿¹´Â ÀûÀýÇÒ °ÍÀÌ´Ù. ¼³¸íÀ» ÇÏÀÚ¸é ÁÖ¼Òº° »ç¶÷µé ¼ö¸¦ ³ªÅ¸³½´Ù°í ÇÒ ¼ö ÀÖ´Ù.

    ÀÌ ¿Ü¿¡µµ ¸¹Àº ÁúÀǾîµéÀÌ ¿À¶óŬ¿¡´Â Á¸ÀçÇϴµ¥, ´ëÃæ ¸¹ÀÌ ¾²ÀÌ´Â °ÍµéÀ» ¼³¸íÇØ º¸¾Ò´Ù. Oracle SQL ¿¡ ´ëÇÑ ´õ ÀÚ¼¼ÇÑ ³»¿ëÀº ÇØ´ç ¹®¼­µéÀ» Âü°íÇϱ⠹ٶõ´Ù.

 

¸¶. Oracle Pro*C

    Pro*C Åø Àº SQL¹®À» ³ÖÀº C ÇÁ·Î±×·¥À» Oracle µ¥ÀÌÅͺ£À̽º¿¡ ÀÖ´Â µ¥ÀÌÅÍÀÇ ¿¢¼¼½º¿Í Á¶ÀÛÀ» ÇÒ ¼ö ÀÖ´Â C ÇÁ·Î±×·¥À¸·Î º¯È¯Çϱâ À§ÇÑ pre-compiler ÀÌ´Ù.  Pro*C ÄÄÆÄÀÏ·¯´Â ÀÔ·Â ÇÁ·Î±×·¥ (Pro*C ÆÄÀÏ : *.pc) ¿¡ ÀÖ´Â EXEC SQL ¹®À» Àû´çÇÑ Oracle Call ·Î º¯È¯ÇÏ¿© Ãâ·ÂÆÄÀÏ(C ¼Ò½ºÆÄÀÏ: *.C)À» ÀÛ¼ºÇÑ´Ù. ÇÁ·Î±×·¥ ÀÛ¼º ¼ø¼­´Â ´ÙÀ½°ú °°´Ù.

     1) Pro*C ¼Ò½º ÇÁ·Î±×·¥À» ÀÛ¼ºÇÑ´Ù.(*.pc)

     2) Pro*C¸¦ ÀÌ¿ëÇÏ¿© ÇÁ·Î±×·¥À» ÇÁ¸®ÄÄÆÄÀÏ ÇÑ´Ù. (*.pc --> *c)

     3) CÇÁ·Î±×·¥À» ÄÄÆÄÀÏÇÏ¿© ¿ÀºêÁ§Æ®ÆÄÀÏÀ» ¸¸µç´Ù. (*.c --> *.o)

     4) ¿ÀºêÁ§Æ®ÆÄÀÏ¿¡ ÇÊ¿äÇÑ ¶óÀ̺귯¸®ÆÄÀÏÀ» ¸µÅ©ÇÏ¿© ½ÇÇàÆÄÀÏÀ» ¸¸µç´Ù. (*.o  --> ½ÇÇà °¡´É ÆÄÀÏ)

    ½ÇÁ¦·Î ¿©·¯ºÐµéÀÌ Linux Oracle ÀÇ ¸ðµç ±¸¼ºÀ» ºüÁü¾øÀÌ ¼³Ä¡ÇÏ¿´´Ù¸é ´ÙÀ½ÀÇ µð·ºÅ丮¿¡ Pro*C ÀÇ ¿¹Á¦µéÀÌ ÀÖÀ» °ÍÀÌ´Ù.

    [oracle@ora oracle]$ ls -l app/oracle/product/8.0.5/plsql/demo
    total 136
    -rw-r--r--  1 oracle  dba   4419 Feb 12 06:59 dbgextp.sql
    -rw-r--r--  1 oracle  dba   1528 Feb 12 06:59 demo_plsql.mk
    -rw-r--r--  1 oracle  dba   1190 Feb 12 06:59 examp1.sql
    -rw-r--r--  1 oracle  dba   4586 Feb 12 06:59 examp10.pc
    -rw-r--r--  1 oracle  dba   1425 Feb 12 06:59 examp11.sql
    -rw-r--r--  1 oracle  dba   1396 Feb 12 06:59 examp12.sql
    -rw-r--r--  1 oracle  dba   1349 Feb 12 06:59 examp13.sql
    -rw-r--r--  1 oracle  dba   1007 Feb 12 06:59 examp14.sql
    -rw-r--r--  1 oracle  dba   1201 Feb 12 06:59 examp2.sql
    -rw-r--r--  1 oracle  dba   1111 Feb 12 06:59 examp3.sql
    -rw-r--r--  1 oracle  dba   1207 Feb 12 06:59 examp4.sql
    -rw-r--r--  1 oracle  dba   1311 Feb 12 06:59 examp5.sql
    -rw-r--r--  1 oracle  dba   1875 Feb 12 06:59 examp6.sql

    -rw-r--r--  1 oracle  dba   972 Feb 12 06:59 examp7.sql
    -rw-r--r--  1 oracle  dba   1601 Feb 12 06:59 examp8.sql
    -rw-r--r--  1 oracle  dba   4680 Feb 12 06:59 examp9.pc
    -rw-r--r--  1 oracle  dba   4045 Feb 12 06:59 exampbld.sql
    -rw-r--r--  1 oracle  dba   4038 Feb 12 06:59 examplod.sql
    -rw-r--r--  1 oracle  dba   17234 Feb 12 06:59 extproc.c
    -rw-r--r--  1 oracle  dba   14963 Feb 12 06:59 extproc.sql
    -rw-r--r--  1 oracle  dba   36507 Feb 12 06:59 objdemo.sql
    -rw-r--r--  1 oracle  dba   1010 Feb 12 06:59 sample1.sql
    -rw-r--r--  1 oracle  dba   1093 Feb 12 06:59 sample2.sql
    -rw-r--r--  1 oracle  dba   1321 Feb 12 06:59 sample3.sql
    -rw-r--r--  1 oracle  dba   3610 Feb 12 06:59 sample4.sql
    -rw-r--r--  1 oracle  dba   4293 Feb 12 06:59 sample5.pc
    -rw-r--r--  1 oracle  dba   3559 Feb 12 06:59 sample6.pc
    [oracle@ora or

    acle]$

    ¿©±â¼­ demo_plsql.mk °¡ º» ¿¹Á¦µéÀÇ make ÆÄÀÏÀÌ´Ù. Á÷Á¢ ÄÄÆÄÀÏ ÇØ º¸·Á¸é make -f¸¦ ÀÌ¿ëÇؼ­ ½ÇÇàÇØ º¸±â ¹Ù¶õ´Ù. ¿©·¯ºÐÀÇ Oracle ȯ°æ ¼³Á¤¿¡ ¾à°£ ¹®Á¦°¡ ÀÖ´Ù¸é ¿øÈ°ÇÑ ÄÄÆÄÀÏ°ú ½ÇÇàÀ» À§ÇØ /etc/ld.co.conf ¿¡ ´ÙÀ½À» Ãß°¡ÇÏ°í ldconfig À» ½ÇÇàÇ϶ó.

      /home/oracle/app/oracle/product/8.0.5/lib

    Áö¸é °ü°è»ó Pro*C ÀÇ ¸ðµç ±¸¼ºÀ» ¼³¸íÇÒ ¼ö ¾ø°í °£´ÜÇÑ ¿¹Á¦ Çϳª¸¦ ÅëÇؼ­ Pro*C¸¦ ÀÍÇôº¸µµ·Ï ÇÏÀÚ. ¾Æ·¡ ¿¹Á¦´Â ÇÊÀÚ°¡ ¾ó¸¶ Àü ¡®´º ÈÞ¸Õ ´Ü¡¯ À̶ó´Â ÀâÁöÀÇ °Ë»ö ¿£ÁøÀ» »ùÇ÷Πº¸¿©ÁÖ±â À§ÇØ °£´ÜÈ÷ ±ÞÁ¶ÇÑ ÇÁ·Î±×·¥ÀÌ´Ù. ³»¿ëÀº °£´ÜÇÏÁö¸¸ Áö±Ý±îÁö ±Ûµé¿¡¼­ ÀüÇô ¼³¸íµÇÁö ¾Ê¾Ò´ø ºÎºÐÀÌ ³ª¿À¹Ç·Î ÁÖÀÇÇؼ­ º¸±â·Î ÇÏÀÚ.

    /* º» ÇÁ·Î±×·¥¿¡¼­´Â µÎ °³ÀÇ tableÀ» ÀÌ¿ëÇÑ´Ù. KWTIT table Àº ÇØ´ç Å°¿öµåÀÇ ³»¿ëÀÌ ÀÖ´Â ÆÄÀϸí°ú ±× ±ÛÀÇ Á¦¸ñÀ» Æ÷ÇÔÇÏ°í, TITDS ¿¡¼­´Â ±ÛÀÇ Á¦¸ñ°ú ±× ±ÛÀÇ ¿ä¾à¹®ÀÌ ÀúÀåµÇ¾î ÀÖ´Ù Å°¿öµå¸¦ ÀÔ·ÂÇÏ°Ô µÇ¸é ÇØ´ç±ÛÀÇ Á¦¸ñ°ú, ¿ä¾à, ±× ±Û·ÎÀÇ ¸µÅ©°¡ ³ªÅ¸³­´Ù. */

      #include <stdio.h>
      #include <string.h>
      #include <stdlib.h>
      #include <sqlca.h>
      #include <stdlib.h>
      #include <sqlda.h>
      #include <sqlcpr.h>
      #include <ctype.h>

     #include ¡°qDecoder.c¡± /* Web ¿¡¼­ÀÇ ÀÛµ¿À» À§ÇØ cgiserver.netÀÇ query ó¸® cgi¸¦
       ÀÌ¿ëÇß´Ù. */

      #define UNAME_LEN 20
      #define PWD_LEN  11

      typedef char asciiz[PWD_LEN];

      EXEC SQL INCLUDE sqlca.h;    /* error ó¸® */

    EXEC SQL TYPE asciiz IS CHARZ(PWD_LEN) REFERENCE; /* asciiz ¿¡ ´ëÇÑ Á¤ÀÇ */
      asciiz username;
      asciiz password;
      void main(void)
      {
    char kw[50], whkw[60];  /* ÀÔ·ÂµÈ key word ¿Í ÇÁ·Î±×·¥»ó¿¡¼­ ó¸®Çϱâ À§ÇÑ key °ª */
    char tit[100];   /* ±ÛÀÇ Á¦¸ñ , title */
    char ds[1000];   /* ±ÛÀÇ ¼³¸í, ¿ä¾à¹® */
    char fname[128];   /* ÇØ´ç ÆÄÀÏ ¸í */

    putenv(¡°NLS_LANG=AMERICAN_AMERICA.KO16KSC5601¡±); /* Oracle ÀÇ È¯°æ  */
    putenv(¡°ORACLE_SID=linux¡±); /* ¼³Á¤, óÀ½ ¼³ */
    putenv(¡°ORACLE_HOME=/home/oracle¡±);  /* Ä¡ÇÑ È¯°æÀ» Àß */
                                       /* »ý°¢ÇØ º¸ÀÚ. */

     qContentType(¡°text/html¡±);
     strcpy(kw,qValue(¡°KW¡±));  /* Web »ó¿¡¼­ key word °ª */
     sprintf(whkw,¡±%c%s%c¡±,¡¯%¡¯,kw,¡¯%¡¯);
                              /* À» ¹Þ¾Æ¼­ Oracle ÀÇ */
                             /* like ¿¬»êÀÚ ¡®%(key)%¡¯ */
                             /* ·Î º¯È¯ÇÑ´Ù. */

     strcpy(username,¡±book¡±);  /* Oracle ·Î ¿¬°áÇϱâ À§ÇÑ */
     strcpy(password,¡±******¡±);   /* »ç¿ëÀÚ, passwd °ª *

     EXEC SQL CONNECT :username IDENTIFIED BY :password; /* Oracle ·Î ¿¬°á */

    /* Ä¿¼­ (CURSOR) ÀÇ »ç¿ë, Ä¿¼­´Â Äõ¸®¹®À» ¼öÇàÇÒ ¶§ ÀÌ¿ëµÇ´Â ÀÛ¾÷ ¿µ¿ªÀÌ´Ù. ¾Æ·¡ ³»¿ëÀ» »ìÆ캸¸é, ¿ì¸®°¡ ÇÊ¿äÇÑ ÀÚ·áµé, ±×·¯´Ï±î Å°¿öµå¿¡ ÇØ´çÇÏ´Â ±ÛÀÇ Á¦¸ñ(ŸÀÌƲ)°ú ±× ±ÛÀÇ ¿ä¾à¹®, ±× ±ÛÀÌ ÀúÀåµÈ ÆÄÀÏ¸í µéÀ» newhumandahn À̶ó´Â Ä¿¼­·Î Á¤ÀÇÇÏ¿© ÀÛ¾÷À» ÁøÇàÇÏ°Ô µÈ´Ù. ±×¸®°í ¼³¸í¿¡¼­ ºüÁø join À» ÀÌ¿ëÇÑ °Ë»öÀÌ ÀÌ·ç¾îÁö´Âµ¥, join À̶õ ¼­·Î ´Ù¸¥ µÎ Å×ÀÌºí¿¡¼­ °Ë»öÇÏ´Â ¹æ¹ýÀ» ¸»ÇÑ´Ù. */

     EXEC SQL DECLARE newhumandahn CURSOR FOR /* newhumandahn Ä¿¼­ Á¤ÀÇ */
     SELECT kwtit.tit, titds.ds, kwtit.fname  /* join À» ÀÌ¿ëÇÑ °Ë»ö */
     FROM kwtit, titds
     WHERE kwtit.kw like :whkw AND kwtit.tit = titds.tit;

     EXEC SQL OPEN newhumandahn;   /* Ä¿¼­¸¦ ¿¬´Ù */

     EXEC SQL FETCH newhumandahn INTO :tit, :ds, :fname; /* ¿øÇÏ´Â ÀڷḦ */
            /* ÃëÇؼ­ °¢°¢ */
            /* tit, ds, fname */
            /* ¿¡ ÀúÀå */

      /* °á°úÀÇ Ãâ·Â, HTML ·Î */

     printf(¡°<br><center><h2> RESULT </h2></center><br>¡±);
     printf(¡°<div align=center><tablr border=0¡±);

     while(sqlca.sqlcode==0) /* °ªÀÌ ´õ ÀÌ»ó ¾øÀ» ¶§ ±îÁö */
     {
      printf(¡°<tr><td width=600 height=27><p>¡±);
      printf(
      ¡°<a href=¡¬¡±http://book.hanmunhwa.co.kr/%s¡¬¡±>%s(1999/03)</a>¡±,fname,tit);

      printf(¡°</td></tr><tr><td width=600 height=25><p>¡±);
      printf(¡°%s<br><br></td></tr>¡±,ds);

      EXEC SQL FETCH newhumandahn INTO :tit, :ds, :fname; /* °è¼Ó */
             /* °ªÀ» */
             /* ±¸ÇÔ */
     }

     printf(¡°</table></div>¡±);

     EXEC SQL CLOSE newhumandahn;    /* newhumandahn Ä¿¼­ ´ÝÀ½ */

     exit(EXIT_SUCCESS);
      }

    ÀÌ»óÀ¸·Î sqlplus ¿Í Pro*C ¿¡ ´ëÇÑ ³»¿ëÀ» ¸¶Ä¥±î ÇÑ´Ù. Á¦ÇÑµÈ Àå¿¡ ¸¹Àº ³»¿ëÀ» ´ãÀ¸·Á´Ù º¸´Ï ±ÛÀÌ ±¸Ã¼ÀûÀÌÁö ¸øÇÑ °Å °°¾Æ Á˼ÛÇÑ ¸¶À½ÀÌ µç´Ù. ´õ ÀÚ¼¼ÇÑ °Ç ¸Å´º¾óÀ̳ª ±âŸ Oracle °ü·Ã ȨÆäÀÌÁö¸¦ ¹æ¹®ÇØ º¸±â ¹Ù¶õ´Ù. ´ÙÀ½ È£¿¡¼­´Â PHP3 ¿ÍÀÇ ¿¬µ¿À» ÁÖÁ¦·Î ÀÌ ¿¬À縦 ¸¶Ä£´Ù. Á» ´õ ¼¼·ÃµÈ ÁÖÁ¦·Î ¹æ¸í·ÏÀ» ¸¸µé¾î º¼ °ÍÀÌ´Ù. ±â´ëÇصµ ÁÁ´Ù.




¡ã top

homeÀ¸·Î...