SlideShare ist ein Scribd-Unternehmen logo
1 von 214
INFORMIX User Guide


        2001. 6

     Informix Korea
๋ชฉ์ฐจ
  ๏ถ   RDB ๋ž€ ๋ฌด์—‡์ธ๊ฐ€
  ๏ถ   SQL ๊ฐœ์š”
  ๏ถ   dbaccess ๋ฅผ ์ด์šฉํ•œ query ์‹คํ–‰
  ๏ถ   Informix DBMS ์˜ ์ดํ•ด
  ๏ถ   SQL ์„ ์ด์šฉํ•œ ์งˆ์˜ ๋ฐฉ๋ฒ•
  ๏ถ   DB Admin ์ž‘์—…
  ๏ถ   ESQL/C ๋ฅผ ์ด์šฉํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
  ๏ถ   System Admin ์ž‘์—…
  ๏ถ   Client/Server Connectivity
  ๏ถ   Data Migration
  ๏ถ   Backup & Restore
  ๏ถ   GLS (Global Language Support)




INFORMIX User                     2
RDB ๋ž€ ๋ฌด์—‡์ธ๊ฐ€
   ๏ƒผ   ์ •๋ณด์™€ ๋ฐ์ดํ„ฐ
   ๏ƒผ   ์ •๋ณด์‹œ์Šคํ…œ
   ๏ƒผ   ์ž๋ฃŒ์ฒ˜๋ฆฌ์‹œ์Šคํ…œ
   ๏ƒผ   ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ •์˜
   ๏ƒผ   ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํŠน์„ฑ
   ๏ƒผ   DBMS ๋ฐœ์ „ ๋ฐฐ๊ฒฝ
   ๏ƒผ   ๋ฐ์ดํ„ฐ ๋…๋ฆฝ์„ฑ๊ณผ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๊ฐ„์˜ ์‚ฌ์ƒ
   ๏ƒผ   ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ์‹œ์Šคํ…œ
   ๏ƒผ   ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง
   ๏ƒผ   ๊ด€๊ณ„ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ
   ๏ƒผ   ๊ณ„์ธต ๋ฐ์ดํ„ฐ ๋ชจ๋ธ
   ๏ƒผ   ๋„คํŠธ์›Œํฌ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ
   ๏ƒผ   Primary Key ์™€ Foreign Key
   ๏ƒผ   ์ •๊ทœํ™” (Normalization)
์ •๋ณด์™€ ๋ฐ์ดํ„ฐ
  ๏ถ ๋ฐ์ดํ„ฐ
      ๏ต ํ˜„์‹ค ์„ธ๊ณ„ (Real World) ๋กœ๋ถ€ํ„ฐ ๋‹จ์ˆœํ•œ ๊ด€์ฐฐ์ด๋‚˜ ์ธก์ •์„ ํ†ตํ•ด์„œ ์ˆ˜์ง‘ํ•œ ์‚ฌ์‹ค
        (Fact) ๋˜๋Š” ๊ฐ’ (Values)


  ๏ถ ์ •๋ณด
      ๏ต ์–ด๋–ค ์ƒํ™ฉ์— ๊ด€ํ•œ ์–ด๋–ค ์˜์‚ฌ ๊ฒฐ์ •์„ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ์ง€์‹ (Knowledge) ๋กœ์จ
        ๋ฐ์ดํ„ฐ์˜ ์œ ํšจํ•œ ํ•ด์„ (Interpretation) ์ด๋‚˜ ๋ฐ์ดํ„ฐ ์ƒํ˜ธ๊ฐ„์˜ ๊ด€๊ณ„
        (Relationship)




                          ์ฒ˜๋ฆฌ๊ธฐ (P)             ์ •๋ณด (I)
          ๋ฐ์ดํ„ฐ (D)




INFORMIX User                4
์ •๋ณด ์‹œ์Šคํ…œ
  ๏ถ   ๊ฒฝ์˜   ์ •๋ณด    ์‹œ์Šคํ…œ (MIS : Management Information System)
  ๏ถ   ๊ตฐ์‚ฌ   ์ •๋ณด    ์‹œ์Šคํ…œ (Military Information System)
  ๏ถ   ํ–‰์ •   ์ •๋ณด    ์‹œ์Šคํ…œ (Administration Information System)
  ๏ถ   ์ธ์‚ฌ   ์ •๋ณด    ์‹œ์Šคํ…œ (Personnel Information System)
  ๏ถ   ์˜์‚ฌ   ๊ฒฐ์ •    ์ง€์› ์‹œ์Šคํ…œ (Decision Support System)


                                                                  ์˜
            ์ˆ˜์ง‘                ์ž…๋ ฅ             ์ถœ๋ ฅ                   ์‚ฌ
   ํ˜„์‹ค ์„ธ๊ณ„                           ์ฒ˜๋ฆฌ๊ธฐ (P)        ์ •๋ณด (I)     ๋ถ„๋ฐฐ
                    ๋ฐ์ดํ„ฐ (D)                                       ๊ฒฐ
                                                                  ์ •




                                   ์ €์žฅ ๋ฐ์ดํ„ฐ




INFORMIX User                       5
์ž๋ฃŒ ์ฒ˜๋ฆฌ ์‹œ์Šคํ…œ
  ๏ถ ์ •๋ณด ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ• ํ•˜๊ธฐ ์œ„ํ•ด ์ •ํ™•ํ•œ ์ตœ์‹ ์˜ ์ •๋ณด๋ฅผ ์ ์‹œ์— ์ œ๊ณตํ•˜๋Š” ์‹œ
    ์Šคํ…œ
      ๏ต ์ž๋ฃŒ ์ฒ˜๋ฆฌ ์‹œ์Šคํ…œ์˜ ์ข…๋ฅ˜
          ๏‚ง ์ผ๊ด„ ์ฒ˜๋ฆฌ ์‹œ์Šคํ…œ (batch Processing)
          ๏‚ง ์˜จ๋ผ์ธ ์ฒ˜๋ฆฌ ์‹œ์Šคํ…œ (on-line processing)
          ๏‚ง ๋ถ„์‚ฐ ์ฒ˜๋ฆฌ ์‹œ์Šคํ…œ (distributed processing)




INFORMIX User                          6
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ •์˜
  ๏ถ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ž€ ์–ด๋Š ํ•œ ์กฐ์ง์˜ ๋‹ค์ˆ˜ ์‘์šฉ ์‹œ์Šคํ…œ๋“ค์ด ์‚ฌ์šฉํ•˜๊ธฐ์œ„ํ•ด ํ†ต
    ํ•ฉ , ์ €์žฅ๋œ ์šด์˜ ๋ฐ์ดํ„ฐ์˜ ์ง‘ํ•ฉ

      ๏ต ํ†ตํ•ฉ๋œ ๋ฐ์ดํ„ฐ (Integrated Data)
          ๏‚ง ์ตœ์†Œ์˜ ์ค‘๋ณต , ํ†ต์ œ๋œ ์ค‘๋ณต ํ—ˆ์šฉ
      ๏ต ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ (Stored Data)
      ๏ต ์šด์˜ ๋ฐ์ดํ„ฐ (Operational Data)
          ๏‚ง ์กด์žฌ ๋ชฉ์ ์ด ๋šœ๋ ทํ•˜๊ณ  ํ•„์ˆ˜ ์ ์ธ ๋ฐ์ดํ„ฐ
      ๏ต ๊ณต์šฉ ๋ฐ์ดํ„ฐ (Shared Data)




INFORMIX User                       7
๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์˜ ํŠน์„ฑ
  ๏ถ ์‹ค์‹œ๊ฐ„ ์ ‘๊ทผ์„ฑ (Real Time Accessibility)
      ๏ต ์ˆ˜์‹œ์ ์ด๊ณ  ๋น„ ์ •ํ˜•์ ์ธ ๋ฐ์ดํ„ฐ์˜ ๊ฒ€์ƒ‰์ด๋‚˜ ์ฒ˜๋ฆฌ๋ฅผ ์š”๊ตฌํ•˜๋Š” ์งˆ์˜
      ๏ต ์งˆ์˜ (Queries) ์— ๋Œ€ํ•˜์—ฌ ์‹ค์‹œ๊ฐ„์— ์ฒ˜๋ฆฌ ์‘๋‹ต
  ๏ถ ๊ณ„์†์ ์ธ ๋ณ€ํ™” (Continuous Evolution)
      ๏ต ๋ฐ์ดํ„ฐ์˜ ์‚ฝ์ž… , ์‚ญ์ œ , ๊ฐฑ์‹ ์„ ํ†ตํ•˜์—ฌ ๊ฐ€์žฅ ์ตœ๊ทผ์˜ ์ •ํ™•ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์ง€
  ๏ถ ๋™์‹œ ๊ณต์œ  (Concurrent Sharing)
      ๏ต ๋™์‹œ์— ์—ฌ๋Ÿฌ์‚ฌ์šฉ์ž๊ฐ€ ์ ‘๊ทผ ์ด์šฉ ๊ฐ€๋Šฅ
  ๏ถ ๋‚ด์šฉ์— ์˜ํ•œ ์ฐธ์กฐ (Content Reference)
      ๏ต ๋ฐ์ดํ„ฐ ๋ ˆ์ฝ”๋“œ๋“ค์€ ์ฃผ์†Œ๋‚˜ ์œ„์น˜์— ์˜ํ•ด ์ฐธ์กฐ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋ฐ์ดํ„ฐ์˜ ๋‚ด์šฉ
        ์ฆ‰ , ์–ด๋–ค ํŠน์ • ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๋ ˆ์ฝ”๋“œ๋“ค์€ ๋ชจ๋‘ ํ•˜๋‚˜์˜ ๋…ผ๋ฆฌ์  ๋‹จ์œ„๋กœ ์ทจ๊ธ‰
        ๋˜๊ณ  ์ ‘๊ทผ




INFORMIX User                    8
DBMS ๋ฐœ์ „ ๋ฐฐ๊ฒฝ
  ๏ถ ๋ฐ์ดํ„ฐ์˜ ์ข…์†์„ฑ
  ๏ถ ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต์„ฑ
  ๏ถ ๋‚ด๋ถ€์  ์ผ๊ด€์„ฑ (Consistency)
      ๏ต ๋ณด์•ˆ์„ฑ (Security)
      ๏ต ๊ฒฝ์ œ์„ฑ (Economics)
      ๏ต ๋ฌด๊ฒฐ์„ฑ (Integrity)
  ๏ถ ๋ฐ์ดํ„ฐ์˜ ๋…๋ฆฝ์„ฑ
      ๏ต ๋…ผ๋ฆฌ์  ๋ฐ์ดํ„ฐ ๋…๋ฆฝ์„ฑ
      ๏ต ๋ฌผ๋ฆฌ์  ๋ฐ์ดํ„ฐ ๋…๋ฆฝ์„ฑ




INFORMIX User               9
๋ฐ์ดํ„ฐ ๋…๋ฆฝ์„ฑ๊ณผ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๊ฐ„์˜ ์‚ฌ
   ์ƒ
            ํ”„๋กœ๊ทธ๋žจ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ         ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
                                 ๋…ผ๋ฆฌ์  ๊ตฌ์กฐ
                A
                B
                C                     A          ๋ฌผ๋ฆฌ์ 
                D                               ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
   ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ 1                          B
                                      C
                            ๋…ผ               ๋ฌผ
                B           ๋ฆฌ         D     ๋ฆฌ
                          ์‚ฌ์               ์‚ฌ์      A B C
                E         ์ƒ               ์ƒ      D E F
                            ๊ตฌ         E     ๊ตฌ
                F                                G H ...
    ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ 2               ์กฐ               ์กฐ
                                      F
                                      G
                G
                                      H
                A
    ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ 3   C




INFORMIX User                    10
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ์‹œ์Šคํ…œ
  ๏ถ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ๊ณผ ๋ฐ์ดํ„ฐ์˜ ์ค‘์žฌ์ž๋กœ์จ ๋ชจ๋“  ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ๋“ค์ด ๋ฐ์ดํ„ฐ๋ฒ 
    ์ด์Šค๋ฅผ ๊ณต์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ๋” ๊ด€๋ฆฌํ•ด ์ฃผ๋Š” ์†Œํ”„ํŠธ์›จ์–ด ์‹œ์Šคํ…œ
      ๏ต ์ •์˜ ๊ธฐ๋Šฅ
          ๏‚ง ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋…ผ๋ฆฌ์  ๊ตฌ์กฐ์™€ ๊ทธ ํŠน์„ฑ์„ ์–ด๋–ค ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์— ๋”ฐ๋ผ ๋ช…์„ธ
                ๏ƒผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ฌผ๋ฆฌ์  ๊ตฌ์กฐ๋ฅผ ๋ช…์„ธ
                ๏ƒผ ๋ฌผ๋ฆฌ์  ๊ตฌ์กฐ์™€ ๋…ผ๋ฆฌ์  ๊ตฌ์กฐ์˜ ๋ณ€ํ™˜์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ์‚ฌ์ƒ (mapping) ์„ ๋ช…์„ธ
      ๏ต ์กฐ์ž‘ ๊ธฐ๋Šฅ
          ๏‚ง ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ„ํŽธํ•˜๊ณ  ์‰ฌ์šฐ๋ฉฐ ๋ช…ํ™•ํ•˜๊ณ  ์™„์ „ํ•˜๊ณ  ํšจ์œจ์ 
      ๏ต ์ œ์–ด ๊ธฐ๋Šฅ
          ๏‚ง ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ์ œ์–ด
          ๏‚ง ๋ณด์•ˆ๊ณผ ๊ถŒํ•œ์„ ๊ฒ€์‚ฌ
          ๏‚ง ๋™์‹œ์„ฑ ์ œ์–ด (Concurrency Control)




INFORMIX User                         11
๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง

       ๊ฐ์ฒด ( ๊ทธ        ์—”ํ‹ฐํ‹ฐ ํƒ€์ž…                 ๋ ˆ์ฝ”๋“œ
           ๋ฃน         ์—ํŠธ๋ฆฌ๋ทฐํŠธ                 ๋ฐ์ดํ„ฐ ํ•„๋“œ
            )          ๊ฐ’                     ๊ฐ’
        ์„ฑ ์งˆ
         ๊ฐ’
       ํ˜„์‹ค ์„ธ๊ณ„ ( ์‹ค์ฒด
                    ๊ฐœ๋… ์„ธ๊ณ„ ( ์ •๋ณด )        ์ปดํ“จํ„ฐ ์„ธ๊ณ„ ( ๋ฐ์ดํ„ฐ )
              )


                                            ์ •๋ณด ๋ชจ๋ธ๋ง
                            ํ˜„์‹ค ์„ธ๊ณ„                        ๊ฐœ๋… ์„ธ๊ณ„


                                                           ๋ฐ์ดํ„ฐ
                                   ์ผ์น˜์„ฑ                     ๋ชจ๋ธ๋ง


                                            ๋ฐ์ดํ„ฐ๊ตฌ์กฐํ™”
                            ๋ฌผ๋ฆฌ์                           ๋ฐ์ดํ„ฐ ๋ชจ๋ธ
                           ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
                                                            ์ปดํ“จํ„ฐ ์„ธ๊ณ„


INFORMIX User                      12
๊ด€๊ณ„ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ
  ๏ถ ํ˜„์‹ค ์„ธ๊ณ„๋ฅผ ER ๋‹ค์ด์–ด ๊ทธ๋žจ์œผ๋กœ ํ‘œํ˜„ํ•œ ๊ฒƒ์€ ํ˜„์‹ค ์„ธ๊ณ„๋ฅผ ์‚ฌ๋žŒ์ด ์ดํ•ด
    ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ‘œํ˜„ํ•œ ๋…ผ๋ฆฌ์  ๊ตฌ์กฐ



    ํ˜„์‹ค ์„ธ๊ณ„                     ER                       ๋ฐ์ดํ„ฐ           ์ €์žฅ
                            ๋‹ค์ด์–ด๊ทธ๋žจ                      ๋ชจ๋ธ          ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค




                     ํ•™๋ฒˆ      ์ด๋ฆ„    ํ•™๋…„   ํ•™๊ณผ   ํ•™๋ฒˆ     ๊ณผ๋ชฉ ๋ฒˆํ˜ธ    ์„ฑ์ 
                ํ•™์ƒ                                                ์ˆ˜๊ฐ•
                     1234    ๊น€์ฒ ์ˆ˜   3    ์ „์‚ฐ   1235   CS312    90
                     1235    ์ด์ƒ์ฒ    4    ์ „์‚ฐ   1246   CS312    85
                     1246    ๋ฐ•์˜์ˆ˜   3    ์ „์ž   1234   CS322    88
                     1248    ์กฐ์„ฑ์ง„   3    ์ „๊ธฐ   1235   CS322    95
                     1225    ๊ฐ•์‹ ์กฐ   1    ์‚ฐ๊ณต   1248   CS322    94
                                             1234   CS412    98
                     ๊ณผ๋ชฉ ๋ฒˆํ˜ธ     ๊ณผ๋ชฉ์ด๋ฆ„     ํ•™์ 
           ๊ต๊ณผ๋ชฉ                               1235   CS412    75
                     CS312     ์ž๋ฃŒ ๊ตฌ์กฐ    3    1246   CS412    80
                     CS322     ํŒŒ์ผ ์ฒ˜๋ฆฌ    3
                     CS412    ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค    3




INFORMIX User                                13
๊ณ„์ธต ๋ฐ์ดํ„ฐ ๋ชจ๋ธ



            ๊ต๊ณผ๋ชฉ                        ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

                                                     CS 421.2
   ์„ ์ˆ˜ ๊ณผ๋ชฉ              ๊ฐ• ์ขŒ         ํŒŒ์ผ ์ฒ˜๋ฆฌ๋ก          CS 421.1



                                                            ํ™์ˆ˜์˜
                ๊ต ์ˆ˜         ํ•™ ์ƒ            ์ด์ƒ๊ธธ             ๊น€์ฒ ์ˆ˜




INFORMIX User                     14
๋„คํŠธ์›Œํฌ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ
      1000, ๊ฐ‘ , ๊ฒฝ์˜ , 4   A    ์˜์–ด , 4


                         B


                         C
                              ์—ญ์‚ฌ , 3

      2000, ์„ , ์ „์‚ฐ , 3   D


                         A


                              ์Œ์•… , 2
      3000, ๋ณ‘ , ์˜๋ฌธ , 2   B


                         C



INFORMIX User            15
Primary Key ์™€ Foreign Key
  ๏ถ Primary Key
      ๏ต   ๊ฐ ๊ฐœ์ฒด๋ฅผ ์œ ์ผํ•˜๊ฒŒ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋Š” ์†์„ฑ ํ˜น์€ ์†์„ฑ์˜ ์กฐํ•ฉ .
      ๏ต   Primary ๋Š” ๋ฐ˜๋“œ์‹œ ์กด์žฌํ•˜๋Š” ๊ฐ’์ด์–ด์•ผ ํ•œ๋‹ค .
      ๏ต   ๋ชจ๋“  ๊ฐœ์ฒด๋Š” ํ•˜๋‚˜์˜ primary key ๋ฅผ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค .
      ๏ต   ์˜ˆ
          ๏‚ง ๊ณ ๊ฐ ๊ฐœ์ฒด : ์ฃผ๋ฏผ๋ฒˆํ˜ธ
          ๏‚ง ์ƒํ’ˆ ๊ฐœ์ฒด : ์ƒํ’ˆ ์ฝ”๋“œ , ์ œ์กฐ์—…์ฒด
          ๏‚ง ํ•™์ƒ ๊ฐœ์ฒด : ํ•™๋ฒˆ
  ๏ถ Foreign Key
      ๏ต   ๋‹ค๋ฅธ ๊ฐœ์ฒด์˜ primary key ๋ฅผ ์ฐธ์กฐํ•ด์•ผ ํ•˜๋Š” ๊ฐœ์ฒด์˜ ์†์„ฑ
      ๏ต   ๊ฐœ์ฒด ๊ฐ„์— ๊ด€๊ณ„๋ฅผ ์„ค์ •ํ•˜๊ธฐ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ์†์„ฑ ํ˜น์€ ์†์„ฑ์˜ ์ง‘ํ•ฉ
      ๏ต   ๊ฐ’์ด ์—†์–ด๋„ ๊ฐ€๋Šฅ
      ๏ต   ์ค‘๋ณต๋œ ๊ฐ’ ๊ฐ€๋Šฅ
      ๏ต   ์ˆ˜์ • ๊ฐ€๋Šฅ
      ๏ต   ์˜ˆ
          ๏‚ง ์ฃผ๋ฌธ ๊ฐœ์ฒด์˜ ์ฃผ๋ฌธ ๊ณ ๊ฐ ์†์„ฑ   ๊ณ ๊ฐ ๊ฐœ์ฒด์˜ ๊ณ ๊ฐ๋ฒˆํ˜ธ
          ๏‚ง ์ˆ˜๊ฐ• ๊ฐœ์ฒด์˜ ์ˆ˜๊ฐ• ํ•™์ƒ ์†์„ฑ   ํ•™์ƒ ๊ฐœ์ฒด์˜ ํ•™๋ฒˆ


INFORMIX User                      16
์ •๊ทœํ™” - 1NF(First Normal Form)
  ๏ถ ์—”ํ‹ฐํ‹ฐ (entity) ์•ˆ์— ๋ฐ˜๋ณต๋˜๋Š” ์†์„ฑ ๊ทธ๋ฃน์„ ์ œ๊ฑฐํ•œ๋‹ค

                         ์ฃผ๋ฌธ            ์ฃผ๋ฌธ
                         ์ฃผ๋ฌธ๋ฒˆํ˜ธ
                         ์ฃผ๋ฌธ๋‚ ์งœ          ์ฃผ๋ฌธ๋ฒˆํ˜ธ   composite
                         ์ด์•ก            ํ•ญ๋ชฉ๋ฒˆํ˜ธ   primary key
                         ํ•ญ๋ชฉ๋ฒˆํ˜ธ 1        ์ˆ˜๋Ÿ‰
                         ํ•ญ๋ชฉ์ˆ˜๋Ÿ‰ 1        ์ฃผ๋ฌธ๋‚ ์งœ
    ๋ฐ˜๋ณต๋˜๋Š” ์†์„ฑ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์œ 
                         ํ•ญ๋ชฉ๋ฒˆํ˜ธ 2        ์ด์•ก
    ์—ฐํ•˜๊ฒŒ ์ €์žฅํ•  ์ˆ˜ ์—†๋‹ค .
                         ํ•ญ๋ชฉ์ˆ˜๋Ÿ‰ 2        ์ง€๋ถˆ๋‚ ์งœ
    ์—ฌ๊ธฐ์„œ , ํ•ญ๋ชฉ์€ ์ตœ๋Œ€ 4 ๊ฐœ๋ฐ–์—
                         ํ•ญ๋ชฉ๋ฒˆํ˜ธ 3
    ์ €์žฅํ•  ์ˆ˜ ์—†๋‹ค
                         ํ•ญ๋ชฉ์ˆ˜๋Ÿ‰ 3
                         ํ•ญ๋ชฉ๋ฒˆํ˜ธ 4
                         ํ•ญ๋ชฉ์ˆ˜๋Ÿ‰ 4




INFORMIX User                     17
์ •๊ทœํ™” - 2NF(Second Normal
   Form)
  ๏ถ 1NF ์—์„œ ๋ชจ๋“  ์†์„ฑ์€ ์ „์ฒด Primary Key ์— ์ข…์†๋˜์–ด์•ผํ•œ๋‹ค
  ๏ถ ์—”ํ‹ฐํ‹ฐ์˜ ๋ชจ๋“  ์†์„ฑ์€ Primary Key ์— functionally dependent ํ•ด์•ผ
    ํ•œ๋‹ค
  ๏ถ ๋ฐ์ดํ„ฐํ•ญ๋ชฉ a ๊ฐ€ ๋ฐ์ดํ„ฐํ•ญ๋ชฉ b ์— ์˜ํ•ด ์ •์˜๋  ์ˆ˜ ์žˆ๋‹ค๋ฉด a ๋Š” b ์—
    functionally dependant ํ•˜๋‹ค๊ณ  ํ•œ๋‹ค
                                      ์ฃผ๋ฌธ                        ์ฃผ๋ฌธ๋งˆ์Šคํ„ฐ

                                                                ์ฃผ๋ฌธ๋ฒˆํ˜ธ
        ์ฃผ๋ฌธ๋‚ ์งœ , ์ด์•ก ,                   ์ฃผ๋ฌธ๋ฒˆํ˜ธ
                                                                ์ฃผ๋ฌธ๋‚ ์งœ
        ์ง€๋ถˆ๋‚ ์งœ๋Š” ๋‹จ์ง€                      ํ•ญ๋ชฉ๋ฒˆํ˜ธ
                                                                ์ด์•ก
        ์ฃผ๋ฌธ๋ฒˆํ˜ธ์—๋งŒ                        ์ˆ˜๋Ÿ‰
                                                                ์ง€๋ถˆ๋‚ ์งœ
        functionally                  ์ฃผ๋ฌธ๋‚ ์งœ
        dependant ํ•˜๋‹ค                  ์ด์•ก
                                      ์ง€๋ถˆ๋‚ ์งœ                      ์ฃผ๋ฌธ์ƒ์„ธ

                                                                ์ฃผ๋ฌธ๋ฒˆํ˜ธ
        ์ฃผ๋ฌธ๋ฒˆํ˜ธ    1010       1010       1011       1010 ํ•ญ๋ชฉ์˜ ์ง€๋ถˆ    ํ•ญ๋ชฉ๋ฒˆํ˜ธ
        ํ•ญ๋ชฉ๋ฒˆํ˜ธ    1          2          3                         ์ˆ˜๋Ÿ‰
        ์ˆ˜๋Ÿ‰      20         3          12         ๋‚ ์งœ๊ฐ€ ๋ฐ”๋€Œ๋ฉด ๋ชจ
        ์ฃผ๋ฌธ๋‚ ์งœ    1/4/2001   1/4/2001   1/4/2001   ๋“  1010 ํ•ญ๋ชฉ์„ ์ˆ˜
        ์ด์•ก      50,000     50,000     50,000
        ์ง€๋ถˆ๋‚ ์งœ    2/4/2001   2/4/2001   2/4/2001
                                                 ์ •ํ•ด์•ผ ํ•œ๋‹ค


INFORMIX User                                          18
์ •๊ทœํ™” - 3NF(Third Normal
   Form)
  ๏ถ Primary Key ์— ์ข…์†์ ์ธ Key ๊ฐ€ ์•„๋‹Œ ์†์„ฑ์— ์ข…์†์ ์ธ ์†์„ฑ์ด ์žˆ์œผ๋ฉด
    ์•ˆ๋œ๋‹ค .
  ๏ถ ์–ด๋– ํ•œ ์†์„ฑ๋„ Primary Key ์— transitively dependent ํ•˜๋ฉด ์•ˆ๋œ๋‹ค .
  ๏ถ ๋ฐ์ดํ„ฐํ•ญ๋ชฉ a ๊ฐ€ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐํ•ญ๋ชฉ b ์— ์ข…์†์ ์ด๋ฉด a ๋Š” b ๊ฐ€ ์ข…์†์ ์ธ
    ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ํ•ญ๋ชฉ์—๋„ ํ•จ๊ป˜ ์ข…์†์ ์ธ ๊ด€๊ณ„๊ฐ€ ๋˜๊ณ  ์ด๋ฅผ transitively
    dependent ํ•˜๋‹ค๊ณ  ๋งํ•œ๋‹ค
                      ์ฃผ๋ฌธ๊ฐ€๊ฒฉ                        ์ฃผ๋ฌธ       ํ’ˆ๋ชฉ
                       ์ฃผ๋ฌธ๋ฒˆํ˜ธ                       ์ฃผ๋ฌธ๋ฒˆํ˜ธ
                       ํ•ญ๋ชฉ๋ฒˆํ˜ธ                       ํ•ญ๋ชฉ๋ฒˆํ˜ธ     ํ’ˆ๋ชฉ๋ฒˆํ˜ธ
                       ํ’ˆ๋ชฉ๋ฒˆํ˜ธ                       ํ’ˆ๋ชฉ๋ฒˆํ˜ธ     ์ œ์กฐ์ฝ”๋“œ
                       ์ œ์กฐ์ฝ”๋“œ                       ์ œ์กฐ์ฝ”๋“œ     ๋‹จ๊ฐ€
                       ์ˆ˜๋Ÿ‰                         ์ˆ˜๋Ÿ‰
                       ๋‹จ๊ฐ€



    ์ฃผ๋ฌธ๋ฒˆํ˜ธ   1010    1010    1011    ์ฃผ๋ฌธํ•˜์ง€ ์•Š์€ ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ๋‹จ๊ฐ€๋ฅผ ์ž…๋ ฅํ•  ์ˆ˜ ์—†๋‹ค
    ํ•ญ๋ชฉ๋ฒˆํ˜ธ   1       2       1
    ํ’ˆ๋ชฉ๋ฒˆํ˜ธ   1       30      1       ํ•ญ๋ชฉ์„ ํฌํ•จํ•œ ์ฃผ๋ฌธ์ด ์‚ญ์ œ๋˜๋ฉด ๊ทธ ํ•ญ๋ชฉ์˜ ๋‹จ๊ฐ€๋ฅผ ์žƒ๋Š”๋‹ค
    ์ œ์กฐ์ฝ”๋“œ   ABC     XYZ     ABC     ๋‹จ๊ฐ€๋Š” ์ค‘๋ณต์ ์œผ๋กœ ์ €์žฅ๋œ๋‹ค
    ์ˆ˜๋Ÿ‰     20      3       12
    ๋‹จ๊ฐ€     1,000   3,500   1,000
                                   ๋‹จ๊ฐ€๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ๊ทธ ํ•ญ๋ชฉ์„ ํฌํ•จํ•œ ๋ชจ๋“  ์ฃผ๋ฌธ์— ๋Œ€ํ•ด์„œ ๋ณ€
                                   ๊ฒฝํ•ด์•ผ ํ•œ๋‹ค

INFORMIX User                                19
SQL ๊ฐœ์š”
   ๏ƒผ   SQL ์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€
   ๏ƒผ   SQL ์˜ ์ข…๋ฅ˜
   ๏ƒผ   DB ๋‚ด์˜ object ์ด๋ฆ„ ๊ทœ์น™
   ๏ƒผ   ์ธํฌ๋ฏน์Šค ์ž๋ฃŒํ˜• (Data Type)
   ๏ƒผ   Character Data Type
   ๏ƒผ   Numeric Data Type
   ๏ƒผ   Large Object Data Type
   ๏ƒผ   Time Data Type
   ๏ƒผ   Row Data Type
   ๏ƒผ   Collection Data Type
   ๏ƒผ   Complex Data Type
SQL ์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€ ?
  ๏ถ   Structured Query Language ์˜ ์ค€๋ง
  ๏ถ   ์˜์–ด์™€ ํก์‚ฌํ•œ ์–ธ์–ด
  ๏ถ   Database ์™€์˜ ๊ด€๋ จ ์ž‘์—…์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•จ .
  ๏ถ   ๋…ผ๋ฆฌ์ ์ธ database ์˜ model ์„ ๊ด€๊ณ„ํ˜• DB ์˜ schema ๋กœ ๋ฒˆ์—ญํ•˜๋Š”
      ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์–ธ์–ด .
      ๏ต schema ๋ž€ - DB ๋‚ด์—์„œ์˜ table ์˜ ๋ฌผ๋ฆฌ์ ์ธ ์ •์˜
      ๏ต table ์ด๋ž€ - ์—ด๊ณผ ํ–‰์œผ๋กœ ์ด๋ฃจ์–ด์ง„ 2 ์ฐจ์› ํ‘œํ˜„




INFORMIX User                 21
SQL ์˜ ์ข…๋ฅ˜
  ๏ถ DDL(Data Definition Language)
          ๏‚ง DB ๋‚˜ table ์„ ์ƒ์„ฑํ•˜๊ณ  , ๊ทธ ๊ตฌ์กฐ๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ์ž‘์—…๊ด€๋ จ ๊ตฌ๋ฌธ
  ๏ถ DML(Data Manipulation Language)
          ๏‚ง Data ๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  , ์ˆ˜์ •ํ•˜๊ณ  , ์‚ญ์ œํ•˜๋Š” ๋“ฑ์˜ Data ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ตฌ๋ฌธ
  ๏ถ Cursor Manipulation
          ๏‚ง Cursor ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ตฌ๋ฌธ
  ๏ถ Dynamic Management
          ๏‚ง ๋™์ ์œผ๋กœ ์ž์›์„ ์‚ฌ์šฉ , ๊ด€๋ฆฌํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ตฌ๋ฌธ
  ๏ถ Data Access
          ๏‚ง Data ์— ๋Œ€ํ•œ ๊ถŒํ•œ์„ ์„ค์ •ํ•˜๊ณ  , lock ์„ ๊ฑฐ๋Š”๋“ฑ์˜ ์ž‘์—…์— ์‚ฌ์šฉ๋˜๋Š” ๊ตฌ๋ฌธ
  ๏ถ Data integrity
          ๏‚ง Transaction ์„ ๊ด€๋ฆฌํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ตฌ๋ฌธ
  ๏ถ Query optimization
          ๏‚ง ์งˆ์˜ ์ตœ์ ํ™”์— ์‚ฌ์šฉ๋˜๋Š” ๊ตฌ๋ฌธ
  ๏ถ Stored procedure
          ๏‚ง Stored procedure ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์ž‘์—…์— ์‚ฌ์šฉ๋˜๋Š” ๊ตฌ๋ฌธ



INFORMIX User                     22
DB ๋‚ด์˜ object ์ด๋ฆ„ ๊ทœ์น™
  ๏ถ Informix version ์— ๋”ฐ๋ผ ๊ธธ์ด ์ œํ•œ์ด ๋‹ค๋ฆ„ .
      ๏ต Informix 7.*,8.* ,9.1*: 18 ๊ธ€์ž ( ์˜๋ฌธ๊ธฐ์ค€ )
      ๏ต Informix 9.2* : 128 ๊ธ€์ž ( ์˜๋ฌธ๊ธฐ์ค€ )
  ๏ถ ์ˆซ์ž๋กœ ์‹œ์ž‘ํ•˜๋ฉด ์•ˆ๋จ .
  ๏ถ ํŠน์ˆ˜๋ฌธ์ž์˜ ์‚ฌ์šฉ ๋ถˆ๊ฐ€
      ๏ต ์˜ˆ : ๊ณต๋ฐฑ๋ฌธ์ž , tab ๋ฌธ์ž , ๋“ฑโ€ฆ
  ๏ถ โ€œ_ โ€ ๋Š” ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  ๏ถ ANSI-reserved word ์‚ฌ์šฉ ์•ˆ๋จ .




INFORMIX User                       23
์ธํฌ๋ฏน์Šค ์ž๋ฃŒํ˜• (data type)
                                  Character                              char

                                   Numeric               Exact          varchar

     Built-in Data Type          Large-object         Approximate      lvarchar

   User-defined Data Type            Time                byte       decimal/numeric

    Complex Data Type              boolean                text          money

                            Opaque Data Type             blob         integer/int

                            Distinct Data Type           clob          smallint

           Row Type          Named Row Type              date            int8

        Collection Type     Unnamed Row Type           datetime          serial

                                      set               interval        serial8

                                      list                             decimal

                                   multiset                              float

                                                                         real


INFORMIX User                                    24
Character Data Type
  ๏ถ char (size)
      ๏ต ๊ณ ์ • ๊ธธ์ด ๋ฌธ์ž ์ €์žฅ
      ๏ต 1~ 32,767 byte ๊นŒ์ง€์˜ character ์ €์žฅ ๊ฐ€๋Šฅ
      ๏ต default ๊ฐ’์€ 1
  ๏ถ varchar (max, reserve)
      ๏ต ๊ฐ€๋ณ€ ๊ธธ์ด ๋ฌธ์ž ์ €์žฅ
      ๏ต 1~ 255 byte ๊นŒ์ง€ ๊ฐ€๋Šฅ
      ๏ต Reserve(default ๋กœ 0 ) ๋Š” option ์ด๋‚˜ Max ๋Š” ๋ฐ˜๋“œ์‹œ ์ฃผ์–ด์•ผ ํ•จ .
  ๏ถ lvarchar
      ๏ต 2K ๊นŒ์ง€์˜ ๊ฐ€๋ณ€๊ธธ์ด ๋ฌธ์ž๋ฅผ ์ €์žฅ




INFORMIX User                     25
Numeric Data Type
  ๏ถ decimal (precision,scale) or numeric (precision,scale)
      ๏ต ๊ณ ์ • ์†Œ์ˆ˜์  ์‹ค์ˆ˜๋ฅผ ์ €์žฅ ,32 ์œ ํšจ์ž๋ฆฌ์ˆ˜๊นŒ์ง€ ํ‘œํ˜„
      ๏ต default ์ž๋ฆฌ์ˆ˜ : 16, default ์†Œ์ˆ˜์ ์ดํ•˜ : 0
  ๏ถ money (precision, scale)
      ๏ต ๋‚ด๋ถ€์ ์œผ๋กœ decimal ๊ณผ ๊ฐ™์œผ๋‚˜ , ํ™”ํ๋‹จ์œ„๊ธฐํ˜ธ๊ฐ€ ๋ถ™์–ด์„œ ์ถœ๋ ฅ๋จ .
  ๏ถ integer or int
      ๏ต 4bytes integer ์ €์žฅ : -(2 31 -1) ~ 2 31 -1
  ๏ถ int8
      ๏ต 8bytes integer ์ €์žฅ : -(2 63 -1) ~ 2 63 -1
  ๏ถ smallint
      ๏ต 2bytes integer ์ €์žฅ : -(2 15 -1) ~ 2 15 -1
  ๏ถ serial (start) / serial8 (start)
      ๏ต ์„œ๋ฒ„์— ์˜ํ•ด ์ž๋™์ ์œผ๋กœ 1 ์”ฉ ์ฆ๊ฐ€๋˜๋Š” ๊ฐ’์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” type.
      ๏ต ๋‚ด๋ถ€์ ์œผ๋กœ int ์™€ ๊ฐ™์Œ .




INFORMIX User                           26
Numeric Data Type
  ๏ถ float or double precision
      ๏ต ๋ถ€๋™ ์†Œ์ˆ˜์  ์‹ค์ˆ˜๋ฅผ ์ €์žฅ
      ๏ต ์œ ํšจ์ž๋ฆฌ์ˆ˜ 16 ๊นŒ์ง€ ํ‘œํ˜„ ๊ฐ€๋Šฅ
  ๏ถ real or smallfloat
      ๏ต ๋ถ€๋™ ์†Œ์ˆ˜์  ์‹ค์ˆ˜๋ฅผ ์ €์žฅ
      ๏ต ์œ ํšจ์ž๋ฆฌ์ˆ˜ 8 ๊นŒ์ง€ ๊ฐ€๋Šฅ




INFORMIX User                   27
Large-Object Data Type
  ๏ถ Large-Object data type
      ๏ต text
          ๏‚ง 2G ๊นŒ์ง€์˜ ASCII character ํ˜•์‹์˜ object ๋ฅผ ์ €์žฅ
      ๏ต byte
          ๏‚ง 2G ๊นŒ์ง€์˜ binary character ํ˜•์‹์˜ object ๋ฅผ ์ €์žฅ
  ๏ถ Smart Large Object data type
      ๏ต clob
          ๏‚ง 4T ๊นŒ์ง€์˜ ASCII character ํ˜•์‹์˜ object ๋ฅผ ์ €์žฅ
      ๏ต blob
          ๏‚ง 4T ๊นŒ์ง€์˜ binary character ํ˜•์‹์˜ object ๋ฅผ ์ €์žฅ




INFORMIX User                        28
Time Data Type
  ๏ถ date
      ๏ต ์—ฐ , ์›” , ์ผ์˜ ๋‚ ์งœ๋ฅผ ์ €์žฅ
      ๏ต Format ์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Œ .(default : mm/dd/yyyy)
      ๏ต ํ™˜๊ฒฝ๋ณ€์ˆ˜ DBDATE ๋ฅผ ์ด์šฉํ•ด ๋ณ€๊ฒฝ
  ๏ถ datetime
      ๏ต ๋‚ ์งœ๋ฅผ ์‹œ๊ฐ„๊นŒ์ง€ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Œ .
      ๏ต default : yyyy-mm-dd hh:MM:ss.fff
  ๏ถ interval
      ๏ต ์‹œ๊ฐ„์˜ ๊ฐ„๊ฒฉ ( ๊ธฐ๊ฐ„ ) ์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Œ .




INFORMIX User                        29
Row Data Type
  ๏ถ C ์–ธ์–ด์˜ ๊ตฌ์กฐ์ฒด์™€ ์œ ์‚ฌํ•œ ์—ฌ๋Ÿฌ ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐ์˜ ๋ชจ์Œ
  ๏ถ Unnamed Row Data Type
          create table part ( part_id serial ,
                               cost     decimal,
                                part_dimensions row (length decimal, width decimal,
                                                        height decimal, weight
            decimal) );
          insert into part values (0, 10.00, row(1.0, 2.0, 3.0, 4.0));
  ๏ถ Named Row Data Type
          create row type dimension_t ( length decimal, width decimal,
                                             height decimal, weight decimal);
          create table part ( part_id serial, cost decimal, part_dimensions
            dimension_t);
                    constructor           Cast operator                 Row data type
          insert into part values (0, 10.00, row(1.0, 2.0, 3.0, 4.0)::dimension_t;



  ๏ถ Row Data Type ๋ฐ์ดํ„ฐ ์กฐํšŒ
          select part_id, cost, part_dimensions from part
                  where part_dimensions.weight > 100;

INFORMIX User                               30
Collection Data Type
  ๏ถ Set
      ๏ต ๋ฐ์ดํ„ฐ ์ž…๋ ฅ ์ˆœ์„œ์— ์˜๋ฏธ ์—†๊ณ  , ์ค‘๋ณต๋œ ๊ฐ’์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Œ
           alter table part add (defective_dates set(date not null));
           insert into part (part_id, defective_dates)
                   values (0,(set{2/23/2001,3/15/2001}));
           select * from part where โ€˜1/26/2001โ€™ in defective_dates;
  ๏ถ MultiSet
      ๏ต ๋ฐ์ดํ„ฐ ์ˆœ์„œ์— ์˜๋ฏธ ์—†๊ณ  , ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๋ฅผ ํ—ˆ์šฉํ•จ
  ๏ถ List
      ๏ต ๋ฐ์ดํ„ฐ ์ˆœ์„œ๊ฐ€ ์˜๋ฏธ ์žˆ๊ณ  , ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๋ฅผ ํ—ˆ์šฉํ•จ




INFORMIX User                                31
Complex Data Type
  ๏ถ User-defined Data Types (UDTs) ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค
  ๏ถ Distinct Types
      ๏ต ๊ธฐ์กด์— ์กด์žฌํ•˜๋Š” ๋ฐ์ดํ„ฐํ˜•์„ ๊ธฐ๋ฐ˜์œผ๋กœํ•œ ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐํ˜•์„ ๋‚˜ํƒ€๋‚ธ๋‹ค
          create distinct type inches as decimal;
          create row type dimension_t ( length inches, width inches, . . . );
  ๏ถ Opaque Data Types
      ๏ต C ์–ธ์–ด๋‚˜ JAVA ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐํ˜•์˜ ๋‚ด๋ถ€ ๊ตฌ์กฐ์™€ ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•œ๋‹ค
      ๏ต Create Opaque Type ๋ฌธ์„ ์ด์šฉํ•˜์—ฌ ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐํ˜•์„ ๋“ฑ๋กํ•œ๋‹ค
      ๏ต Create Function ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด ๋ฐ์ดํ„ฐํ˜•์„ ์ง€์›ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋“ฑ๋กํ•œ๋‹ค




INFORMIX User                              32
dbaccess ๋ฅผ ์ด์šฉํ•œ query ์‹ค
ํ–‰
    ๏ƒผ   dbaccess   ๋ž€?
    ๏ƒผ   dbaccess   ์‹คํ–‰
    ๏ƒผ   dbaccess   ์˜ ๋ฉ”๋‰ด ๊ตฌ์กฐ
    ๏ƒผ   dbaccess   ์˜ ์‹คํ–‰๋ฐฉ๋ฒ•
Dbaccess ๋ž€ ?
  ๏ถ Query ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  , db ๋‚˜ table ์— ๋Œ€ํ•œ information ์„ ๋ณผ ์ˆ˜ ์žˆ๋Š”
    tool




INFORMIX User                34
Dbaccess ์‹คํ–‰
  ๏ถ $ dbaccess




  ๏ถ ๋ฉ”๋‰ด์˜ ์‚ฌ์šฉ๋ฒ•
      ๏ต Space-bar ๋ฅผ ์ด์šฉํ•˜๊ฑฐ๋‚˜ ํ™”์‚ดํ‘œํ‚ค๋กœ ์ด๋™
      ๏ต ํ˜น์€ ๊ฐ ๋ฉ”๋‰ด์˜ ๋Œ€๋ฌธ์ž๋กœ ์“ฐ์—ฌ์ง„ ๋ฌธ์ž๋ฅผ ๋ˆ„๋ฆ„
          ๏‚ง ์˜ˆ : Exit ์˜ ๊ฒฝ์šฐ โ€œ eโ€ ๋ฅผ ๋ˆ„๋ฆ„




INFORMIX User                         35
Dbaccess ์˜ ๋ฉ”๋‰ด๊ตฌ์กฐ

   Query Language    Connection     Database        Table       Session     Exit
    New             Connect       Select        Create
    Run             Disconnect    Create        Alter
    Modify          Exit          Info          Info
    Use-Editor                    Drop          Drop
    Output                        cLose         Exit
    Save                          Exit
    Info
    Drop
    Exit



            ๏ƒผ NEW     dbaccess editor ์—์„œ SQL ๋ฌธ์žฅ์„ ์ž‘์„ฑํ•œ๋‹ค , ์ž‘์„ฑ์ด ๋๋‚˜๋ฉด ESC ํ‚ค๋ฅผ ๋ˆŒ๋Ÿฌ์•ผ ๋ฉ”๋‰ด๋กœ ๋Œ์•„๊ฐ„๋‹ค
            ๏ƒผ RUN     ์ž‘์„ฑ๋œ SQL ๋ฌธ์žฅ์„ ์‹คํ–‰ํ•œ๋‹ค
            ๏ƒผ MODIFY dbaccess editor ์—์„œ SQL ๋ฌธ์žฅ์„ ์ˆ˜์ •ํ•œ๋‹ค
            ๏ƒผ USE_EDITOR vi editor ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ SQL ๋ฌธ์žฅ์„ ์ž‘์„ฑ ๋ฐ ์ˆ˜์ •ํ•œ๋‹ค . ์ž‘์„ฑ์ด ๋๋‚˜๋ฉด ์ €์žฅํ•˜๊ณ  vi ๋ฅผ ์ข…๋ฃŒํ•œ๋‹ค
            ๏ƒผ OUTPUT ์ถœ๋ ฅ๊ฒฐ๊ณผ๋ฅผ ํŒŒ์ผ๋กœ ์ €์žฅํ•œ๋‹ค
            ๏ƒผ SAVE    editor ์— ๊ธฐ๋ก๋˜์–ด ์žˆ๋Š” SQL ๋ฌธ์žฅ์„ ํŒŒ์ผ๋กœ ์ €์žฅํ•œ๋‹ค ( ํ™•์žฅ์ž : .sql)
            ๏ƒผ INFO    ํ˜„์žฌ ์—ฐ๊ฒฐ๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํ…Œ์ด๋ธ” ์ •๋ณด๋ฅผ ๋ณธ๋‹ค
            ๏ƒผ DROP    ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ์— ์ €์žฅ๋œ SQL ํŒŒ์ผ ( ํ™•์žฅ์ž : .sql) ์„ ์‚ญ์ œํ•œ๋‹ค
            ๏ƒผ EXIT    Query Language ์ข…๋ฃŒ




INFORMIX User                              36
Dbaccess ์˜ ์‹คํ–‰ ๋ฐฉ๋ฒ•
  ๏ถ ๊ตฌ๋ฌธ์„ ์ ์€ file ์„ ๋ช…๋ น ํ”„๋กฌํ”„ํŠธ์—์„œ ๋ฐ”๋กœ ์‹คํ–‰ํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ
    ๋‹ค.
      ๏ต Shell program, cron job ๋“ฑ์— ์‘์šฉ ๊ฐ€๋Šฅ
      ๏ต dbaccess DB ์ด๋ฆ„ SQL ํŒŒ์ผ๋ช…
          dbaccess test_db test.sql
  ๏ถ Interactive mode ๋กœ prompt ์ƒ์—์„œ ์‹คํ–‰ํ•œ๋‹ค
      ๏ต SQL ๋ฌธ์žฅ ๋์— ์„ธ๋ฏธ์ฝœ๋ก  (;) ์„ ๋„ฃ์–ด์•ผ ์‹คํ–‰๋œ๋‹ค
      ๏ต ์ข…๋ฃŒ๋Š” interrupt ํ‚ค๋ฅผ ๋ˆŒ๋Ÿฌ ๋น ์ ธ๋‚˜์˜จ๋‹ค
          dbaccess test_db -
          > select * from customer;
  ๏ถ ์—ฌ๋Ÿฌ ๋ฌธ์žฅ์„ ๊ทธ๋ฃน์œผ๋กœ ํ”„๋กฌํ”„ํŠธ์—์„œ ์‹คํ–‰ํ•œ๋‹ค
      ๏ต ์ƒˆ ์ž…๋ ฅ ๋ผ์ธ ์ฒซ ์ž๋ฆฌ์— ์ข…๋ฃŒ ๋ฌธ์ž๊ฐ€ ๋‚˜ํƒ€๋‚ ๋•Œ๊นŒ์ง€ ๋ฌธ์žฅ์„ ์ž…๋ ฅ ๋ฐ›๋Š”๋‹ค
          dbaccess test_db << !
          > select * from customer;
          > select * from state;
          !




INFORMIX User                         37
Informix DBMS ์˜ ์ดํ•ด
    ๏ƒผ   Informix DBMS ์˜ ์•„ํ‚คํ…์ณ
    ๏ƒผ   Database Server ์˜ ๊ตฌ์„ฑ์š”์†Œ
    ๏ƒผ   ๋ฌผ๋ฆฌ์ ์ธ ์ €์žฅ ๊ณต๊ฐ„
    ๏ƒผ   ๋…ผ๋ฆฌ์ ์ธ ์ €์žฅ ๊ณต๊ฐ„
    ๏ƒผ   ๋ฌผ๋ฆฌ์  ๋””์Šคํฌ ๊ณต๊ฐ„ ํ• ๋‹น
    ๏ƒผ   ๋…ผ๋ฆฌ์  ๋””์Šคํฌ ๊ณต๊ฐ„ ํ• ๋‹น
    ๏ƒผ   SYSMASTER ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
    ๏ƒผ   ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์กฐ
Informix DBMS ์˜ ์•„ํ‚คํ…์ณ
    ๏ถ Client/Server ๊ตฌ์กฐ                ๏ถ Multi-threaded ๊ตฌ์กฐ
        ๏ต client ๋Š” server ์—๊ฒŒ               ๏ต ์ ์€ ํ”„๋กœ์„ธ์Šค ์†Œ์š”
          command ๋‚˜ query ๋ฅผ ๋ณด๋‚ด             ๏ต ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ•˜๋‚˜์˜ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜
          ๊ณ  ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›๋Š”๋‹ค                          ์„ ์œ„ํ•˜์—ฌ ์ž‘์—…
        ๏ต server ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ปจ               ๏ต ์„œ๋ฒ„ ํ”„๋กœ์„ธ์Šค ์•ˆ์—์„œ thread
          ํ…์ธ ๋ฅผ ๊ด€๋ฆฌํ•˜๋ฉฐ client ๊ฐ€ ๋ณด                scheduling ๊ณผ context switching
          ๋‚ธ query ๋ฅผ ํ•ด์„ํ•˜๊ณ  ์‹คํ–‰ํ•˜
          ์—ฌ ๊ฒฐ๊ณผ๋ฅผ client ์—๊ฒŒ ๋ณด๋‚ธ๋‹ค

                                                         application

                          โ€ขinterpre
                          t
                          โ€ขexecute
                SQL
                          โ€ขreturn

                results
                                               process     process     process
      Client                Server

                                                           Server


INFORMIX User                         39
Database Server ์˜ ๊ตฌ์„ฑ ์š”์†Œ
    ๋น ๋ฅธ access
    ๋ฅผ ์œ„ํ•˜์—ฌ disk              Shared Memory
    ๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ
    ๋ฅผ cache ํ•˜๋Š”                                      Lock, LRU, Buffer Pool,
                             Resident Portion       Logical log buffer,
    ์˜์—ญ
    ์‚ฌ์šฉ์ž ์„ธ์…˜ ๊ด€                                        Physical Log Buffer..
                            Virtual    Message
    ๋ฆฌ          MT, Sort,                                  client ์™€
                            Portion    Portion            server ๊ฐ„์˜ ํ†ต
               Session,
               Procedure, Dictionary,                     ์‹  ์˜์—ญ
    ๋ฉ”๋ชจ๋ฆฌ์™€ ๋””์Šค
    ํฌ ๋ฐ์ดํ„ฐ์˜ ๋™ Big buffer, Global..     ํ™˜๊ฒฝ๋ณ€์ˆ˜ :       INFORMIXSERVER, INFORMIXDIR,
    ๊ธฐํ™” ์ž‘์—…                                                 PATH
                             checkpoin
                                 t
                                                        Processes
 Chunk                          Disk
 Page                                                         V.P ๋Š” ์ž์ฒด์ ์œผ๋กœ
 Extent                                                       thread ๋ฅผ
 Tblspace                                                     scheduling ํ•˜๊ณ 
 Dbspace                                                      ์‹คํ–‰ํ•œ๋‹ค
 Blobspace                               Virtual Processors
 Smart Blobspace                         (CPU, PIO, LIO, AIO, ADT, MSC, SHM,
 Physical Log, Logical Log                TLI, SOC, ADM, OPT, JVP..)



INFORMIX User                             40
๋ฌผ๋ฆฌ์ ์ธ ์ €์žฅ ๊ณต๊ฐ„
  ๏ถ Page
      ๏ต   IDS ์˜ ๊ธฐ๋ณธ์ ์ธ I/O ์˜ ๋‹จ์œ„
      ๏ต   CHUNK ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์ตœ์†Œ ๋‹จ์œ„ .
      ๏ต   ๋ฉ”๋ชจ๋ฆฌ ๋ฒ„ํผ์˜ ์‚ฌ์ด์ฆˆ์™€ ๋™์ผ
      ๏ต   Size : 2K ํ˜น์€ 4K
  ๏ถ Extent
      ๏ต Table ์ด๋‚˜ index, fragment ์— ์ €์žฅ์˜์—ญ์„ ํ• ๋‹นํ•˜๋Š” ๋‹จ์œ„๋กœ์„œ , ์—ฐ์†๋œ ํŽ˜
        ์ด์ง€์˜ ๋ฌถ์Œ .
  ๏ถ Chunk
      ๏ต Informix ์— ํ• ๋‹น๋œ ์—ฐ์†๋œ disk ์˜ ๊ณต๊ฐ„
      ๏ต Raw device ๋‚˜ cooked device(file) ๊ฐ€๋Šฅ




INFORMIX User                       41
๋…ผ๋ฆฌ์ ์ธ ์ €์žฅ๊ณต๊ฐ„
  ๏ถ Tblspaces
      ๏ต Table ์— ํ• ๋‹น๋œ extent ์˜ ๋ฌถ์Œ
      ๏ต ํ•˜๋‚˜์˜ dbspace ์—๋งŒ ์กด์žฌ๊ฐ€๋Šฅ
  ๏ถ Dbspaces
      ๏ต Informix ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ์ €์žฅ ๊ณต๊ฐ„์œผ๋กœ ํ•˜๋‚˜ ์ด์ƒ์˜ Chunk ๋กœ ๊ตฌ์„ฑ๋จ .




        /dev/rvol1                            Tab1 ์˜ tablespace

                dbspace                       Tab2 ์˜ tablespace

                     /usr/ifmxdata
        /dev/rvol2




INFORMIX User                        42
๋ฌผ๋ฆฌ์ ์ธ ๋””์Šคํฌ ๊ณต๊ฐ„ ํ• ๋‹น
                                           first_table
          create table first_table (
             tab_id int ,
             name char(20) ,                                    second_table
             address          char(50)
          ) extent size 32 next size 16;


          create table second_table (                    โ€ฆโ€ฆโ€ฆโ€ฆ
             tab_id int ,
             name char(20) ,
             address         char(50)
          ) extent size 16 next size 8;




                                                                  page




INFORMIX User                              43
๋…ผ๋ฆฌ์  ๋””์Šคํฌ ๊ณต๊ฐ„ ํ• ๋‹น
          create database example1db;
          create database example2db in dbspace1;   rootdbs
          create table first_table (
              tab_id int ,
              name char(20) ,                        example1db
              address         char(50)
          ) ;
          create table second_table (
                                                    dbspace1
              tab_id int ,
              name char(20) ,                        example2db
              address         char(50)
          ) in dbspace2;                                first_table


                                                    dbspace2

                                                      second_table




INFORMIX User                           44
SYSMASTER ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
  ๏ถ Informix ์„œ๋ฒ„์˜ ์ •๋ณด๋ฅผ ์ €์žฅ
  ๏ถ Informix ์„œ๋ฒ„๊ฐ€ ์ดˆ๊ธฐํ™” ๋˜๋Š” ์‹œ์ ์— ์ž๋™ ์ƒ์„ฑ
  ๏ถ ๊ณต์œ ๋ฉ”๋ชจ๋ฆฌ์˜ ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ์ ‘๊ทผ (access)

     SELECT dbsnum, name, owner,
            nchuncks, is_temp,       shared memory
            is_blobspace, flags                         SELECT partnum, dbsnum,
     FROM sysdbspaces                                          owner, tabname
                                                        FROM systabnamess
                                            process     WHERE dbsname = โ€œDB ์ด๋ฆ„
                                                        โ€

      SELECT name, owner,
      created,
               is_logging,              sysmaster
      is_buff_log,
               is_ansi
      FROM sysdatabases

                                                      SELECT sid, username, uid
                 SELECT c.dbsnum, chknum,                     hostname,
                         nxchknum, d.name,            connected
                         chksize, nfree               FROM syssessions
                 FROM syschunks c, sysdbspaces
                 c
                 WHERE c.dbsnum = d.dbsnum
                 AND d.name = โ€œdbspace ์ด๋ฆ„โ€


INFORMIX User                                45
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์กฐ (1)
  ๏ถ ์‹œ์Šคํ…œ ์นดํƒ€๋กœ๊ทธ ํ…Œ์ด๋ธ” (system catalog table)
      ๏ต ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ตฌ์กฐ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ €์žฅ
      ๏ต ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ์‹œ์ ์— ์ž๋™์ ์œผ๋กœ ์ƒ์„ฑ
      ๏ต ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋‚ด์˜ ํ…Œ์ด๋ธ” ๊ตฌ์กฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋Š” ์‹œ์ ์— ์ž๋™์œผ๋กœ ์ˆ˜์ •
  ๏ถ ๋ฐ์ดํ„ฐ ํ…Œ์ด๋ธ”
      ๏ต ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•  ๋•Œ ๊ณ ๋ คํ•  ์‚ฌํ•ญ
          ๏‚ง dbspace : ํ…Œ์ด๋ธ”์ด ์ƒ์„ฑ๋  ์œ„์น˜
          ๏‚ง extent/next size : ์—ฐ์†์œผ๋กœ ํ• ๋‹นํ•  ๊ณต๊ฐ„์˜ ํฌ๊ธฐ
          ๏‚ง lock mode : row ๋˜๋Š” page ๋‹จ์œ„์˜ locking ์‚ฌ์šฉ
  ๏ถ ์ธ๋ฑ์Šค
      ๏ต ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ์ •๋ณด๋ฅผ ์ €์žฅ
      ๏ต ์ธ๋ฑ์Šค์˜ ์ข…๋ฅ˜
          ๏‚ง ๋ฐ์ดํ„ฐ ์ค‘๋ณต ์—ฌ๋ถ€์— ๋”ฐ๋ผ unique / duplicate ์ธ๋ฑ์Šค๋กœ ๊ตฌ๋ถ„
          ๏‚ง ์—ฌ๋Ÿฌ ์ปฌ๋Ÿผ์„ ์ธ๋ฑ์Šค ํ‚ค๋กœ ์‚ฌ์šฉํ•˜๋Š” composite ์ธ๋ฑ์Šค
          ๏‚ง ์ธ๋ฑ์Šค ์ƒ์„ฑ ์‹œ ๋ฐ์ดํ„ฐ์˜ ๋ฌผ๋ฆฌ์  ์œ„์น˜๋ฅผ ์žฌ ์ •๋ ฌ์‹œํ‚ค๋Š” cluster ์ธ๋ฑ์Šค




INFORMIX User                       46
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์กฐ (2)
  ๏ถ ์ œ์•ฝ์กฐ๊ฑด (Constraints)
      ๏ต   Referential constraint : ํ…Œ์ด๋ธ”๊ฐ„์˜ integrity ๋ณด์žฅ
      ๏ต   Default values : ์ž…๋ ฅ ๋‚ด์šฉ์ด ์—†์„ ๊ฒฝ์šฐ ์ง€์ •ํ•œ ๊ธฐ๋ณธ๊ฐ’ ์ €์žฅ
      ๏ต   NOT NULL constraint : null ๊ฐ’์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ์ปฌ๋Ÿผ ์ง€์ •
      ๏ต   Check constraint : ์ž…๋ ฅ , ์ˆ˜์ •์‹œ ํ—ˆ์šฉํ•˜๋Š” ์ปฌ๋Ÿผ ๊ฐ’์„ ์ง€์ •
      ๏ต   Unique constraint : ์ปฌ๋Ÿผ๊ฐ’์ด ํ…Œ์ด๋ธ”์•ˆ์—์„œ ์œ ์ผ
  ๏ถ ๋ทฐ (view) ํ…Œ์ด๋ธ”
      ๏ต ์‹ค์ œ ํ…Œ์ด๋ธ”์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฐ€์ƒ์˜ ํ…Œ์ด๋ธ”
  ๏ถ Stored Procedure
      ๏ต ์‚ฌ์šฉ์ž๊ฐ€ ์ •์˜ํ•œ ํ•จ์ˆ˜
      ๏ต ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์•ˆ์— ์ €์žฅ๋˜๋Š” ๋กœ์ง
  ๏ถ Trigger
      ๏ต ํ…Œ์ด๋ธ”์— ์ด๋ฒคํŠธ ๋ฐœ์ƒ์‹œ ์ž๋™์ ์œผ๋กœ ์‹คํ–‰




INFORMIX User                     47
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์กฐ (3)
  ๏ถ dbschema utility
      ๏ต ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ตฌ์กฐ๋ฅผ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋Š” ์œ ํ‹ธ๋ฆฌํ‹ฐ
      ๏ต ์‚ฌ์šฉ๋ฒ•
          ๏‚ง   dbschema   -d   <DB   ์ด๋ฆ„   >
          ๏‚ง   dbschema   -d   <DB   ์ด๋ฆ„   > -t <table ์ด๋ฆ„ >
          ๏‚ง   dbschema   -d   <DB   ์ด๋ฆ„   > -s <synonym ์ด๋ฆ„ >
          ๏‚ง   dbschema   -d   <DB   ์ด๋ฆ„   > -f <procedure ์ด๋ฆ„ >

          ๏‚ง table ์ด๋ฆ„ , synonym ์ด๋ฆ„ , procedure ์ด๋ฆ„ ๋Œ€์‹  โ€œ allโ€ ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ง€์ •ํ•œ ๋ฐ์ด
            ํ„ฐ๋ฒ ์ด์Šค ๋‚ด์˜ ๋ชจ๋“  table, synonym, procedure ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค
          ๏‚ง ์˜ต์…˜๋’ค์— ํŒŒ์ผ ์ด๋ฆ„์„ ๋ช…์‹œํ•˜๋ฉด ์‹คํ–‰๊ฒฐ๊ณผ๊ฐ€ ํŒŒ์ผ๋กœ ์ €์žฅ๋œ๋‹ค
          ๏‚ง -ss ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•˜๋ฉด ํ…Œ์ด๋ธ”์˜ lock mode, extent, space ์ •๋ณด ๋“ฑ์„ ์ž์„ธํžˆ ์ถœ
            ๋ ฅํ•œ๋‹ค .




INFORMIX User                                   48
SQL ์„ ์ด์šฉํ•œ ์งˆ์˜ ๋ฐฉ๋ฒ•
   ๏ƒผ   SQL ์งˆ์˜ ์ž‘์„ฑ ๋ฐฉ๋ฒ•
   ๏ƒผ   DML ๋ฌธ์˜ ์ข…๋ฅ˜
   ๏ƒผ   SELECT
   ๏ƒผ   SELECT ์˜ ์˜ˆ
   ๏ƒผ   SQL ์‹คํ–‰ ๊ฒฝ๋กœ ํ™•์ธ
   ๏ƒผ   INSERT, UPDATE, DELETE
   ๏ƒผ   Concurrency Control
   ๏ƒผ   SPL
   ๏ƒผ   SPL ์ƒ์„ฑ ๋ฐ ์‹คํ–‰
   ๏ƒผ   SPL ๊ตฌ๋ฌธ
   ๏ƒผ   Trigger
SQL ์งˆ์˜ ์ž‘์„ฑ ๋ฐฉ๋ฒ•
  ๏ถ ๊ตฌ๋ฌธ ( ๊ตฌ๋ฌธ , ํ…Œ์ด๋ธ”์ด๋ฆ„ , ์ปฌ๋Ÿผ์ด๋ฆ„๋“ฑ ..) ์€ ๋Œ€ ์†Œ๋ฌธ์ž ์ƒ๊ด€ ์—†๋‹ค .
  ๏ถ ์งˆ์˜์˜ ๋‚ด์šฉ์ด ์•„๋‹Œ ์ฃผ์„์˜ ๊ฒฝ์šฐ
      ๏ต ์ค„๋‹จ์œ„๋กœ๋Š” โ€œ --โ€ ๋ฅผ ์ด์šฉํ•˜๊ณ 
      ๏ต ๋‹จ๋ฝ๋‹จ์œ„๋กœ๋Š” โ€œ { }โ€ ๋ฅผ ์ด์šฉํ•œ๋‹ค .
  ๏ถ ๋ฌธ์ž๋ฅผ ์ž…๋ ฅํ•˜๊ฑฐ๋‚˜ , ๋น„๊ตํ• ๋•Œ์—๋Š” ์ธ์šฉ๋ถ€ํ˜ธ๊ฐ€ ํ•„์š”ํ•˜๋‹ค .
  ๏ถ ์กฐ๊ฑด์˜ ๋Œ€์ƒ์ด๋˜๋Š” ๋ฌธ์ž์—ด์˜ ๊ฒฝ์šฐ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ณ„ํ•œ๋‹ค .
      ๏ต โ€œCAโ€ ,โ€caโ€, โ€œCaโ€ ๋Š” ๋ชจ๋‘ ๋‹ค๋ฅด๋‹ค .
  ๏ถ ํ•œ ๋ฌธ์žฅ์€ โ€œ ;โ€ ๋กœ ๋๋‚œ๋‹ค .




INFORMIX User                     50
DML ๋ฌธ์˜ ์ข…๋ฅ˜
  ๏ถ SELECT
      ๏ต ํ…Œ์ด๋ธ”๋‚ด์˜ ์ž๋ฃŒ๋ฅผ ๊ฐ€์ ธ์˜ด .
      ๏ต Row, column ๋‹จ์œ„
  ๏ถ INSERT
      ๏ต ํ…Œ์ด๋ธ”๋‚ด์— ์ƒˆ๋กœ์šด ์ž๋ฃŒ๋ฅผ ์ž…๋ ฅ
      ๏ต Row ๋‹จ์œ„
  ๏ถ UPDATE
      ๏ต ํ…Œ์ด๋ธ”๋‚ด์˜ ์ž๋ฃŒ๋ฅผ ๊ฐฑ์‹ 
      ๏ต Column ๋‹จ์œ„
  ๏ถ DELETE
      ๏ต ํ…Œ์ด๋ธ”๋‚ด์˜ ์ž๋ฃŒ๋ฅผ ์‚ญ์ œ
      ๏ต Row ๋‹จ์œ„




INFORMIX User              51
SELECT
  ๏ถ ๋ฌธ๋ฒ•

      Select ๊ฐ€์ ธ์˜ฌ ์ปฌ๋Ÿผ ๋ฆฌ์ŠคํŠธ
      From ํ…Œ์ด๋ธ” ์ด๋ฆ„
      Where ๊ฐ€์ ธ์˜ฌ ์กฐ๊ฑด
      Group by ๊ทธ๋ฃน์œผ๋กœ ๋งŒ๋“ค ๋Œ€์ƒ ์ปฌ๋Ÿผ
      Having ๊ทธ๋ฃน๋‚ด์˜ ๊ฐ€์ ธ์˜ฌ ์กฐ๊ฑด
      Order by ์ •๋ ฌ ๊ธฐ์ค€ ์ปฌ๋Ÿผ
      Into temp ์ž„์‹œํ…Œ์ด๋ธ”์˜ ์ด๋ฆ„




INFORMIX User                  52
Select ์˜ ์˜ˆ (1)

         SYNTAX
                            SELECT * FROM customer;
    Select *
    From table_name ;


  S ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ์ปฌ๋Ÿผ์„ ๊ฐ€์ ธ์˜จ๋‹ค .




         SYNTAX
                            SELECT distinct customer_num
    Select distinct ์ปฌ๋Ÿผ์ด๋ฆ„
                              FROM orders
    From table_name ;


    ๏ƒ ํ…Œ์ด๋ธ”์˜ ํŠน์ • ์ปฌ๋Ÿผ์ค‘ ์œ ์ผํ•œ ๊ฐ’๋งŒ์„
     ๊ฐ€์ ธ ์˜จ๋‹ค .




INFORMIX User              53
Select ์˜ ์˜ˆ (2)

         SYNTAX
                                     SELECT phone[2,3] FROM
    Select column [ first, last ]      customer;
    From table_name ;
                                     Output :
                                       Phone
    ๏ƒ ํ…Œ์ด๋ธ”์˜ ํŠน์ • ์ปฌ๋Ÿผ์˜ first ๋ถ€ํ„ฐ last ๊นŒ       08
    ์ง€๋ฅผ                                 11
     ๊ฐ€์ ธ์˜จ๋‹ค .                            12



         SYNTAX
                                     SELECT substr(phone,2,3)
    Select substr(column,first,n)      FROM customer;
    From table_name ;
                                Output :
                                (expression)
 ๏ƒ ํ…Œ์ด๋ธ”์˜ ํŠน์ • ์ปฌ๋Ÿผ์˜ first ๋ถ€ํ„ฐ n ๊ฐœ์˜ ๋ฌธ์ž๋ฅผ
                                789
  ๊ฐ€์ ธ์˜จ๋‹ค .
                                822
                                328


INFORMIX User                       54
Select ์˜ ์˜ˆ (3) โ€“ where ์กฐ๊ฑด ์ 
   ์šฉ
         SYNTAX
                                 SELECT stock_num, manu_code, unit
    Select . . .                   FROM stock
    From . . .                     WHERE unit != โ€˜caseโ€™;
    Where [ ์กฐ๊ฑด ]
             ] ํŠน์ • row ๋ฅผ ๊ฐ€์ ธ์˜ด .    ๏ƒ  stock ํ…Œ์ด๋ธ” ์ค‘ unit ์ปฌ๋Ÿผ ๊ฐ’์ด case
             ๏ƒ join ์˜ ์กฐ๊ฑด            ์ธ ๊ฒƒ๋งŒ
                                   ๊ฐ€์ ธ์˜จ๋‹ค .




                                 SELECT stock_num, manu_code, unit
                                   FROM stock
                                   WHERE unit != โ€˜caseโ€™;

                                 ๏ƒ  stock ํ…Œ์ด๋ธ” ์ค‘ unit ์ปฌ๋Ÿผ ๊ฐ’์ด case
                                   ๊ฐ€ ์•„๋‹Œ ๊ฒƒ๋งŒ ๊ฐ€์ ธ์˜จ๋‹ค .




INFORMIX User                   55
Select ์˜ ์˜ˆ (3-1) โ€“ where ์กฐ๊ฑด
     ์ ์šฉ
         SYNTAX

     Select . . .                    SELECT * FROM customer
     From . . .                        WHERE customer_num in
     Where ์ปฌ๋Ÿผ in ( ๊ฐ’ , ๊ฐ’ . . . );       (118,114,106);


     ๏ƒ ํ…Œ์ด๋ธ”์˜ ์ปฌ๋Ÿผ์ด ๊ฐ’๋“ค์ค‘์— ์žˆ๋‹ค๋ฉด ๋ชจ๋‘
      ๊ฐ€์ ธ์˜จ๋‹ค .




         SYNTAX
     Select . . .                    SELECT * FROM stock
     From . . .                        WHERE unit_price between 20.00 and
     Where ์ปฌ๋Ÿผ between A and B;          30.00;


 .   ํ…Œ์ด๋ธ”์˜ ์ปฌ๋Ÿผ์ด A ์™€ B ์‚ฌ์ด์ธ๊ฒƒ์„ ๊ฐ€์ ธ์˜จ๋‹ค .




INFORMIX User                       56
Select ์˜ ์˜ˆ (3-2) โ€“ where ์กฐ๊ฑด
     ์ ์šฉ
         SYNTAX

     Select . . .                 SELECT * FROM customer
     From . . .                     WHERE address2 is null;
     Where ์ปฌ๋Ÿผ is null ;

 S   ํ…Œ์ด๋ธ”์˜ ์ปฌ๋Ÿผ์ด null ๊ฐ’์ธ๊ฒƒ์„ ๊ฐ€์ ธ์˜จ๋‹ค .




         SYNTAX
     Select . . .                 SELECT * FROM customer
     From . . .                     WHERE address2 is not null;
     Where ์ปฌ๋Ÿผ is not null ;

 .   ํ…Œ์ด๋ธ”์˜ ์ปฌ๋Ÿผ์ด null ๊ฐ’์ด ์•„๋‹Œ๊ฒƒ์„ ๊ฐ€์ ธ์˜จ๋‹ค .




INFORMIX User                    57
Select ์˜ ์˜ˆ (3-3) โ€“ where ์กฐ๊ฑด
     ์ ์šฉ
         SYNTAX

     Select . . .              SELECT * FROM customer
     From . . .                  WHERE phone[1,3] matches
                                  โ€˜415โ€™;
     Where ์ปฌ๋Ÿผ matches โ€˜* ๊ฐ’ *โ€™;
                               SELECT * FROM customer
                                 WHERE company matches
 S   ํ…Œ์ด๋ธ”์˜ ์ปฌ๋Ÿผ์— ๊ฐ’์„ ํฌํ•จํ•œ ๊ฒƒ์„ ๊ฐ€์ ธ์˜จ๋‹ค .    โ€˜*City*โ€™;




         SYNTAX
     Select . . .                 SELECT customer_num , company
     From . . .                     FROM customer
     Where ์ปฌ๋Ÿผ like โ€˜% ๊ฐ’ %โ€™;         WHERE company like โ€˜City%โ€™;


 .   ํ…Œ์ด๋ธ”์˜ ์ปฌ๋Ÿผ์— ๊ฐ’์„ ํฌํ•จํ•œ ๊ฒƒ์„ ๊ฐ€์ ธ์˜จ๋‹ค .




INFORMIX User                    58
Select ์˜ ์˜ˆ (4) โ€“ ์ •๋ ฌ

         SYNTAX

    Select . . .     SELECT stock_num, manu_code
    From . . .         FROM stock
    Order by ์ปฌ๋Ÿผ ;      ORDER BY stock_num;

                     ๏ƒ  stock ํ…Œ์ด๋ธ”์˜ row ๋ฅผ stock_num
                       ์ˆœ์„œ๋กœ ๊ฐ€์ ธ์˜จ๋‹ค .




                     SELECT stock_num, manu_code
                       FROM stock
                       ORDER BY stock_num desc;

                     ๏ƒ  stock ํ…Œ์ด๋ธ”์˜ row ๋ฅผ stock_num
                       ๋‚ด๋ฆผ ์ˆœ์„œ๋กœ ๊ฐ€์ ธ์˜จ๋‹ค .




INFORMIX User       59
Select ์˜ ์˜ˆ (5) โ€“ ์กฐ๊ฑด์‹์˜ ์‚ฌ์šฉ

         SYNTAX

    CASE                           SELECT title,
                                             CASE movie_type
    WHEN condition1 THEN result1
                                                 WHEN 1 THEN โ€˜HORRORโ€™
    WHEN condition2 THEN result2                 WHEN 2 THEN โ€˜COMEDYโ€™
    . . .                                        WHEN 3 THEN โ€˜ROMANCEโ€™
    ELSE result n                                WHEN 4 THEN โ€˜WESTERNโ€™
    END                                          ELSE โ€˜UNCLASSIFIEDโ€™
                                             END,
  S ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋‹ค๋ฅธ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค .                       our_cost
                                     FROM movie_titles;




INFORMIX User                       60
Select ์˜ ์˜ˆ (5-1) โ€“ ์กฐ๊ฑด์‹์˜ ์‚ฌ
   ์šฉ
         SYNTAX
                                     SELECT fname,
                                               NVL(addr, โ€œAddress is missingโ€)
    NVL(value1, value2)                        as address
                                       FROM employees;
๏ƒ value1 ์ด null ๊ฐ’์ด๋ฉด value2 ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค .    Input :
                                      fname address
                                      Peter   3318 Rockdale
                                      Paul    NULL

                                      Output   :
                                      fname    address
                                      Peter      3318 Rockdale
                                      Paul       Address is missing




INFORMIX User                          61
Select ์˜ ์˜ˆ (5-2) โ€“ ์กฐ๊ฑด์‹์˜ ์‚ฌ
   ์šฉ
          SYNTAX
                                          SELECT DECODE
   DECODE(value1, value2, value3,                   (city, โ€œMenlo Parkโ€, โ€œlocalโ€,
              value4, . . . value n )                โ€œPalo Altoโ€, โ€œTall Treeโ€, city)
                                          city
                                              FROM customer;
 ๏ƒ value1 ์ด                              Input :             Output :
         value2 ์ด๋ฉด value3 ์„ return ํ•˜๊ณ  , city                city
         value4 ์ด๋ฉด value5 ๋ฅผ return ํ•˜๊ณ  , Menlo Park          Local
         ์•„๋‹ˆ๋ฉด valuen ์„ return ํ•œ๋‹ค .       Santa Clara         Santa Clara
                                        Palo Alto           Tall Tree
                                        San Francisco       San Francisco




INFORMIX User                              62
Select ์˜ ์˜ˆ (6) โ€“ function ์˜ ์‚ฌ
   ์šฉ
          SYNTAX
                                        UPDATE orders
    today                                  SET order_date = TODAY
    current                                WHERE order_num = 1005;
                                        INSERT INTO orders VALUES
                                           (0, TODAY, 120, NULL, NULL, NULL);
S ์˜ค๋Š˜ ๋‚ ์งœ๋ฅผ return ํ•œ๋‹ค .
๏ƒ today : ์—ฐ , ์›” , ์ผ                      CREATE TABLE new_acct (
๏ƒ current : ์—ฐ , ์›” , ์ผ , ์‹œ , ๋ถ„ , ์ดˆ , ๊ฐ       col1 int,
                                           col2 datetime year to day
                                                 default current year to day );
                                        DELETE FROM cust_calls
                                          WHERE res_dtime < CURRENT
                                                      YEAR TO MINUTE;
                                        SELECT * FROM orders
                                          WHERE
                                        DAY(ord_date)<DAY(CURRENT);
                                        SELECT * FROM cust_calls
                                          WHERE call_dtime BETWEEN
                                                   โ€˜1997-1-1 00:00:00โ€™ AND
                                        CURRENT;



INFORMIX User                          63
Select ์˜ ์˜ˆ (6-1) โ€“ Algebraic

         SYNTAX

                                              SELECT * FROM orders
  ABS ( num_expression )                         WHERE ABS(ship_charge) > 20;
  MOD ( dividend, divisor )                   SELECT
  POW ( base, exponent )                         MOD(today-mdy(1,1,year(today)),30)
  ROOT ( radicand, index ) default index:2       FROM orders;
                                              SELECT * FROM circle
  ROUND ( expr, factor ) default factor:0
                                                 WHERE (3.14 * POW(radius,2)) <
  SQRT ( sqrt_radicand )                      1000;
  TRUNC ( expr, factor ) default factor:0     SELECT ROOT(9) FROM square;
                                              SELECT ROOT(64,3) FROM cube;
                                              SELECT SQRT(9) FROM angles;




INFORMIX User                                64
Select ์˜ ์˜ˆ (6-2) โ€“
   Log,hex,length
         SYNTAX

    EXP (float_expression)      SELECT EXP(3) FROM angles;
                                SELECT LOGN(population) FROM history
    LOGN (float_expression)
                                  ORDER BY date;
    LOG10 (float_expression)    SELECT LOG10(distance) +1 digits
    HEX (expression)              FROM travel;
    LENGTH(expression)          SELECT tabname, HEX(partnum)
                                  FROM systables;
                                SELECT HeX(order_num + 1)
                                  FROM orders;
                                SELECT LENGTH(fname) +
                                         LENGTH(lname),
                                         LENGTH(โ€˜How many bytes ?โ€™)
                                  FROM customer;




INFORMIX User                  65
Select ์˜ ์˜ˆ (6-3) โ€“ time

         SYNTAX
                                        SELECT * FROM order
  DATE (non_date_expr)                  1. WHERE
  DAY (date/datetime_expr)              order_date<DATE(โ€˜12/31/99โ€™);
  MONTH (date/datetime_expr)            2. WHERE order_date < DATE(365);
  WEEKDAY (date/datetime_expr)          3. WHERE DAY(order_date) >
                                                        DAY (CURRENT);
  YEAR (date/datetime_expr)
                                        SELECT order_num, MONTH(order_date)
  EXTEND (datetime_expr, first to last)     FROM orders;
  MDY (month, day, year)                SELECT * FROM orders
                                            WHERE WEEKDAY(paid_date) =
                                                    WEEKDAY(CURRENT);
                                        SELECT order_num FROM orders
                                            WHERE YEAR(ship_date) <
                                     Date(365) = 12/31/1899+365day = 12/31/1900
                                        YEAR(TODAY);
                                     WEEKDAY ๋Š” ์ผ์š”์ผ์„ 0 ์œผ๋กœ ์‹œ์ž‘ํ•˜์—ฌ
                                     ๊ฐ ์š”์ผ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค
                                        0 : Sunday, 1 : Monday, โ€ฆ




INFORMIX User                          66
Select ์˜ ์˜ˆ (6-4) โ€“ time

         SYNTAX
                                              SELECT TO_CHAR(begin_date,
                                                        โ€˜%A %B %d, %Y %Rโ€™) FROM tab1;
    TO_DATE (String [,fmt] )                  UPDATE tab1
    TO_CHAR (String [,fmt] )                  SET begin_date = TO_DATE
                                                   (โ€œWednesday February 07, 01 14:17โ€,
                                                    โ€œ%A %B %d, %Y %Rโ€);
          The full weekday name as defined
    %A                                          Input :
          in the locale
                                                begin_date
          The full month name as defined        2001-02-07 14:17
    %B
          in the locale
          The day of the month as a decimal     Output :
    %d
          number                                begin_date
                                                Wednesday February 07, 01 14:17
    %Y   The year as a 4-digit decimal number

    %R    The time in 24-hour notation




INFORMIX User                                   67
Select ์˜ ์˜ˆ (6-5) โ€“
   trigonometric
         SYNTAX

                                      SELECT COS(degrees*180/3.14)
    COS/SIN/TAN (radian_expr)            FROM anglestb1;
    ASIN/ACOS/ ATAN (numeric_expr)    SELECT SIN(radians) FROM anglestb1;
    ATAN2 (y,x)                       SELECT TAN(radians) FROM anglestb1;
                                      SELECT ACOS(-0.73) FROM anglestb1;
                                      SELECT ASIN(-0.73) FROM anglestb1;
                                      SELECT ATAN(-0.73) FROM anglestb1
                                        WHERE angles > ATAN2(4,5);




INFORMIX User                        68
Select ์˜ ์˜ˆ (6-6) โ€“ string

         SYNTAX

 TRIM ( source_expr)                  SELECT TRIM(c1),
                                                TRIM(TRAILING โ€˜#โ€™ FROM
 TRIM ({ LEADING|TRAILING|BOTH }      c1),
        [trim_expr] FROM source_expr)           TRIM(LEADING FROM c1)
 TRIM ( trim_expr FROM source_expr)      FROM tab;
                                      UPDATE c1 = โ€˜xyzโ€™ FROM tab
                                        WHERE LENGTH(TRIM(c1))=5;
                                      SELECT c1, TRIM(LEADING โ€˜#โ€™ FROM
                                          TRIM(TRAILING โ€˜%โ€™ FROM โ€˜###abc
                                      %%%โ€™))
                                        FROM tab;




INFORMIX User                        69
Select ์˜ ์˜ˆ (6-7) โ€“ string

         SYNTAX

                                  SELECT REPLACE(โ€˜Mighxzy xzimeโ€™,โ€™xzโ€™,โ€™tโ€™)
    REPLACE(string,old [,new] )     FROM mytable;

                                    Output :
 ๏ƒ string ์˜ old ๊ฐ’์„ new ๋กœ ๋Œ€์ฒดํ•œ๋‹ค .      (constant)
                                    Mighty time




INFORMIX User                      70
Select ์˜ ์˜ˆ (6-8) โ€“ string

         SYNTAX

                                  SELECT LPAD(โ€˜Here we areโ€™,16,โ€™-_โ€™ )
                                    FROM mytable;
    LPAD(string,length [,pad] )   SELECT RPAD(โ€˜Where are youโ€™,18,โ€™?!โ€™)
    RPAD(string,length [,pad] )     FROM mytable;
                                   Output :
                                   (constant)
                                   -_-_-Here we are
  W ์™ผ์ชฝ์ด๋‚˜ ์˜ค๋ฅธ์ชฝ์— ํŠน์ • ๋ฌธ์ž๋ฅผ ์ฑ„์›Œ
  Length ๋งŒํผ์˜ ๋ฌธ์ž์—ด์„ ๋งŒ๋“ ๋‹ค .
                                   (constant)
                                   Where are you?!?!?




INFORMIX User                      71
Select ์˜ ์˜ˆ (6-9) โ€“ string

         SYNTAX

                                  SELECT city, LOWER(city), UPPER(city),
    UPPER (column or string)                INITCAP(city)
    LOWER(column or string)         FROM weather
    INITCAP (column or string)      WHERE UPPER(city) = โ€œSUNNYVALEโ€;
                                 Output :
                                 city
  ๏ƒ UPPER : ๋ชจ๋‘ ๋Œ€๋ฌธ์ž๋กœ
                                 sunnyVale
  ๏ƒ LOWER : ๋ชจ๋‘ ์†Œ๋ฌธ์ž๋กœ
  ๏ƒ INITCAP : ์ฒ˜์Œ ๋ฌธ์ž๋งŒ ๋Œ€๋ฌธ์ž๋กœ
                                 city        (constant) (constant)    (constant)
                                 sunnyVale   sunnyvale SUNNYVALE     Sunnyvale




INFORMIX User                      72
Select ์˜ ์˜ˆ (6-10) โ€“ aggregate

         SYNTAX

                                  SELECT count(*) FROM stock;
  COUNT(*)                        SELECT sum(total_price) FROM stock;
  AVG ( [DISTINCT|UNIQUE] column) SELECT city,state,count(*)
  MAX ( [DISTINCT|UNIQUE] column)   FROM customer
  MIN ( [DISTINCT|UNIQUE] column)   GROUP BY city,state;
  SUM ( [DISTINCT|UNIQUE] column) SELECT order_num,sum(total_price)
                                    FROM items
  COUNT([DISTINCT|UNIQUE] column) GROUP BY order_num;
  RANGE (expr)
  STDEV (expr)
  VARIANCE (expr)




INFORMIX User                        73
Select ์˜ ์˜ˆ (7) โ€“ group by,having

         SYNTAX

                          SELECT order_num,sum(total_price)
    SELECT . . .          FROM items
    FROM . . .            GROUP BY order_num
    GROUP BY ์ปฌ๋Ÿผ           HAVING COUNT(*) > 2;
    HAVING ์กฐ๊ฑด ;


 H ๊ธฐ์ค€ ์ปฌ๋Ÿผ์— ์˜ํ•ด ๋งŒ๋“ค์–ด์ง„ group ์•ˆ์—์„œ
   ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๊ทธ๋ฃน์˜ ๊ฒฐ๊ณผ๋งŒ์„ ๊ฐ€์ ธ์˜จ๋‹ค .




INFORMIX User                 74
Select ์˜ ์˜ˆ (8) โ€“ HINT ์˜ ์‚ฌ์šฉ
  ๏ถ Optimizer Directive (HINT) ๋ž€ ?
      ๏ต SQL ์„ ์–ด๋– ํ•œ ๋ฐฉ์‹์œผ๋กœ ์‹คํ–‰ํ•  ๊ฒƒ์ธ๊ฐ€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” optimizer ์—๊ฒŒ ์ฃผ๋Š” ์ง€
        ์‹œ์ž .
      ๏ต Index ์˜ ์‚ฌ์šฉ , join ๋ฐฉ๋ฒ• ๋“ฑ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค .


  ๏ถ ๋ฌธ๋ฒ•
      ๏ต ๊ทธ ์ค„์˜ ๋๊นŒ์ง€๊ฐ€ DIRECTIVE ์ผ๋•Œ
         ๏ƒ  โ€œ--+โ€ ๋กœ ์‹œ์ž‘
      ๏ต ์—ฌ๋Ÿฌ ์ค„ ํ˜น์€ ๊ทธ ์ค„์˜ ์ผ๋ถ€๊ฐ€ DIRECTIVE ์ผ๋•Œ
         ๏ƒ {+ } ๋กœ ๋ฌถ์Œ




INFORMIX User                        75
Select ์˜ ์˜ˆ (8-1) โ€“ access
   method
         SYNTAX
                                   SELECT --+ INDEX(e salary_indx)
    --+ INDEX                               name, salary
    ( {table|view|synonym|alias}     FROM emp e
       index[,index] )               WHERE e.dno = 1 AND e.salary > 50000;

  W ํŠน์ • ํ…Œ์ด๋ธ”์— ๋Œ€ํ•ด ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ
    ์งˆ์˜ํ•˜๋„๋ก ํ•จ .



         SYNTAX
                                   SELECT --+ AVOID_INDEX(e salary_indx)
    --+ AVOID_INDEX                         name, salary
    ( {table|view|synonym|alias}     FROM emp e
       index[,index] )               WHERE e.dno = 1 AND e.salary > 50000;


  S ํŠน์ • ํ…Œ์ด๋ธ”์— ๋Œ€ํ•ด ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋„๋ก
    ์งˆ์˜ํ•˜๋„๋ก ํ•จ .



INFORMIX User                       76
Select ์˜ ์˜ˆ (8-2) โ€“ access
   method
         SYNTAX

                                     SELECT {+ FULL(e) } name, salary
    --+ FULL                           FROM emp e
    ( {table|view|synonym|alias} )     WHERE e.dno = 1 AND e.salary > 50000;


 W ํŠน์ • ํ…Œ์ด๋ธ”์— ๋Œ€ํ•ด full scan ํ•˜์—ฌ
   ์งˆ์˜ํ•˜๋„๋ก ํ•จ .



         SYNTAX

                                     SELECT {+ AVOID_FULL(e),
    --+ AVOID_FULL                             INDEX(e salary_indx) }
    ( {table|view|synonym|alias} )             name, salary
                                       FROM emp e
                                       WHERE e.dno = 1AND e.salary > 50000;
  S ํŠน์ • ํ…Œ์ด๋ธ”์— ๋Œ€ํ•ด full scan ํ•˜์ง€ ๋ง๊ณ 
    ์งˆ์˜ํ•˜๋„๋ก ํ•จ .




INFORMIX User                         77
Select ์˜ ์˜ˆ (8-3) โ€“ Join Order

         SYNTAX

                                  SELECT --+ ORDERED
    --+ ORDERED
                                         name, title, dept
                                    FROM dept, job, emp
                                    WHERE title = โ€œclerkโ€
 ๏ƒ Join ์˜ ๋Œ€์ƒ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ Join ์˜ ์ˆœ์„œ๋ฅผ
                                    AND emp.dno = dept.dno
  from ์ ˆ ๋‹ค์Œ์˜ ํ…Œ์ด๋ธ” ์ˆœ์„œ๋Œ€๋กœ ํ•˜๋„๋ก ํ•œ๋‹ค .
                                    AND emp.job = job.job;




INFORMIX User                    78
Select ์˜ ์˜ˆ (8-4) โ€“ Join Method

         SYNTAX                            SYNTAX


    --+ USE_NL                        --+ AVOID_NL
    ( {table|view|synonym|alias} )    ( {table|view|synonym|alias} )

    ๏ƒ Join ์— ์žˆ์–ด์„œ Nested Loop Join ๋ฐฉ ๏ƒ Join ์— ์žˆ์–ด์„œ Nested Loop Join ์„ ์‚ฌ์šฉํ•˜์ง€
    ๋ฒ•์„                               ์•Š๋Š”๋‹ค .
      ์‚ฌ์šฉํ•œ๋‹ค .



         SYNTAX                            SYNTAX

    --+ USE_HASH                      --+ AVOID_HASH
    ( {table|view|synonym|alias}      ( {table|view|synonym|alias}
      [/BUILD|/PROBE] )                 [/BUILD|/PROBE] )

 ๏ƒ Join ์— ์žˆ์–ด์„œ HASH Join ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค ๏ƒ  Join ์— ์žˆ์–ด์„œ HASH Join ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์ง€
                                .
                                   ์•Š๋Š”๋‹ค .




INFORMIX User                        79
Select ์˜ ์˜ˆ (8-2) โ€“ Optimization
   Goal
         SYNTAX
                                    SELECT --+ FIRST_ROWS
    --+ FIRST_ROWS                           name, age
    --+ ALL_ROWS (default)            FROM employee e, department d
                                      WHERE e.dept_no = d.dept_no;

    ๏ƒ Query Optimizer ๊ฐ€ ์งˆ์˜๋ฅผ ์ตœ์ ํ™” ํ• ๋•Œ   SET OPTIMIZATION FIRST_ROWS;
    ์—,                              SELECT โ€ฆโ€ฆ
      ๊ทธ ๋ชฉ์ ์„ ์ฒ˜์Œ ๋ช‡๊ฐœ์˜ row ๋ฅผ ๋นจ๋ฆฌ ๊ฐ€
    ์ ธ์˜ฌ ์ˆ˜                            OPT_GOAL. ํŒŒ๋ผ๋งคํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ตœ์ ํ™” ๋ฐฉ๋ฒ•์„
      ์žˆ๋„๋ก ์ตœ์ ํ™” ํ•˜๊ฑฐ๋‚˜ , ์ „์ฒด row ๋ฅผ ๋นจ      ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค
    ๋ฆฌ                               OPT_GOAL = -1 : ALL_ROWS
      ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋„๋ก ์ตœ์ ํ™” ํ•  ๊ฒƒ์ธ๊ฐ€๋ฅผ          OPT_GOAL = 0 : FIRST_ROWS
      ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค .

    . ์ด ๋ฐฉ๋ฒ•์€ ์งˆ์˜์˜ ๋Œ€์ƒ์ด ์ „์ฒด๊ฐ€ ์•„๋‹Œ
       ์ผ๋ถ€๋ถ„์˜ ๋ฐ์ดํ„ฐ ๋งŒ์„ ๊ฐ€์ ธ์˜ค๋Š” โ€œ first
    nโ€ ๊ณผ
       ํ•จ๊ป˜ ์‚ฌ์šฉ๋ ๋•Œ ๊ฐ€์žฅ ์ข‹์€ ์„ฑ๋Šฅ์„ ๋‚ผ ์ˆ˜
    ์žˆ๋‹ค ,




INFORMIX User                        80
Select ์˜ ์˜ˆ (8-2) โ€“ First N

         SYNTAX

                                 SELECT FIRST 10 name, salary
    SELECT FIRST n                 FROM emp
                                   ORDER BY salary DESC;

 O ์งˆ์˜์˜ ๊ฒฐ๊ณผ์ค‘ ์ฒ˜์Œ n ๊ฐœ์˜ row ๋ฅผ ๊ฐ€์ ธ์˜ด .




INFORMIX User                    81
SQL ์‹คํ–‰ ๊ฒฝ๋กœ ํ™•์ธ
  ๏ถ SQL ๊ตฌ๋ฌธ์ด optimizing ๋œ ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค .
      ๏ต Set explain on;
      ๏ต ํ™•์ธํ•˜๊ณ ์ž ํ•˜๋Š” ๊ตฌ๋ฌธ๋“ค . . .
      ๏ต Set explain off;
  ๏ถ UNIX ์˜ ๊ฒฝ์šฐ ํ˜„์žฌ ์ด ๊ตฌ๋ฌธ์„ ์‹คํ–‰ํ•œ application ์ด ์‹คํ–‰๋œ ๋””๋ ‰ํ† ๋ฆฌ
    ๋ฐ‘์— โ€œ sqexplain.outโ€ ์ด๋ผ๋Š” file ์— ๊ธฐ๋ก๋œ๋‹ค .
  ๏ถ NT ์˜ ๊ฒฝ์šฐ $INFORMIXDIR/sqexpln ๋””๋ ‰ํ† ๋ฆฌ ์•ˆ์— ํ˜„์žฌ ๊ตฌ๋ฌธ์„ ์‹คํ–‰
    ํ•œ โ€œ user ์ด๋ฆ„ .outโ€ ์ด๋ผ๋Š” file ์— ๊ธฐ๋ก๋œ๋‹ค .
     ์˜ˆ>
                QUERY:
                ------
                select * from customer

                Estimated Cost: 1
                Estimated # of Rows Returned: 28
                 1) anchoi.customer: SEQUENTIAL SCAN




INFORMIX User                                82
INSERT,UPDATE,DELETE
  ๏ถ ๋ฌธ๋ฒ•
      ๏ต Insert into ํ…Œ์ด๋ธ” ( ์ปฌ๋Ÿผ์ด๋ฆ„๋“ค ) values( ๊ฐ’๋“ค );
          ๏‚ง ํ…Œ์ด๋ธ”์— ๊ฐ’๋“ค์„ ์ž…๋ ฅ


      ๏ต Update ํ…Œ์ด๋ธ” set ์ปฌ๋Ÿผ ( ๋“ค ) = ๊ฐ’ where ์กฐ๊ฑด ;
          ๏‚ง ํ…Œ์ด๋ธ”์ค‘ ์กฐ๊ฑด์— ๋งŒ์กฑํ•˜๋Š” row ์˜ ์ปฌ๋Ÿผ์„ ๊ฐ’์œผ๋กœ ๊ฐฑ์‹ 


      ๏ต Delete   ํ…Œ์ด๋ธ” Where ์กฐ๊ฑด ;
          ๏‚ง ํ…Œ์ด๋ธ”์— ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” row ๋ฅผ ์‚ญ์ œ




INFORMIX User                      83
Concurrency Control
  ๏ถ DB ๋Š” ๋‹ค์ˆ˜์˜ ์‚ฌ์šฉ์ž์— ์˜ํ•ด ๊ณต์œ ๋จ .
  ๏ถ Read Concurrency - SELECT
      ๏ต 4 ๊ฐ€์ง€์˜ isolation level ๋กœ ์ ์šฉ .
          ๏‚ง   Dirty Read
          ๏‚ง   Committed Read
          ๏‚ง   Cursor Stability
          ๏‚ง   Repeatable Read
  ๏ถ Update Concurrency - INSERT, DELETE, UPDATE
      ๏ต Lock ์˜ ํฌ๊ธฐ๋กœ ์ ์šฉ
          ๏‚ง Type of Locking
                ๏ƒผ Exclusive
                ๏ƒผ Shared
                ๏ƒผ Update
          ๏‚ง Levels of locking
                ๏ƒผ Database, Table, Page, Row, Key




INFORMIX User                                  84
Concurrency Control - READ

  Dirty Read                            Committed Read
                     server process                              server process

                                                          Can lock be
                                                           acquired?


 ๊ธฐ์กด์˜ lock ์„ check ํ•˜์ง€ ์•Š๊ณ  ,             ์ž์‹ ์ด lock ์„ ๊ฑธ์ˆ˜ ์žˆ๋Š”์ง€ check ํ•˜๊ณ  ์ฝ์–ด๋‚ด๋ฆผ .
 Data ๋ฅผ ์ฝ์–ด๋‚ด๋ฆผ .                        ๊ทธ๋Ÿฌ๋‚˜ ์ž์‹ ์€ lock ์„ ๊ฑธ์ง€ ์•Š์Œ .
 ์ด๋•Œ์— ์ž์‹ ๋„ lock ์„ ๊ฑธ์ง€ ์•Š๊ณ  ์ฝ์Œ .

  Cursor Stability                      Repeatable Read
                     server process                              server process

                      Shared lock                            Locks put on
                     placed on row                        all rows examined


 Cursor ๊ฐ€ ํ˜„์žฌ fetch ํ•˜๊ณ  ์žˆ๋Š” row ์— ๋Œ€ํ•ด ์ž์‹ ์˜ process ๊ฐ€ ์งˆ์˜์—์„œ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋Š”
 Lock ์„ ๊ฑธ๊ณ  , ๋‹ค์Œ row ๋ฅผ fetch ํ• ๋•Œ์—   ๋ชจ๋“  row ์— ๋Œ€ํ•ด lock ์„ ๊ฑธ๊ณ  ์ž‘์—…ํ•จ .
 Lock ์„ ํ•ด์ œํ•จ .



INFORMIX User                           85
Concurrency Control - READ
  ๏ถ Isolation level ์˜ ์ ์šฉ
      ๏ต DB ์˜ ํ˜•ํƒœ ๋ณ„ default ๊ฐ€ ์กด์žฌ ํ•œ๋‹ค .
            ๏‚ง NO Logging DB : Dirty Read
            ๏‚ง Logging DB : Committed Read
            ๏‚ง ANSI DB : Repeatable Read
      ๏ต ๋”ฐ๋ผ์„œ default ์ด์™ธ๋กœ ๋ณ€๊ฒฝ์‹œ์—๋Š” ๋‹ค์Œ์˜ ๊ตฌ๋ฌธ์œผ๋กœ ์ ์šฉํ•˜์—ฌ์•ผ ํ•œ๋‹ค .
      ๏ต ํ•ด๋‹น ์„ธ์…˜์—๋งŒ ์ ์šฉ๋œ๋‹ค .
  ๏ถ ๊ตฌ๋ฌธ
      Set   Isolation   To   Dirty Read;
      Set   Isolation   To   Committed Read;
      Set   Isolation   To   Cursor Stability;
      Set   Isolation   To   Repeatable Read;




INFORMIX User                                86
Concurrency Control - UPDATE

  Database Level Locking               Table Level Locking
     database stores exclusive;             lock table customer in share mode;

                      stores                              customer




   ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๋Š” ๋ฐ์ดํ„ฐ                                               select    select
   ๋ฒ ์ด์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค
                                      update
                                      delete
                                      insert

                                                                       set isolation
                                                                       to dirty read
                                                          customer




                                  lock table customer in exclusive mode;


INFORMIX User                          87
Concurrency Control - Lock
   Mode
  ๏ถ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์— ์˜ํ•ด lock ์ด ๊ฑธ๋ ค ์žˆ๋Š” ์ž๋ฃŒ์— ์ ‘๊ทผํ• ๋•Œ์—๋Š” default ๋กœ
    ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  error ๋ฅผ return.
      Set Lock Mode to Wait ;
      Set Lock Mode to Not Wait ;
      Set Lock Mode to Wait 20 ;




                                         set lock mode to wait 20
                                           lock ์ด ํ•ด์ œ๋ ๋•Œ๊นŒ์ง€ 20 ์ดˆ ๋™์•ˆ ๊ธฐ๋‹ค๋ฆผ




                                             set lock mode to not wait
      set lock mode to wait
                                                lock ์ด ํ•ด์ œ๋ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ์ง€
        lock ์ด ํ•ด์ œ๋ ๋•Œ๊นŒ์ง€                           ์•Š๊ณ  ์ฆ‰์‹œ ์—๋Ÿฌ๋ฅผ ๋ฆฌํ„ดํ•จ
        ๋ฌดํ•œ์ • ๊ธฐ๋‹ค๋ฆผ




INFORMIX User                       88
Concurrency Control -
   Page/Row
  ๏ถ ํ…Œ์ด๋ธ” ์ƒ์„ฑ ์‹œ default lock mode ๋Š” page ๋‹จ์œ„
      create table row_lock_table (
         id        char(20),
         name      char(20)
      ) lock mode row;
      alter table page_lock_table lock mode (page);
                                               page
                                      modify



                                                      access

                                               page
                                      modify




INFORMIX User                        89
SPL
  ๏ถ Stored Procedure Language
  ๏ถ Stored procedure ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋จ .
  ๏ถ Stored procedure
      ๏ต DB ๋‚ด์— ์ €์žฅ๋œ SQL ๋ฌธ๋“ค๊ณผ , SPL ๋กœ ์ž‘์„ฑ๋œ ๊ตฌ๋ฌธ์˜ ๋ฌถ์Œ .
  ๏ถ ์ฃผ๋กœ business logic ์„ DB ์— ์ €์žฅํ•˜๋Š” ์šฉ๋„๋กœ ์‚ฌ์šฉ๋จ .
  ๏ถ SQL ๋ฌธ์€ ๋ฏธ๋ฆฌ parsing ๋˜๊ณ  optimize ๋œ ์ƒํƒœ๋กœ ํ•ด๋‹น DB ์˜ ์‹œ์Šคํ…œ
    ์นดํƒ€๋กœ๊ทธ ํ…Œ์ด๋ธ” (sysprocedures, sysprocbody, sysprocplan,
    sysprocauth) ์— ์ €์žฅ๋จ .




INFORMIX User                 90
SPL - ๊ฐ„๋‹จํ•œ ์˜ˆ์ œ
  ๏ถ ์ž‘์„ฑ
         Stored procedure ์˜ ์ด๋ฆ„   ๋งค๊ฐœ ๋ณ€์ˆ˜์˜ ์ด๋ฆ„   ๋งค๊ฐœ ๋ณ€์ˆ˜์˜ type


     create procedure test_proc(name varchar(10))
         insert into test_tab values(name);
     end procedure;

  ๏ถ ์‹คํ–‰         ๋งค๊ฐœ ๋ณ€์ˆ˜๋กœ ๋„˜์–ด ์˜จ ๊ฐ’์„ test_tab ์ด๋ผ๋Š”    table ์— insert ํ•˜๋ผ๋Š” ๊ตฌ๋ฌธ

    execute procedure test_proc(โ€œannaโ€);




INFORMIX User                        91
SPL - ์ฝ”๋“œ ๋‚ด์šฉ ๋ณด๊ธฐ
  ๏ถ DBSCHEMA utility
      dbschema -d <dbname> -f <procedure ์ด๋ฆ„ >   sql.sql
      dbschema -d <dbname> -f all   spl.sql

  ๏ถ System Catalog Table
      select data
       from sysprocedures d, sysprocbody b
       where datakey = โ€œTโ€
         and d.procname = โ€œprocedure ์ด๋ฆ„โ€
         and d.procid = b.procid




INFORMIX User                       92
SPL ์ƒ์„ฑ ๋ฐ ์‹คํ–‰ - ๊ธฐ๋ณธ๊ตฌ์กฐ
  ๏ถ ๊ธฐ๋ณธ๊ตฌ์กฐ

   Stored procedure ์˜ ์ด๋ฆ„       ๋งค๊ฐœ๋ณ€์ˆ˜                   ๋ฌธ์žฅ ๋ธ”๋Ÿญ (statement block)

      create procedure raise_prices (per_cent int)
         update stock -- increase by percentage
             set unit_price = unit_price + (unit_price * (per_cent / 100 ) );
      end procedure
                                      ์ฃผ์„ (comment)
      document
         โ€œusage : execute procedure raise_prices (xxx) โ€œ,
         โ€œxxx = percentage from 1 โ€“ 100 โ€œ
                                              document ์ ˆ์€ ์ƒ๋žต ๊ฐ€๋Šฅ
         with listing in โ€œwarn_fileโ€;
                                              ์ปดํŒŒ์ผ warning ์ €์žฅ


      execute procedure raise_prices (5);
      execute procedure db@servername:raise_prices(5)




INFORMIX User                            93
SPL ์ƒ์„ฑ ๋ฐ ์‹คํ–‰ - ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ๋ฆฌ
   ํ„ด๊ฐ’
      create procedure delete_order (p_order_num int default null )
         returning int, int;
                                                                    default ๊ฐ’
         define item_count int;
         select count(*) into item_count from items
                                                                     ๋งค๊ฐœ๋ณ€์ˆ˜
           where order_num=p_order_num;
         delete from items where order_num = p_order_num;
         delete from orders where order_num = p_order_num;๋‘ ๊ฐœ์˜ ์ •์ˆ˜ ๋ฐ˜ํ™˜ ์˜ˆ์ •
         returning p_order_num, item_count;
      end procedure;                                       ๋‘ ๊ฐœ์˜ ์ •์ˆ˜ ๋ณ€์ˆ˜ ๋ฐ˜ํ™˜

  ๏ถ DBACCESS
      execute procedure delete_order (1001) ;
  ๏ถ ESQL/C
      EXEC SQL execute procedure delete_order(:p_order_num)
        into :p_order_num, :p_item_count;




INFORMIX User                         94
SPL ์ƒ์„ฑ ๋ฐ ์‹คํ–‰ - ์ปค์„œ์‚ฌ์šฉ
  ๏ถ SPL                                         ESQL/C
                                              EXEC SQL declare geti cursor for
      create procedure get_items()               execute procedure get_items();
         returning integer, char(3), integer; EXEC SQL open geti
                                              while(1) {
         define p_stock_no integer;              EXEC SQL fetch geti
         define p_manu_code char(3);             into :p_num, :p_code, :p_qty;
         define p_quantity integer;              if (sqlca.sqlcode == 100)
                                              break;
         foreach                              }
           select stock_num, manu_code, quantity SQL close geti;
                                              EXEC
          into p_stock_no, p_manu_code, p_quantity
          from items
          return p_stock_no, p_manu_code, p_quantity with resume;
        end foreach;
      end procedure;

                                             ์ปค์„œ ์‚ฌ์šฉ


                                       foreach ๋ฌธ์•ˆ์—์„œ ๊ณ„์† ๋ฆฌํ„ด๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ํ•œ๋‹ค


INFORMIX User                           95
SPL ์ƒ์„ฑ ๋ฐ ์‹คํ–‰ - ํ˜ธ์ถœ / ์ œ๊ฑฐ
  ๏ถ SQL ๋ฌธ์—์„œ ํ˜ธ์ถœ
      select * from orders where order_num = get_biggest_order(114);
      insert into old_orders execute procedure get_orders(114);
  ๏ถ SPL ์—์„œ ํ˜ธ์ถœ
      create procedure give_disconnect (p_customer_num integer)
         define p_order_num integer;
         call get_biggest_order (p_customer_num ) returning p_order_num;
         :
      end procedure
  ๏ถ SPL ์ œ๊ฑฐ
      drop procedure get_biggest_order;




INFORMIX User                         96
SPL ๊ตฌ๋ฌธ - ๋ณ€์ˆ˜
  ๏ถ SPL ๋‚ด๋ถ€์—์„œ ๋ณ€์ˆ˜ ์„ ์–ธ
      ๏ต   define   p_order_date date;                    ์œ ํšจํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž๋ฃŒํ˜•
      ๏ต   define   p_customer_num like orders.customer_num;
      ๏ต   define   global global_bar integer default 1;
      ๏ต   define   blob_var references text;            ๋ช…์‹œํ•œ ํ…Œ์ด๋ธ” ์ปฌ๋Ÿผ์˜ ์ž๋ฃŒํ˜•


                       ์„ธ์…˜ ์•ˆ์—์„œ ์ „์—ญ๊ฐ’์„ ๊ฐ€์ง„๋‹ค             BLOB ์ž๋ฃŒํ˜•
  ๏ถ ๋ณ€์ˆ˜๊ฐ’ ํ• ๋‹น
      ๏ต   let   c = 10; let d = 5;
      ๏ต   let   p_order_date = today;
      ๏ต   let   a,b = 10,c+d;
      ๏ต   let   a,b = (select col_a, col_b from tab1 where col_c=10);
      ๏ต   let   a = proc_name();
      ๏ต   let   a = c || d;




INFORMIX User                              97
SPL ๊ตฌ๋ฌธ - ์กฐ๊ฑด์‹
  ๏ถ ๊ตฌ๋ฌธ
      IF ์กฐ๊ฑด์‹ THEN ๋ฌธ์žฅ 1
      ELIF ์กฐ๊ฑด์‹ THEN ๋ฌธ์žฅ 2
      ELSE ๋ฌธ์žฅ 3
      END IF
  ๏ถ ์กฐ๊ฑด์‹์˜ ์˜ˆ
      if exists (select order_num from orders where order_num = 1023) then
          :
      end if
      if p_total_price > all
         (select total_price from items where order_num = 1023) then
          :
      end if
      if p_customer_name matches โ€œA*โ€ then
          :
      end if



INFORMIX User                          98
SPL ๊ตฌ๋ฌธ - ๋ฃจํ”„
  ๏ถ FOREACH
      foreach select ship_charge into p_ship_charge from orders
          :
      end foreach;
  ๏ถ WHILE                                               โ€ป ๋ฃจํ”„ ์ œ์–ด
                                                        for i = 1 to 10
      while i < nbr_rows                                   if i = 5 then
        insert into test_tab values ( i );                      continue for;
                                                           elif i = 8 then
        let i = i + 1;
                                                                exit for;
      end while                                            end if
  ๏ถ FOR                                                 end for;

      for i = 1 to 10 step 2
          :
      end for
      for i in (1,5,10,15) โ€ฆ end for
      for i in (1 to 20 step 5, 20 to 1 step โ€“5, 1,2,3,4,5) โ€ฆ end for




INFORMIX User                                99
SPL ๊ตฌ๋ฌธ โ€“ dbinfo ์‚ฌ์šฉ
  ๏ถ serial ๊ฐ’ ๋ฐ˜ํ™˜
      define ser int;
      insert into orders (order_num, order_date, customer_num)
        values (0, โ€œ04/01/99โ€, 102);
      let ser = dbinfo(โ€œsqlca.sqlerrd1โ€);

  ๏ถ ์ฒ˜๋ฆฌ๋œ ํ–‰์˜ ์ˆ˜ ๋ฐ˜ํ™˜
      define num_rows int;
      delete from orders where customer_num = 104;
      let num_rows = dbinfo(โ€œsqlca.sqlerrd2โ€);




INFORMIX User                         100
SPL ๊ตฌ๋ฌธ - ๊ธฐํƒ€
  ๏ถ ์—…๋ฐ์ดํŠธ ์ปค์„œ
        define p_ship_date date;
                                               ์—…๋ฐ์ดํŠธ ์ปค์„œ์˜ ์ด๋ฆ„์„ ๋ช…์‹œํ•ด์•ผ ํ•œ๋‹ค
        begin work;
        foreach cur1 for
          select ship_date into p_ship_date from orders
             where order_date < today - 100
          if p_ship_date is not null then               ํ˜„์žฌ ์ปค์„œ๊ฐ€ ์˜คํ”ˆํ•˜๊ณ  ์žˆ๋Š” ํ–‰
              delete from orders where current of cur1;
          end if
        end foreach;
        commit work;            ์—…๋ฐ์ดํŠธ ๋œ ํ–‰์˜ lock ํ•ด์ œ

  ๏ถ OS ๋ช…๋ น์–ด ํ˜ธ์ถœ
        system โ€œecho โ€œโ€œDelete Operation Completedโ€โ€ | mail judyโ€ ;
        system โ€œmail โ€“s violation โ€ || usr1 || โ€œ โ€ || usr2 || โ€œ< vio.fileโ€;




INFORMIX User                             101
Trigger
  ๏ถ ํŠธ๋ฆฌ๊ฑฐ (Trigger) ๋Š” ์–ด๋– ํ•œ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„๋•Œ ์ž๋™์ ์œผ๋กœ SQL ๋ฌธ์„
    ์‹คํ–‰ํ•˜๋„๋ก ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฉ”์ปค๋‹ˆ์ฆ˜
  ๏ถ ํŠธ๋ฆฌ๊ฑฐ ์ด๋ฒคํŠธ (event) ๋Š” ํŠน์ • ํ…Œ์ด๋ธ”์— ๋Œ€ํ•ด INSERT, UPDATE,
    DELETE ์™€ ๊ฐ™์€ SQL ๋ฌธ
  ๏ถ ํŠธ๋ฆฌ๊ฑฐ ์•ก์…˜ (action) ์€ INSERT, UPDATE, DELETE ๋ฐ EXECUTE
    PROCEDURE ๋ฌธ


            Create                        Trigger
            Trigger                        name
                           Trigger


                Trigger                 Trigger
                 event                  action
                          correlation
                            name

INFORMIX User                  102
Trigger - Event / Action
  ๏ถ ํŠธ๋ฆฌ๊ฑฐ ์ด๋ฒคํŠธ (event)
      ๏ต   INSERT ON ํ…Œ์ด๋ธ”์ด๋ฆ„
      ๏ต   DELETE ON ํ…Œ์ด๋ธ”์ด๋ฆ„
                                                           event
      ๏ต   UPDATE ON ํ…Œ์ด๋ธ”์ด๋ฆ„                          update orders
      ๏ต   UPDATE OF ์ปฌ๋Ÿผ์ด๋ฆ„ ON ํ…Œ์ด๋ธ”์ด๋ฆ„                  set ship_instruct =
                                                   โ€œexpressโ€
  ๏ถ ํŠธ๋ฆฌ๊ฑฐ ์•ก์…˜ (action)                                where customer_num =
      ๏ต BEFORE ( SQL ๋ฌธ )                           106;
      ๏ต FOR EACH ROW ( SQL ๋ฌธ )
      ๏ต AFTER ( SQL ๋ฌธ )                          106
  ๏ถ ์˜ˆ์ œ                                           106
      create trigger test1 update on orders           action
         before (execute procedure check_permission()) execute
                                                       check_permission
         for each row (execute procedure log_chg())    update 1 row
         after (execute procedure log_total());        execute log_chg
                                                       update 1 row
                                                       execute log_chg
                                                       execute log_total


INFORMIX User                          103
Trigger - referencing
  ๏ถ ํŠธ๋ฆฌ๊ฑฐ ๋™์ž‘ ์ „ , ํ›„์˜ ๊ฐ’์„ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•˜์—ฌ correlation name ์„ ๋ถ€์—ฌ
  ๏ถ NEW, OLD ๋Š” ํ‚ค์›Œ๋“œ๋กœ DELETE ์ด๋ฒคํŠธ์—์„œ๋Š” NEW ๊ฐ€ ์‚ฌ์šฉ ๋  ์ˆ˜ ์—†
    ๊ณ  , INSERT ์ด๋ฒคํŠธ์—์„œ๋Š” OLD ๊ฐ€ ์‚ฌ์šฉ ๋  ์ˆ˜ ์—†๋‹ค .
  ๏ถ ์˜ˆ์ œ
      create trigger items_upd update of total_price on items
         referencing new as post old as pre
         for each row
           (update orders
               set order_price = order_price +
                                  post.total_price = pre.total_price
             where order_num = post.order_num );




INFORMIX User                           104
Trigger - when
  ๏ถ ํŠธ๋ฆฌ๊ฑฐ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒ๋˜์—ˆ์„๋•Œ WHEN ์ ˆ์— ์กฐ๊ฑด์ด ๋งŒ์กฑํ•˜๋Š”์ง€ ๋จผ์ € ๊ฒ€
    ์‚ฌํ•œ ํ›„ ์กฐ๊ฑด์ด ๋งž์„ ๋•Œ์— ํŠธ๋ฆฌ๊ฑฐ ์•ก์…˜์ด ๋™์ž‘ํ•œ๋‹ค .
  ๏ถ ์˜ˆ์ œ
      create trigger ins_cust_calls insert on cust_calls
         referencing new as post
         for each row when (post.call_code = โ€œBโ€)
           ( insert into warn_billing values (post.customer_num) );




INFORMIX User                           105
DB admin ์ž‘์—…
    ๏ƒผ   DB admin ์ž‘์—…์ด๋ž€
    ๏ƒผ   DB ์˜ ์ƒ์„ฑ
    ๏ƒผ   Table ์˜ ์ƒ์„ฑ
    ๏ƒผ   Table ์˜ ๋ถ„ํ• 
    ๏ƒผ   ๋ณด์•ˆ์˜ ์„ค์ •
    ๏ƒผ   ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ๋ณด์žฅ
    ๏ƒผ   ์ธ๋ฑ์Šค์˜ ์ƒ์„ฑ
    ๏ƒผ   ์งˆ์˜ ์ˆ˜ํ–‰์„ ์ตœ์ ํ™” ํ•ด์ฃผ๊ธฐ ์œ„ํ•œ ์ž‘์—…
    ๏ƒผ   Data Migration
DB admin ์ž‘์—…์ด๋ž€
  ๏ถ DB admin ์ž‘์—…์ด๋ž€ ?
      ๏ต   DB ์™€ ๊ด€๋ จ๋œ ์‚ฌํ•ญ์„ ๊ฒฐ์ •ํ•˜๊ณ  , ๋ณ€๊ฒฝํ•˜๋Š” ์ž‘์—…
      ๏ต   DB ๋‚˜ table ์„ ์ƒ์„ฑํ•˜๋Š” ์ž‘์—…
      ๏ต   ๋ณด์•ˆ์„ ์ ์šฉํ•˜๋Š” ์ž‘์—…
      ๏ต   ๋ฐ์ดํ„ฐ์˜ ๋ฌด๊ฒฐ์„ฑ์„ ๋ณด์žฅํ•˜๋Š” ์ž‘์—…
      ๏ต   ๋™์‹œ ์‚ฌ์šฉ์ž์— ๊ด€ํ•œ ์ œ์–ด
      ๏ต   ์ธ๋ฑ์Šค์™€ ๊ด€๋ จ๋œ ์ž‘์—…
      ๏ต   ์งˆ์˜ ์ˆ˜ํ–‰์„ ์ตœ์ ํ™”ํ•ด ์ฃผ๋Š” ์ž‘์—…
      ๏ต   Data migration




INFORMIX User                107
DB ์˜ ์ƒ์„ฑ
  ๏ถ DB ์˜ ์ƒ์„ฑ์‹œ ๋‹ค์Œ์˜ ์‚ฌํ•ญ์„ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค .
      ๏ต DB ๋ฅผ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์–ด๋Š ์œ„์น˜์— ๋‘˜ ๊ฒƒ์ธ๊ฐ€
          ๏‚ง DB ๊ฐ€ ์œ„์น˜ํ•  dbspace ๋ฅผ ์ง€์ •ํ•จ .
      ๏ต DB ๋Š” ์–ด๋–ค ํ˜•ํƒœ๋กœ ๋งŒ๋“ค๊ฒƒ์ธ๊ฐ€
          ๏‚ง DB ์— ๋Œ€ํ•œ logging ์ž‘์—…์„ ํ•  ๊ฒƒ์ธ๊ฐ€๋ฅผ ๊ฒฐ์ •

          create database <DB ์ด๋ฆ„ >
            in <DB ๋ฅผ ์ €์žฅํ•  dbspace ์ด๋ฆ„ > ๏ƒ default: rootdbs
            with <DB ์˜ logging ๋ชจ๋“œ >; ๏ƒ  default : no logging
      ๏ต ์˜ˆ>
          create   database   test_db   in dbspace1 with log;
          create   database   test_db   with log;
          create   database   test_db   in dbspace1 ;
          create   database   test_db   in dbspace1 with buffered log;




INFORMIX User                                   108
Table ์˜ ์ƒ์„ฑ
  ๏ถ Table ์ƒ์„ฑ์‹œ ๋‹ค์Œ์˜ ์‚ฌํ•ญ์„ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค .
      ๏ต   ์ปฌ๋Ÿผ์—๋Š” ์–ด๋–ค ์ž๋ฃŒํ˜•์„ ์‚ฌ์šฉํ•  ๊ฒƒ์ธ๊ฐ€
      ๏ต   ํ…Œ์ด๋ธ”์— ๋Œ€ํ•ด ๋ถ„ํ•  ํ•  ๊ฒƒ์ธ๊ฐ€
      ๏ต   ํ…Œ์ด๋ธ”์˜ ์œ„์น˜
      ๏ต   ์–ผ๋งˆ๋งŒํผ์˜ ๋””์Šคํฌ ๊ณต๊ฐ„์„ ํ• ๋‹นํ•  ๊ฒƒ์ธ๊ฐ€
      ๏ต   ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ lock ๋ชจ๋“œ

          create table < ํ…Œ์ด๋ธ”์ด๋ฆ„ >( ์ปฌ๋Ÿผ์ด๋ฆ„ ์ปฌ๋Ÿผ์ž๋ฃŒํ˜• )
            in <dbspace ์ด๋ฆ„ > or < ๋ถ„ํ•  ๋ฐฉ๋ฒ•๋ฐ ์œ„์น˜ >
            extent size < ์ดˆ๊ธฐ์— ํ• ๋‹นํ•  ์˜์—ญ ํฌ๊ธฐ K ๋‹จ์œ„ : default ๋Š” 8page>
            next size < ์ฆ๊ฐ€๋ถ„์— ํ• ๋‹นํ•  ์˜์—ญ ํฌ๊ธฐ K ๋‹จ์œ„ : default ๋Š” 8page>
            lock mode <row or page : default ๋Š” page>;




INFORMIX User                        109
Table ์˜ ๋ถ„ํ• 
  ๏ถ   ํ•œ ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ dbspace ์— ๋ถ„ํ• ํ•œ๋‹ค
  ๏ถ   ๋ณ‘๋ ฌ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ž…์ถœ๋ ฅ ํ•  ์ˆ˜ ์žˆ๋‹ค
  ๏ถ   ์ž…์ถœ๋ ฅ์˜ ๋ถ€ํ•˜๋ฅผ ๊ท ๋“ฑํ•˜๊ฒŒ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ๋‹ค
  ๏ถ   ๋ฐ์ดํ„ฐ์˜ ๊ฐ€์šฉ์„ฑ์„ ํ–ฅ์ƒ ์‹œํ‚จ๋‹ค
  ๏ถ   ๋‹ค์–‘ํ•œ ๊ธฐ์ค€์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„ํ• ํ•  ์ˆ˜ ์žˆ๋‹ค

                                            ์ž…์ถœ๋ ฅ ๋ถ€ํ•˜ ๋ถ„์‚ฐ



                  fragment1   scan thread

        table




                                                        ๋ณ‘๋ ฌ ์Šค
                  fragment2   scan thread




                                                           ์บ”
                  fragment3   scan thread



INFORMIX User                  110
Table ์˜ ๋ถ„ํ•  - round robin
                create table roundtable (
                          col_1 serial,
                          col_2 char(20),
                          :
                )
                fragment by round robin in dbspace1, dbspace2, dbspace3
                extent size 10000 next size 3000 ;



insert   into   roundtable(col_1,   col_2)   values   (0,   โ€˜aabbโ€™);
insert   into   roundtable(col_1,   col_2)   values   (0,   โ€˜aabbโ€™);
insert   into   roundtable(col_1,   col_2)   values   (0,   โ€˜aabbโ€™);
insert   into   roundtable(col_1,   col_2)   values   (0,   โ€˜aabbโ€™);
insert   into   roundtable(col_1,   col_2)   values   (0,   โ€˜aabbโ€™);
insert   into   roundtable(col_1,   col_2)   values   (0,   โ€˜aabbโ€™);




                                                            dbspace1   dbspace2   dbspace3


INFORMIX User                                          111
Table ์˜ ๋ถ„ํ•  - Expression
           create table exprtable (
                    col_1 serial,
                    col_2 char(20),
                    :
           )
           fragment by expression
                    col_1 <= 100 and col_1 >= 1 in dbspace1,
                    col_1 <= 200 and col_1 > 100 in dbspace2,
                    remainder in dbspace3 ;




 insert into exprtable(col_1) values (50);
 insert into exprtable(col_1) values (700);
 insert into exprtable(col_1) values (120);




                                                dbspace1   dbspace2   dbspace3


INFORMIX User                                 112
Table ์˜ ๋ถ„ํ•  - hash
           create table exprtable (
                    col_1 serial,
                    col_2 char(20),
                    :
           )
           fragment by expression
                    mod (col_1, 3) = 0 in dbspace1,
                    mod (col_1, 3) = 1 in dbspace2,
                    mod (col_1, 3) = 2 in dbspace3 ;




 insert into exprtable(col_1) values (17);
 insert into exprtable(col_1) values (34);
 insert into exprtable(col_1) values (66);




                                               dbspace1   dbspace2   dbspace3


INFORMIX User                                113
Table ์˜ ๋ถ„ํ•  - guidelines
  ๏ถ   ๊ฐ€๊ธ‰์  remainder ์ ˆ์„ ์“ฐ์ง€ ์•Š๋„๋ก expression ์„ ๋งŒ๋“ ๋‹ค
  ๏ถ   ์—ฌ๋Ÿฌ ๋””์Šคํฌ์— I/O ๋ฅผ ๋ถ„์‚ฐํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ณ ๋ คํ•œ๋‹ค
  ๏ถ   expression ์€ ๊ฐ€๋Šฅํ•œํ•œ ๋‹จ์ˆœํ•œ ํ˜•ํƒœ์—ฌ์•ผ ํ•œ๋‹ค
  ๏ถ   expression ์—์„œ ๊ฐ€์žฅ ์ œํ•œ์ ์ธ ์กฐ๊ฑด์ด ๋จผ์ € ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค
  ๏ถ   ๋ฐ์ดํ„ฐ์˜ ๋ณ€ํ™˜์ด ํ•„์š”ํ•œ expression ์€ ํ”ผํ•œ๋‹ค
  ๏ถ   ๋ฐ์ดํ„ฐ ๋กœ๋“œ ๋ฐ ์ „์ฒด ์กฐํšŒ๊ฐ€ ์ฃผ๋œ ๋ชฉ์ ์ด๋ผ๋ฉด round robin ์„ ์‚ฌ์šฉํ•œ๋‹ค
  ๏ถ   ์ธ๋ฑ์Šค ๋˜ํ•œ fragment ๊ตฌ๋ฌธ์— ์˜ํ•ด ๋ถ„ํ•  ๋  ์ˆ˜ ์žˆ์ง€๋งŒ , ๊ฐ€๊ธ‰์  ๋ณ„๋„์˜
      dbspace ์— fragment ๋˜์ง€ ์•Š์€ ํ˜•ํƒœ (detached index) ๋กœ ์ƒ์„ฑํ•œ๋‹ค
          create index idx_roundtable on roundtable(col_1) in dbspace4;
  ๏ถ ํ…Œ์ด๋ธ” ๋ถ„ํ• ์— ์˜ํ•œ ์ด๋“์ด ๊ทธ๋‹ค์ง€ ๋งŽ์ง€ ์•Š๋‹ค๋ฉด ๋ถ„ํ• ํ•˜์ง€ ์•Š๋Š”๋‹ค




INFORMIX User                             114
๋ณด์•ˆ์˜ ์„ค์ •
  ๏ถ ๋ณด์•ˆ์˜ ์ ์šฉ ๋ฐฉ๋ฒ•
      ๏ต ๊ถŒํ•œ ์ œํ•œ
      ๏ต View ์˜ ์‚ฌ์šฉ
      ๏ต Role ์˜ ์‚ฌ์šฉ


  ๏ถ ๊ถŒํ•œ์˜ ์ข…๋ฅ˜
      ๏ต DB level : DBA,RESOURCE,CONNECT
      ๏ต Table,Column level : SELECT,INSERT,UPDATE,DELETE,ALTERโ€ฆ




INFORMIX User                      115
๋ณด์•ˆ์˜ ์„ค์ • - ๊ถŒํ•œ ์ œํ•œ
  ๏ถ ๊ถŒํ•œ ์„ค์ • ๋ฐฉ๋ฒ•
      ๏ต GRANT ๊ถŒํ•œ์ด๋ฆ„ <on ํ…Œ์ด๋ธ”์ด๋ฆ„ ( ์ปฌ๋Ÿผ์ด๋ฆ„ )> to user ์ด๋ฆ„ ;
      ๏ต REVOKE ๊ถŒํ•œ์ด๋ฆ„ <on ํ…Œ์ด๋ธ”์ด๋ฆ„ > from user ์ด๋ฆ„ ;
      ๏ต Table ์˜ ๊ฒฝ์šฐ ์ผ๋‹จ ๋ชจ๋“  ๊ถŒํ•œ์„ ๋บ๊ณ  ํ•˜๋‚˜ํ•˜๋‚˜ ์„ค์ •ํ•œ๋‹ค .


  ๏ถ ์˜ˆ
          GRANT DBA to user1;
          GRANT CONNECT to user2;
          REVOKE ALL ON tab1 from PUBLIC;
          GRANT SELECT ON tab1 to user2;
          GRANT DELETE,UPDATE,INSERT on tab1 to user1;
          GRANT SELECT(col1,col2) on tab2 to user2;




INFORMIX User                          116
๋ณด์•ˆ์˜ ์„ค์ • - view ์˜ ์‚ฌ์šฉ
  ๏ถ View ๋Š” ํ…Œ์ด๋ธ”์˜ ์ผ๋ถ€ ํ˜น์€ ๊ณ„์‚ฐ๋œ ๊ฐ’๋“ฑ์— ์„ค์ •๋  ์ˆ˜ ์žˆ๋‹ค .
  ๏ถ ์˜ˆ
          create view cust_seoul as
          select * from customer where city=โ€˜ ์„œ์šธโ€™ ;

          create view big_order_won as
          select total_price*1200 from orders where total_price > 10000;

          create view detail_info_cust as
          select company, order_num,total_price
              from customer,orders
              where customer.customer_num=orders.customer_num;




INFORMIX User                             117
๋ณด์•ˆ์˜ ์„ค์ • - role ์˜ ์‚ฌ์šฉ
  ๏ถ Role ์ด๋ž€ , ์‚ฌ์šฉ์ž์˜ ๊ทธ๋ฃน ๊ถŒํ•œ์˜ ์ œํ•œ์ด , ๊ฐœ์ธ๋ณ„๋กœ๊ฐ€ ์•„๋‹Œ ๊ทธ๋ฃน๋ณ„๋กœ
    ํ•ด์•ผํ•  ํ•„์š”๊ฐ€ ์žˆ์„๋•Œ์— ์“ฐ์ž„ .
  ๏ถ ๊ฐœ์ธ์€ ๊ฐœ์ธ์˜ ๊ถŒํ•œ์œผ๋กœ์˜ ์ž‘์—…๋„ ๊ฐ€๋Šฅํ•˜๊ณ  , role ์˜ ์ผ์›์œผ๋กœ์„œ์˜ ์ž‘์—…
    ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค
  ๏ถ ์˜ˆ
          Create role marketing;
          Create role sales;
          Grant marketing to user1,user2;
          Grant sales to user3,user4;


  ๏ถ ๋งŒ์ผ user1 ์ด marketing role ๋กœ์„œ ์ž‘์—…ํ•˜๋ ค๋ฉด ๋‹ค์Œ ๊ตฌ๋ฌธ์„ ์‹คํ–‰ํ•ด์•ผ
    ํ•จ.
          Set role marketing;




INFORMIX User                               118
๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์˜ ๋ณด์žฅ (1)
  ๏ถ ๋ฐ์ดํ„ฐ๊ฐ’์— ๋Œ€ํ•œ ์†์„ฑ์„ ์ œํ•œ์ž (constraint) ๋ฅผ ํ†ตํ•ด ์ ์šฉ .
  ๏ถ ์ข…๋ฅ˜
      ๏ต   Primary Key
      ๏ต   Foreign key
      ๏ต   CHECK
      ๏ต   UNIQUE
      ๏ต   NOT NULL




INFORMIX User             119
๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์˜ ๋ณด์žฅ (2)
  ๏ถ Constraint ์˜ ์ด๋ฆ„์€ ์ž๋™์ ์œผ๋กœ ๋ถ€์—ฌ ๋  ์ˆ˜ ์žˆ์ง€๋งŒ , ์ง์ ‘ ๋ช…์‹œํ•  ์ˆ˜๋„
    ์žˆ๋‹ค
          CREATE TABLE orders (
            order_num integer UNIQUE CONSTRAINT order_num_uq,
            order_date date NOT NULL CONSTRAINT order_num_nn DEFAULT TODAY);
          ALTER TABLE orders
            MODIFY order_num integer NOT NULL CONSTRAINT order_num_nn;
  ๏ถ Constraint ๋Š” ์ปฌ๋Ÿผ ๋‹จ์œ„ ๋˜๋Š” ํ…Œ์ด๋ธ” ๋‹จ์œ„๋กœ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ , ๋‹ค๋ฅธ
    ์ปฌ๋Ÿผ์— ๋Œ€ํ•œ ์ •์˜๊ฐ€ ํฌํ•จ๋  ๊ฒฝ์šฐ๋Š” ํ…Œ์ด๋ธ” ๋‹จ์œ„๋กœ ์ •์˜ํ•ด์•ผ๋งŒ ํ•œ๋‹ค
          -- ํ…Œ์ด๋ธ” ๋‹จ์œ„
          ALTER TABLE items ADD CONSTRAINT CHECK (quantity >= 1);
          -- ์ปฌ๋Ÿผ ๋‹จ์œ„
          ALTER TABLE items MODIFY quantity smallint CHECK (quantity >= 1);
          -- ์ปฌ๋Ÿผ ๋‹จ์œ„๋Š” ๋‹ค๋ฅธ ์ปฌ๋Ÿผ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค .
          ALTER TABLE orders MODIFY paid_date date CHECK (paid_date >
            ship_date);
          #
          #676: Invalid check constraint column.



INFORMIX User                            120
๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์˜ ๋ณด์žฅ (3)
  ๏ถ Referential Constraint ์˜ ์ข…๋ฅ˜
      ๏ต Cyclic referential constraints
                                          parent   child

      ๏ต Self referential constraints      parent

      ๏ต Multiple path constraints
                                          parent   child

                                                   child


  ๏ถ Primary / Foreign Key ๊ทœ์น™
      ๏ต Primary key ๋Š” ์ž๋™์ ์œผ๋กœ unique index ์—ญํ• ์„ ํ•˜๊ฒŒ ๋œ๋‹ค
      ๏ต Foreign key ์ปฌ๋Ÿผ๊ฐ’์€ Primary key ์— ๊ฐ’์ด ์žˆ์–ด์•ผ ์ž…๋ ฅ , ์ˆ˜์ • ํ•  ์ˆ˜ ์žˆ๋‹ค
      ๏ต Foreign Key ๊ฐ’์ด ์žˆ๋Š” ์ƒํƒœ์—์„œ Primary Key ๊ฐ’์„ ์‚ญ์ œ , ์ˆ˜์ • ํ•  ์ˆ˜ ์—†๋‹ค




INFORMIX User                            121
๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์˜ ๋ณด์žฅ (4)
  ๏ถ Cyclic referential constraints
          create table customer (
                                                       customer         orders
            customer_num serial,
                                                        customer_num      order_num
            fname char(20),
                                                            fname       customer_num
            primary key (customer_num) constraint pk_cnum );
          create table orders (
            order_num serial,
            customer_num integer,
            foreign key (customer_num) references customer constraint fk_cnum);
  ๏ถ Self referential constrains
                                                      emp
          create table emp (
                                                          enum
            enum serial,
                                                          mnum
            mnum integer,
            primary key (enum) constraint pk_enum,
            foreign key (mnum) references emp(enum) constraint fk_enum) ;




INFORMIX User                             122
๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์˜ ๋ณด์žฅ (5)
  ๏ถ Multiple path referential constraints
          create table stock (
                                                                 stock
            stock_num smallint,
                                                                   stock_num
            manu_code char(3),
                                                                  manu_code
            primary key (stock_num, manu_code) constraint pk_stock);
          create table items (                          items             catalog
            item_num smallint,                             item_num        catalog_num
            stock_num smallint,                           stock_num         stock_num
            manu_code char(3),                            manu_code        manu_code
            foreign key (stock_num, manu_code) references stock constraints
            fk1_stock);
          create table catalog (
            catalog_num serial,
            stock_num smallint,
            manu_code char(3),
            foreign key (stock_num, manu_code) references stock constraints
            fk2_stock);




INFORMIX User                               123
์ธ๋ฑ์Šค์˜ ์ƒ์„ฑ
  ๏ถ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•ด ๋น ๋ฅธ ์ ‘๊ทผ์„ ์œ„ํ•ด ์‚ฌ์šฉ
  ๏ถ OLTP ์—…๋ฌด์˜ ๊ฒฝ์šฐ ์ธ๋ฑ์Šค์˜ ์ƒ์„ฑ์€ ๋งค์šฐ ์ค‘์š”ํ•จ .
  ๏ถ ๋‹ค์Œ์— ํ•ด๋‹น๋˜๋Š” ์ปฌ๋Ÿผ์— ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Œ .
      ๏ต ์กฐ์ธ์˜ ๋Œ€์ƒ์ด ๋˜๋Š” ์ปฌ๋Ÿผ
      ๏ต ์กฐ๊ฑด ๋น„๊ต์˜ ๋Œ€์ƒ์ด ๋˜๋Š” ์ปฌ๋Ÿผ
      ๏ต ์ •๋ ฌ์˜ ๊ธฐ์ค€์ด ๋˜๋Š” ์ปฌ๋Ÿผ


      Create index < ์ธ๋ฑ์Šค์ด๋ฆ„ > on ํ…Œ์ด๋ธ”์ด๋ฆ„ ( ์ปฌ๋Ÿผ์ด๋ฆ„ )
              In < ์ธ๋ฑ์Šค๋ฅผ ์ €์žฅํ•  ์œ„์น˜ >;


  ๏ถ ์˜ˆ
          create unique index idx_cust on customer(customer_num) in dbspace1;
          create index idx_stock on stock (stock_num, manu_code) ;




INFORMIX User                            124
์งˆ์˜ ์ˆ˜ํ–‰์„ ์ตœ์ ํ™” ํ•ด์ฃผ๊ธฐ ์œ„ํ•œ ์ž‘
   ์—…
  ๏ถ ์„œ๋ฒ„๋กœ ์ „๋‹ฌ๋œ ๋ชจ๋“  ์งˆ์˜๋Š” ๋‹ค์Œ์˜ ๊ณผ์ •์„ ๊ฑฐ์นจ



          Parsing       Optimizing       Executing

    ์œ ํšจ์„ฑ , ๋ฌธ๋ฒ• ๋“ฑ์„ ์ฒดํฌ    ์ตœ์ ํ™”๋œ ์งˆ์˜ ์ˆ˜ํ–‰์˜           ์‹คํ–‰
                        ๊ฒฝ๋กœ๋ฅผ ๊ฒฐ์ •

  ๏ถ ์งˆ์˜ ์ˆ˜ํ–‰ ๊ฒฝ๋กœ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š”๋ฐ ์ฐธ์กฐํ•˜๋Š” ๋ฐ์ดํ„ฐ๋Š” system catalog ์˜ ์ •
    ๋ณด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•จ .
  ๏ถ ์งˆ์˜ ์ˆ˜ํ–‰ ๊ฒฝ๋กœ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ์š”์ธ
      ๏ต ์ธ๋ฑ์Šค ์œ ๋ฌด , ๋ฐ์ดํ„ฐ์˜ ์–‘ , ๋ฐ์ดํ„ฐ ๋ถ„ํฌ๋„ ๋“ฑ ..
  ๏ถ ๋”ฐ๋ผ์„œ , ํ˜„์žฌ์ƒํ™ฉ์˜ ๋ฐ์ดํ„ฐ์— ๊ด€ํ•œ ์ •ํ™•ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜์—ฌ์•ผ , ์ตœ์ ์˜
    ์งˆ์˜๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Œ .




INFORMIX User                125
์งˆ์˜ ์ˆ˜ํ–‰์„ ์ตœ์ ํ™” ํ•ด์ฃผ๊ธฐ ์œ„ํ•œ ์ž‘
   ์—…
  ๏ถ Update statistics
      ๏ต System catalog ์˜ ๋ฐ์ดํ„ฐ ๊ด€๋ จ ํ†ต๊ณ„์ž๋ฃŒ๋ฅผ ๊ฐฑ์‹ 
      ๏ต ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ๋ถ„ํฌ๋„๋ฅผ ๋งŒ๋“ค์–ด์คŒ .
  ๏ถ Mode ์˜ ์ข…๋ฅ˜
      ๏ต Low
          ๏‚ง system catalog ์˜ ํ†ต๊ณ„์ •๋ณด๋งŒ ๊ฐฑ์‹ 
      ๏ต Medium
          ๏‚ง ํ†ต๊ณ„์ •๋ณด ๊ฐฑ์‹ ๊ณผ ํ•จ๊ป˜ , ๋ฐ์ดํ„ฐ ๋ถ„ํฌ๋„๋ฅผ ๋งŒ๋“ฌ . ์ด๋•Œ , ํ‘œ๋ณธ ์ถ”์ถœ์— ์˜ํ•ด ๋ถ„ํฌ๋„๋ฅผ
            ๋งŒ๋“ฌ .
      ๏ต High
          ๏‚ง medium ๊ณผ ๊ฐ™์œผ๋‚˜ , ํ‘œ๋ณธ์ถ”์ถœ์ด ์•„๋‹Œ ์ „์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ๋ถ„ํฌ๋„๋ฅผ ๋งŒ๋“ฌ .




INFORMIX User                      126
์งˆ์˜ ์ˆ˜ํ–‰์„ ์ตœ์ ํ™” ํ•ด์ฃผ๊ธฐ ์œ„ํ•œ ์ž‘
   ์—…
  ๏ถ ์–ธ์ œ ์ˆ˜ํ–‰ํ•˜์—ฌ์•ผ ํ•˜๋‚˜ ?
      ๏ต ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์‹œ์—๋Š” ๋ฐ˜๋“œ์‹œ ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค .
           ๏‚ง Bulk Data loading ํ›„ , bulk update ๋“ฑ ..
      ๏ต ์‹œ์Šคํ…œ ์œ ํœด ์‹œ๊ฐ„๋Œ€์— ์ •๊ธฐ์ ์œผ๋กœ ํ•ด์ฃผ์–ด๋„ ์ข‹๋‹ค .


  ๏ถ ๊ตฌ๋ฌธ
      ๏ต   Update   statistics   [low|medium|high]     ;
      ๏ต   Update   statistics   [low|medium|high]     for table;
      ๏ต   Update   statistics   [low|medium|high]     for table ํ…Œ์ด๋ธ”์ด๋ฆ„ ;
      ๏ต   Update   statistics   [low|medium|high]     for table ํ…Œ์ด๋ธ”์ด๋ฆ„ ( ์ปฌ๋Ÿผ์ด๋ฆ„ );




INFORMIX User                              127
Data Migration
  ๏ถ DB ํ˜น์€ table ์„ file ๋กœ ๋‚ด๋ฆด ํ•„์š”๊ฐ€ ์žˆ์„๋•Œ ์‚ฌ์šฉ .
  ๏ถ Data Backup ์˜ ํ•˜๋‚˜์˜ ๋ฐฉ๋ฒ•์œผ๋กœ๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  ๏ถ ์„œ๋กœ ๋‹ค๋ฅธ ๊ธฐ์ข…์˜ machine ์— ์žˆ๋Š” ์„œ๋ฒ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์˜ฎ๊ธฐ๊ณ ์ž ํ• ๋•Œ ์œ 
    ์šฉ.
  ๏ถ Data ๋ฅผ ๊ธฐ์กด์˜ table ์— append ํ• ๋•Œ์— ์œ ์šฉ .
  ๏ถ ์‚ฌ์šฉ ์šฉ๋„๋‚˜ , ์ œ๊ณต๋˜๋Š” ๊ธฐ๋Šฅ์— ๋”ฐ๋ผ ๋‹ค์–‘ํ•œ tool, ๊ตฌ๋ฌธ์„ ์ œ๊ณต .




INFORMIX User          128
Data Migration - Unloading
  ๏ถ ์ข…๋ฅ˜
      ๏ต UNLOAD ๊ตฌ๋ฌธ
          ๏‚ง SQL ๊ตฌ๋ฌธ์ด๋ฏ€๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฝ๊ณ  , ์›ํ•˜๋Š” ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋‚ด๋ ค ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค .
                ๏ƒผ UNLOAD to โ€˜ ํŒŒ์ผ์ด๋ฆ„โ€™ select * from customer;
      ๏ต ONUNLOAD
          ๏‚ง DB ๋‹ด์œ„ , table ๋‹จ์œ„ ๊ฐ€๋Šฅ
          ๏‚ง Binary ํ˜•ํƒœ๋กœ ๋ฐ›์Œ .
                ๏ƒผ onunload โ€“t /dev/rmt0 DB ์ด๋ฆ„
      ๏ต DBEXPORT
          ๏‚ง DB ๋‹จ์œ„์˜ ์ž‘์—… ์ง€์› : DB ๋‹จ์œ„์ž‘์—…์— ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ
          ๏‚ง Ascii ํ˜•ํƒœ๋กœ ๋ฐ›์Œ .
                ๏ƒผ dbexport DB ์ด๋ฆ„
      ๏ต ONPLOAD
          ๏‚ง HPL(High Performance Loader) ์„ ๊ตฌ์„ฑํ•˜๋Š” process
          ๏‚ง ๋งŽ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ๊ฐ€์žฅ ์ข‹์€ ์„ฑ๋Šฅ์„ ๋ƒ„ .




INFORMIX User                                   129
Data Migration - Loading
  ๏ถ ์ข…๋ฅ˜
      ๏ต LOAD ๊ตฌ๋ฌธ
          ๏‚ง SQL ๊ตฌ๋ฌธ์ด๋ฏ€๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฝ๊ณ  , ์›ํ•˜๋Š” ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋‚ด๋ ค ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค .
                ๏ƒผ LOAD from โ€˜ ํŒŒ์ผ์ด๋ฆ„โ€™ insert into customer;
      ๏ต ONLOAD
          ๏‚ง DB ๋‹ด์œ„ , table ๋‹จ์œ„ ๊ฐ€๋Šฅ
          ๏‚ง Binary ํ˜•ํƒœ๋กœ ๋ฐ›์Œ .
                ๏ƒผ onload โ€“t /dev/rmt0 DB ์ด๋ฆ„
      ๏ต DBIMPORT
          ๏‚ง DB ๋‹จ์œ„์˜ ์ž‘์—… ์ง€์› : DB ๋‹จ์œ„์ž‘์—…์— ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ
          ๏‚ง Ascii ํ˜•ํƒœ๋กœ ๋ฐ›์Œ .
                ๏ƒผ dbimport DB ์ด๋ฆ„
      ๏ต ONPLOAD
          ๏‚ง HPL(High Performance Loader) ์„ ๊ตฌ์„ฑํ•˜๋Š” process
          ๏‚ง ๋งŽ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ๊ฐ€์žฅ ์ข‹์€ ์„ฑ๋Šฅ์„ ๋ƒ„ .




INFORMIX User                                 130
ESQL/C ๋ฅผ ์ด์šฉํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
   ๏ƒผ   ESQL/C ๋ž€
   ๏ƒผ   ESQL/C ์˜ ์‚ฌ์šฉ
   ๏ƒผ   ESQL/C ํ”„๋กœ๊ทธ๋žจ ์ž‘์„ฑ ๊ทœ์น™
   ๏ƒผ   ESQL/C ํ”„๋กœ๊ทธ๋žจ compile
   ๏ƒผ   ESQL/C ํ”„๋กœ๊ทธ๋žจ ์ž‘์„ฑ ์˜ˆ์ œ
   ๏ƒผ   ํ˜ธ์ŠคํŠธ๋ณ€์ˆ˜ (Host Variables)
   ๏ƒผ   ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ
   ๏ƒผ   SQLCA ๊ตฌ์กฐ์ฒด
   ๏ƒผ   EXCEPTION ํ…Œ์ŠคํŠธ
   ๏ƒผ   GET DIAGNOSTICS ์‚ฌ์šฉ
   ๏ƒผ   prepare ๋ฅผ ์‚ฌ์šฉํ•œ ๋‹จ์ˆœ DML ์ฒ˜๋ฆฌ
   ๏ƒผ   Indicator ์‚ฌ์šฉ
   ๏ƒผ   ์ปค์„œ (Cursors)
ESQL/C ๋ž€
  ๏ถ C ํ”„๋กœ๊ทธ๋žจ ๋‚ด์— sql ๊ตฌ๋ฌธ์„ ๋ฐ”๋กœ ๋„ฃ์–ด ๊ทธ ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ํ”„๋กœ๊ทธ๋žจ์—์„œ
    ๋‹ค์–‘ํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ œ๊ณต๋˜๋Š” ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ tool
  ๏ถ ESQL/C ์˜ ์ฃผ๋œ component ๋Š” preprocessor ๋กœ์„œ ESQL/C code
    ๋ฅผ C code ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ C compiler ์—๊ฒŒ ๋„˜๊ฒจ์ค€๋‹ค .




INFORMIX User               132
ESQL/C ์˜ ์‚ฌ์šฉ
  ๏ถ ๋‹ค์Œ์˜ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•ด์•ผ ํ•œ๋‹ค .
      ๏ต INFORMIXDIR
          ๏‚ง ESQL/C ์„ค์น˜ ๋””๋ ‰ํ† ๋ฆฌ
      ๏ต PATH
          ๏‚ง ESQL/C ์‹คํ–‰ ํŒŒ์ผ์˜ ์œ„์น˜๋ฅผ ์ถ”๊ฐ€
      ๏ต LD_LIBRARY_PATH
          ๏‚ง Library ์˜ ์œ„์น˜
      ๏ต INFORMIXC
          ๏‚ง CC ์ปดํŒŒ์ผ๋Ÿฌ ์™ธ์˜ ๋‹ค๋ฅธ ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•  ๋•Œ


  ๏ถ ์˜ˆ
      export    INFORMIXDIR=/usr/informix
      export    PATH=$PATH:$INFORMIXDIR/bin
      export    LD_LIBRARY_PATH=$INFORMIXDIR/lib:$INFORMIXDIR/lib/esql
      export    INFORMIXC=gcc




INFORMIX User                          133
ESQL/C ํ”„๋กœ๊ทธ๋žจ ์ž‘์„ฑ ๊ทœ์น™
  ๏ถ ESQL/C preprocessor ๊ฐ€ ๋‹ค๋ฅธ C code ์™€ ๊ตฌ๋ณ„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด
    SQL ์€ โ€œ $โ€ ํ˜น์€ โ€œ exec sqlโ€ ์œผ๋กœ ์‹œ์ž‘
  ๏ถ SQL ๊ตฌ๋ฌธ์˜ ๋์—๋Š” โ€œ ;โ€ ๋ฅผ ๋ถ™์ž„ .
  ๏ถ SQL ๊ตฌ๋ฌธ ์•ˆ์˜ ๋ณ€์ˆ˜ (host ๋ณ€์ˆ˜๋ผ ๋ถ€๋ฆ„ ) ๋Š” ๋ณ€์ˆ˜ ์ด๋ฆ„ ์•ž์— โ€œ :โ€ ๋ฅผ ๋ถ™
    ์ž„.
  ๏ถ ์ฃผ์„์€ ํ‘œ์ค€ C ์˜ ์ฃผ์„์ธ โ€œ /* */โ€ ์‚ฌ์šฉ




INFORMIX User              134
ESQL/C ํ”„๋กœ๊ทธ๋žจ compile (1)
  ๏ถ Esql ์˜ option ์€ ๋‹ค์–‘ํ•˜๋ฏ€๋กœ ๊ฐ ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ๋‹ค์–‘ํ•˜๊ฒŒ ์‚ฌ์šฉ
      ๏ต esql [-e] [preprocessor ์˜ต์…˜ ] [cc ๋งค๊ฐœ๋ณ€์ˆ˜ ] [-o ์‹คํ–‰ํŒŒ์ผ ] ์†Œ์Šค .ec
        [ ๋งํฌ์˜ต์…˜ ]
  ๏ถ ์˜ˆ>
      ๏ต ESQL/C ๋กœ ์ž‘์„ฑ๋œ customer.ec file ์„ customer ๋ผ๋Š” ์ด๋ฆ„์˜ ์‹คํ–‰ํŒŒ์ผ๋กœ
        ๋งŒ๋“ค๊ณ ์ž ํ•œ๋‹ค๋ฉด
          esql -o customer customer.ec
         customer.ec     customer. c          customer. o              customer


                esql preprocess        c compile        -shared ์˜ต์…˜์ด default ๊ฐ’

                                              standard library     esql/c library

                                                         -static ์˜ต์…˜
          esql customer.ec file.c -l mylib -o customer -static
         customer.ec      customer. c        customer. o            customer


                esql preprocess        c compile

                              file.c               file. o          mylib



INFORMIX User                               135
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide
Informix user guide

Weitere รคhnliche Inhalte

Was ist angesagt?

๋งŒํ™”๊ฒฝ ์•ฑ ๊ฐœ๋ฐœ๊ธฐ(iOS)
๋งŒํ™”๊ฒฝ ์•ฑ ๊ฐœ๋ฐœ๊ธฐ(iOS)๋งŒํ™”๊ฒฝ ์•ฑ ๊ฐœ๋ฐœ๊ธฐ(iOS)
๋งŒํ™”๊ฒฝ ์•ฑ ๊ฐœ๋ฐœ๊ธฐ(iOS)ssuserb942d2
ย 
Reactive Programming In Java Using: Project Reactor
Reactive Programming In Java Using: Project ReactorReactive Programming In Java Using: Project Reactor
Reactive Programming In Java Using: Project ReactorKnoldus Inc.
ย 
C++20์—์„œ ๋ฆฌํ”Œ๋ ‰์…˜ ๊ธฐ๋Šฅ ๊ตฌํ˜„
C++20์—์„œ ๋ฆฌํ”Œ๋ ‰์…˜ ๊ธฐ๋Šฅ ๊ตฌํ˜„C++20์—์„œ ๋ฆฌํ”Œ๋ ‰์…˜ ๊ธฐ๋Šฅ ๊ตฌํ˜„
C++20์—์„œ ๋ฆฌํ”Œ๋ ‰์…˜ ๊ธฐ๋Šฅ ๊ตฌํ˜„Bongseok Cho
ย 
DB ์„ค๊ณ„ ๊ณผ์ œ
DB ์„ค๊ณ„ ๊ณผ์ œDB ์„ค๊ณ„ ๊ณผ์ œ
DB ์„ค๊ณ„ ๊ณผ์ œDong-Jin Park
ย 
Software engineer๊ฐ€ ๋˜๊ธฐ ์œ„ํ•œ ์—ฌ์ •
Software engineer๊ฐ€ ๋˜๊ธฐ ์œ„ํ•œ ์—ฌ์ •Software engineer๊ฐ€ ๋˜๊ธฐ ์œ„ํ•œ ์—ฌ์ •
Software engineer๊ฐ€ ๋˜๊ธฐ ์œ„ํ•œ ์—ฌ์ •Aree Oh
ย 
๋„๋ฉ”์ธ๊ตฌํ˜„ KSUG 20151128
๋„๋ฉ”์ธ๊ตฌํ˜„ KSUG 20151128๋„๋ฉ”์ธ๊ตฌํ˜„ KSUG 20151128
๋„๋ฉ”์ธ๊ตฌํ˜„ KSUG 20151128beom kyun choi
ย 
์˜คํ”ˆ์†Œ์Šค๋กœ ๋งŒ๋“œ๋Š” DB ๋ชจ๋‹ˆํ„ฐ๋ง ์‹œ์Šคํ…œ (w/graphite+grafana)
์˜คํ”ˆ์†Œ์Šค๋กœ ๋งŒ๋“œ๋Š” DB ๋ชจ๋‹ˆํ„ฐ๋ง ์‹œ์Šคํ…œ (w/graphite+grafana)์˜คํ”ˆ์†Œ์Šค๋กœ ๋งŒ๋“œ๋Š” DB ๋ชจ๋‹ˆํ„ฐ๋ง ์‹œ์Šคํ…œ (w/graphite+grafana)
์˜คํ”ˆ์†Œ์Šค๋กœ ๋งŒ๋“œ๋Š” DB ๋ชจ๋‹ˆํ„ฐ๋ง ์‹œ์Šคํ…œ (w/graphite+grafana)I Goo Lee
ย 
Batching and Java EE (jdk.io)
Batching and Java EE (jdk.io)Batching and Java EE (jdk.io)
Batching and Java EE (jdk.io)Ryan Cuprak
ย 
Reactive programming
Reactive programmingReactive programming
Reactive programmingSUDIP GHOSH
ย 
IBM JVM ์†Œ๊ฐœ - Oracle JVM ๊ณผ ๋น„๊ต
IBM JVM ์†Œ๊ฐœ - Oracle JVM ๊ณผ ๋น„๊ตIBM JVM ์†Œ๊ฐœ - Oracle JVM ๊ณผ ๋น„๊ต
IBM JVM ์†Œ๊ฐœ - Oracle JVM ๊ณผ ๋น„๊ตJungWoon Lee
ย 
Hibernate ORM: Tips, Tricks, and Performance Techniques
Hibernate ORM: Tips, Tricks, and Performance TechniquesHibernate ORM: Tips, Tricks, and Performance Techniques
Hibernate ORM: Tips, Tricks, and Performance TechniquesBrett Meyer
ย 
Java Persistence Frameworks for MongoDB
Java Persistence Frameworks for MongoDBJava Persistence Frameworks for MongoDB
Java Persistence Frameworks for MongoDBMongoDB
ย 
Support de Cours JSF2 Premiรจre partie Intรฉgration avec Spring
Support de Cours JSF2 Premiรจre partie Intรฉgration avec SpringSupport de Cours JSF2 Premiรจre partie Intรฉgration avec Spring
Support de Cours JSF2 Premiรจre partie Intรฉgration avec SpringENSET, Universitรฉ Hassan II Casablanca
ย 
DDD ์ค€๋น„ ์„œ๋ฌธ๋ž˜
DDD ์ค€๋น„ ์„œ๋ฌธ๋ž˜DDD ์ค€๋น„ ์„œ๋ฌธ๋ž˜
DDD ์ค€๋น„ ์„œ๋ฌธ๋ž˜beom kyun choi
ย 

Was ist angesagt? (20)

Architecture .NET
Architecture .NETArchitecture .NET
Architecture .NET
ย 
๋งŒํ™”๊ฒฝ ์•ฑ ๊ฐœ๋ฐœ๊ธฐ(iOS)
๋งŒํ™”๊ฒฝ ์•ฑ ๊ฐœ๋ฐœ๊ธฐ(iOS)๋งŒํ™”๊ฒฝ ์•ฑ ๊ฐœ๋ฐœ๊ธฐ(iOS)
๋งŒํ™”๊ฒฝ ์•ฑ ๊ฐœ๋ฐœ๊ธฐ(iOS)
ย 
Architecture .net
Architecture  .netArchitecture  .net
Architecture .net
ย 
Reactive Programming In Java Using: Project Reactor
Reactive Programming In Java Using: Project ReactorReactive Programming In Java Using: Project Reactor
Reactive Programming In Java Using: Project Reactor
ย 
C++20์—์„œ ๋ฆฌํ”Œ๋ ‰์…˜ ๊ธฐ๋Šฅ ๊ตฌํ˜„
C++20์—์„œ ๋ฆฌํ”Œ๋ ‰์…˜ ๊ธฐ๋Šฅ ๊ตฌํ˜„C++20์—์„œ ๋ฆฌํ”Œ๋ ‰์…˜ ๊ธฐ๋Šฅ ๊ตฌํ˜„
C++20์—์„œ ๋ฆฌํ”Œ๋ ‰์…˜ ๊ธฐ๋Šฅ ๊ตฌํ˜„
ย 
Hibernate
HibernateHibernate
Hibernate
ย 
DB ์„ค๊ณ„ ๊ณผ์ œ
DB ์„ค๊ณ„ ๊ณผ์ œDB ์„ค๊ณ„ ๊ณผ์ œ
DB ์„ค๊ณ„ ๊ณผ์ œ
ย 
Spring framework core
Spring framework coreSpring framework core
Spring framework core
ย 
Software engineer๊ฐ€ ๋˜๊ธฐ ์œ„ํ•œ ์—ฌ์ •
Software engineer๊ฐ€ ๋˜๊ธฐ ์œ„ํ•œ ์—ฌ์ •Software engineer๊ฐ€ ๋˜๊ธฐ ์œ„ํ•œ ์—ฌ์ •
Software engineer๊ฐ€ ๋˜๊ธฐ ์œ„ํ•œ ์—ฌ์ •
ย 
๋„๋ฉ”์ธ๊ตฌํ˜„ KSUG 20151128
๋„๋ฉ”์ธ๊ตฌํ˜„ KSUG 20151128๋„๋ฉ”์ธ๊ตฌํ˜„ KSUG 20151128
๋„๋ฉ”์ธ๊ตฌํ˜„ KSUG 20151128
ย 
์˜คํ”ˆ์†Œ์Šค๋กœ ๋งŒ๋“œ๋Š” DB ๋ชจ๋‹ˆํ„ฐ๋ง ์‹œ์Šคํ…œ (w/graphite+grafana)
์˜คํ”ˆ์†Œ์Šค๋กœ ๋งŒ๋“œ๋Š” DB ๋ชจ๋‹ˆํ„ฐ๋ง ์‹œ์Šคํ…œ (w/graphite+grafana)์˜คํ”ˆ์†Œ์Šค๋กœ ๋งŒ๋“œ๋Š” DB ๋ชจ๋‹ˆํ„ฐ๋ง ์‹œ์Šคํ…œ (w/graphite+grafana)
์˜คํ”ˆ์†Œ์Šค๋กœ ๋งŒ๋“œ๋Š” DB ๋ชจ๋‹ˆํ„ฐ๋ง ์‹œ์Šคํ…œ (w/graphite+grafana)
ย 
Batching and Java EE (jdk.io)
Batching and Java EE (jdk.io)Batching and Java EE (jdk.io)
Batching and Java EE (jdk.io)
ย 
Support de cours entrepise java beans ejb m.youssfi
Support de cours entrepise java beans ejb m.youssfiSupport de cours entrepise java beans ejb m.youssfi
Support de cours entrepise java beans ejb m.youssfi
ย 
Reactive programming
Reactive programmingReactive programming
Reactive programming
ย 
IBM JVM ์†Œ๊ฐœ - Oracle JVM ๊ณผ ๋น„๊ต
IBM JVM ์†Œ๊ฐœ - Oracle JVM ๊ณผ ๋น„๊ตIBM JVM ์†Œ๊ฐœ - Oracle JVM ๊ณผ ๋น„๊ต
IBM JVM ์†Œ๊ฐœ - Oracle JVM ๊ณผ ๋น„๊ต
ย 
Hibernate ORM: Tips, Tricks, and Performance Techniques
Hibernate ORM: Tips, Tricks, and Performance TechniquesHibernate ORM: Tips, Tricks, and Performance Techniques
Hibernate ORM: Tips, Tricks, and Performance Techniques
ย 
Java Persistence Frameworks for MongoDB
Java Persistence Frameworks for MongoDBJava Persistence Frameworks for MongoDB
Java Persistence Frameworks for MongoDB
ย 
Support de Cours JSF2 Premiรจre partie Intรฉgration avec Spring
Support de Cours JSF2 Premiรจre partie Intรฉgration avec SpringSupport de Cours JSF2 Premiรจre partie Intรฉgration avec Spring
Support de Cours JSF2 Premiรจre partie Intรฉgration avec Spring
ย 
DDD ์ค€๋น„ ์„œ๋ฌธ๋ž˜
DDD ์ค€๋น„ ์„œ๋ฌธ๋ž˜DDD ์ค€๋น„ ์„œ๋ฌธ๋ž˜
DDD ์ค€๋น„ ์„œ๋ฌธ๋ž˜
ย 
Support JEE Spring Inversion de Controle IOC et Spring MVC
Support JEE Spring Inversion de Controle IOC et Spring MVCSupport JEE Spring Inversion de Controle IOC et Spring MVC
Support JEE Spring Inversion de Controle IOC et Spring MVC
ย 

ร„hnlich wie Informix user guide

๋น…๋ฐ์ดํ„ฐ์ „๋ฌธ๊ฐ€๊ต์œก 2ํ•™๊ธฐ
๋น…๋ฐ์ดํ„ฐ์ „๋ฌธ๊ฐ€๊ต์œก 2ํ•™๊ธฐ๋น…๋ฐ์ดํ„ฐ์ „๋ฌธ๊ฐ€๊ต์œก 2ํ•™๊ธฐ
๋น…๋ฐ์ดํ„ฐ์ „๋ฌธ๊ฐ€๊ต์œก 2ํ•™๊ธฐKangwook Lee
ย 
๋ฐ์ดํ„ฐ์˜ ์ดํ•ด
๋ฐ์ดํ„ฐ์˜ ์ดํ•ด๋ฐ์ดํ„ฐ์˜ ์ดํ•ด
๋ฐ์ดํ„ฐ์˜ ์ดํ•ดpaul lee
ย 
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ chapter1_STG๋ฐ•ํ•˜์€
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ chapter1_STG๋ฐ•ํ•˜์€๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ chapter1_STG๋ฐ•ํ•˜์€
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ chapter1_STG๋ฐ•ํ•˜์€ETRIBE_STG
ย 
์ •๋ณด๊ฒ€์ƒ‰์˜๊ฐœ์š”
์ •๋ณด๊ฒ€์ƒ‰์˜๊ฐœ์š”์ •๋ณด๊ฒ€์ƒ‰์˜๊ฐœ์š”
์ •๋ณด๊ฒ€์ƒ‰์˜๊ฐœ์š”Dosang Yoon
ย 
News Big Data Analytics
News Big Data AnalyticsNews Big Data Analytics
News Big Data AnalyticsDaemin Park
ย 
๋น…๋ฐ์ดํ„ฐํ”Œ๋žซํผ๊ตฌ์ถ•_๊ฐœ๋ฐฉํ˜•ํ”Œ๋žซํผ์ค‘์‹ฌ.pdf
๋น…๋ฐ์ดํ„ฐํ”Œ๋žซํผ๊ตฌ์ถ•_๊ฐœ๋ฐฉํ˜•ํ”Œ๋žซํผ์ค‘์‹ฌ.pdf๋น…๋ฐ์ดํ„ฐํ”Œ๋žซํผ๊ตฌ์ถ•_๊ฐœ๋ฐฉํ˜•ํ”Œ๋žซํผ์ค‘์‹ฌ.pdf
๋น…๋ฐ์ดํ„ฐํ”Œ๋žซํผ๊ตฌ์ถ•_๊ฐœ๋ฐฉํ˜•ํ”Œ๋žซํผ์ค‘์‹ฌ.pdfํšจ๊ทผ ์œค
ย 
Daum๋‚ด๋ถ€ Hadoop ํ™œ์šฉ ์‚ฌ๋ก€ | Devon 2012
Daum๋‚ด๋ถ€ Hadoop ํ™œ์šฉ ์‚ฌ๋ก€ | Devon 2012Daum๋‚ด๋ถ€ Hadoop ํ™œ์šฉ ์‚ฌ๋ก€ | Devon 2012
Daum๋‚ด๋ถ€ Hadoop ํ™œ์šฉ ์‚ฌ๋ก€ | Devon 2012Daum DNA
ย 
Ankus ์ œํ’ˆ์†Œ๊ฐœ์„œ
Ankus ์ œํ’ˆ์†Œ๊ฐœ์„œAnkus ์ œํ’ˆ์†Œ๊ฐœ์„œ
Ankus ์ œํ’ˆ์†Œ๊ฐœ์„œonycom1
ย 
Daum ๋‚ด๋ถ€ ๋น…๋ฐ์ดํ„ฐ ๋ฐ ํด๋ผ์šฐ๋“œ ๊ธฐ์ˆ  ํ™œ์šฉ ์‚ฌ๋ก€- ์œค์„์ฐฌ (2012)
Daum ๋‚ด๋ถ€ ๋น…๋ฐ์ดํ„ฐ ๋ฐ ํด๋ผ์šฐ๋“œ ๊ธฐ์ˆ  ํ™œ์šฉ ์‚ฌ๋ก€- ์œค์„์ฐฌ (2012)Daum ๋‚ด๋ถ€ ๋น…๋ฐ์ดํ„ฐ ๋ฐ ํด๋ผ์šฐ๋“œ ๊ธฐ์ˆ  ํ™œ์šฉ ์‚ฌ๋ก€- ์œค์„์ฐฌ (2012)
Daum ๋‚ด๋ถ€ ๋น…๋ฐ์ดํ„ฐ ๋ฐ ํด๋ผ์šฐ๋“œ ๊ธฐ์ˆ  ํ™œ์šฉ ์‚ฌ๋ก€- ์œค์„์ฐฌ (2012)Channy Yun
ย 
Introduction to ankus(data mining and machine learning open source)
Introduction to ankus(data mining and machine learning open source)Introduction to ankus(data mining and machine learning open source)
Introduction to ankus(data mining and machine learning open source)SuHyun Jeon
ย 
2016๋…„ ์ธ๋ฌธ์ •๋ณดํ•™ Sql์„ธ๋ฏธ๋‚˜ 1/3
2016๋…„ ์ธ๋ฌธ์ •๋ณดํ•™ Sql์„ธ๋ฏธ๋‚˜ 1/32016๋…„ ์ธ๋ฌธ์ •๋ณดํ•™ Sql์„ธ๋ฏธ๋‚˜ 1/3
2016๋…„ ์ธ๋ฌธ์ •๋ณดํ•™ Sql์„ธ๋ฏธ๋‚˜ 1/3in2acous
ย 
Rinker ์ „์‹œํšŒ ๋ฐœํ‘œ์šฉ (1)
Rinker ์ „์‹œํšŒ ๋ฐœํ‘œ์šฉ (1)Rinker ์ „์‹œํšŒ ๋ฐœํ‘œ์šฉ (1)
Rinker ์ „์‹œํšŒ ๋ฐœํ‘œ์šฉ (1)Seungho Han
ย 
How to prevent cyber attack with big data &amp; intelligence(sfis170222)
How to prevent cyber attack with big data &amp; intelligence(sfis170222)How to prevent cyber attack with big data &amp; intelligence(sfis170222)
How to prevent cyber attack with big data &amp; intelligence(sfis170222)Yong Suk Kang ๅงœ้พ™้”ก
ย 
[SSA] 01.bigdata database technology (2014.02.05)
[SSA] 01.bigdata database technology (2014.02.05)[SSA] 01.bigdata database technology (2014.02.05)
[SSA] 01.bigdata database technology (2014.02.05)Steve Min
ย 
[H3 2012] ๋กœ๊ทธ์† ์‚ฌ์šฉ์ž ๋ฐœ์ž๊ตญ ๋“ค์—ฌ๋‹ค๋ณด๊ธฐ
[H3 2012] ๋กœ๊ทธ์† ์‚ฌ์šฉ์ž ๋ฐœ์ž๊ตญ ๋“ค์—ฌ๋‹ค๋ณด๊ธฐ[H3 2012] ๋กœ๊ทธ์† ์‚ฌ์šฉ์ž ๋ฐœ์ž๊ตญ ๋“ค์—ฌ๋‹ค๋ณด๊ธฐ
[H3 2012] ๋กœ๊ทธ์† ์‚ฌ์šฉ์ž ๋ฐœ์ž๊ตญ ๋“ค์—ฌ๋‹ค๋ณด๊ธฐKTH, ์ผ€์ดํ‹ฐํ•˜์ดํ…”
ย 
20120525 active directory๊ฐ€์ด๋“œ
20120525 active directory๊ฐ€์ด๋“œ20120525 active directory๊ฐ€์ด๋“œ
20120525 active directory๊ฐ€์ด๋“œSukjin Yun
ย 
[Retail & CPG Day 2019] Amazon.com์˜ ๋ฌด์ค‘๋‹จ, ๋Œ€์šฉ๋Ÿ‰ DBํŒจํ„ด๊ณผ ๊ตญ๋‚ด์‚ฌ๋ก€ (Lotte e-commerce) - ...
[Retail & CPG Day 2019] Amazon.com์˜ ๋ฌด์ค‘๋‹จ, ๋Œ€์šฉ๋Ÿ‰ DBํŒจํ„ด๊ณผ ๊ตญ๋‚ด์‚ฌ๋ก€ (Lotte e-commerce) - ...[Retail & CPG Day 2019] Amazon.com์˜ ๋ฌด์ค‘๋‹จ, ๋Œ€์šฉ๋Ÿ‰ DBํŒจํ„ด๊ณผ ๊ตญ๋‚ด์‚ฌ๋ก€ (Lotte e-commerce) - ...
[Retail & CPG Day 2019] Amazon.com์˜ ๋ฌด์ค‘๋‹จ, ๋Œ€์šฉ๋Ÿ‰ DBํŒจํ„ด๊ณผ ๊ตญ๋‚ด์‚ฌ๋ก€ (Lotte e-commerce) - ...Amazon Web Services Korea
ย 
[์›จ๋น„๋‚˜] ์šฐ๋ฆฌ๊ฐ€ ๋ฐ์ดํ„ฐ ๋ฉ”์‹œ์— ์ฃผ๋ชฉํ•ด์•ผ ํ•  ์ด์œ 
[์›จ๋น„๋‚˜] ์šฐ๋ฆฌ๊ฐ€ ๋ฐ์ดํ„ฐ ๋ฉ”์‹œ์— ์ฃผ๋ชฉํ•ด์•ผ ํ•  ์ด์œ [์›จ๋น„๋‚˜] ์šฐ๋ฆฌ๊ฐ€ ๋ฐ์ดํ„ฐ ๋ฉ”์‹œ์— ์ฃผ๋ชฉํ•ด์•ผ ํ•  ์ด์œ 
[์›จ๋น„๋‚˜] ์šฐ๋ฆฌ๊ฐ€ ๋ฐ์ดํ„ฐ ๋ฉ”์‹œ์— ์ฃผ๋ชฉํ•ด์•ผ ํ•  ์ด์œ confluent
ย 
Deep learning framework ์ œ์ž‘
Deep learning framework ์ œ์ž‘Deep learning framework ์ œ์ž‘
Deep learning framework ์ œ์ž‘Tae Young Lee
ย 
๋””์ง€ํ„ธ ์ธ๋ฌธํ•™ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐœ๋ก 
๋””์ง€ํ„ธ ์ธ๋ฌธํ•™ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐœ๋ก ๋””์ง€ํ„ธ ์ธ๋ฌธํ•™ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐœ๋ก 
๋””์ง€ํ„ธ ์ธ๋ฌธํ•™ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐœ๋ก Baro Kim
ย 

ร„hnlich wie Informix user guide (20)

๋น…๋ฐ์ดํ„ฐ์ „๋ฌธ๊ฐ€๊ต์œก 2ํ•™๊ธฐ
๋น…๋ฐ์ดํ„ฐ์ „๋ฌธ๊ฐ€๊ต์œก 2ํ•™๊ธฐ๋น…๋ฐ์ดํ„ฐ์ „๋ฌธ๊ฐ€๊ต์œก 2ํ•™๊ธฐ
๋น…๋ฐ์ดํ„ฐ์ „๋ฌธ๊ฐ€๊ต์œก 2ํ•™๊ธฐ
ย 
๋ฐ์ดํ„ฐ์˜ ์ดํ•ด
๋ฐ์ดํ„ฐ์˜ ์ดํ•ด๋ฐ์ดํ„ฐ์˜ ์ดํ•ด
๋ฐ์ดํ„ฐ์˜ ์ดํ•ด
ย 
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ chapter1_STG๋ฐ•ํ•˜์€
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ chapter1_STG๋ฐ•ํ•˜์€๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ chapter1_STG๋ฐ•ํ•˜์€
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ chapter1_STG๋ฐ•ํ•˜์€
ย 
์ •๋ณด๊ฒ€์ƒ‰์˜๊ฐœ์š”
์ •๋ณด๊ฒ€์ƒ‰์˜๊ฐœ์š”์ •๋ณด๊ฒ€์ƒ‰์˜๊ฐœ์š”
์ •๋ณด๊ฒ€์ƒ‰์˜๊ฐœ์š”
ย 
News Big Data Analytics
News Big Data AnalyticsNews Big Data Analytics
News Big Data Analytics
ย 
๋น…๋ฐ์ดํ„ฐํ”Œ๋žซํผ๊ตฌ์ถ•_๊ฐœ๋ฐฉํ˜•ํ”Œ๋žซํผ์ค‘์‹ฌ.pdf
๋น…๋ฐ์ดํ„ฐํ”Œ๋žซํผ๊ตฌ์ถ•_๊ฐœ๋ฐฉํ˜•ํ”Œ๋žซํผ์ค‘์‹ฌ.pdf๋น…๋ฐ์ดํ„ฐํ”Œ๋žซํผ๊ตฌ์ถ•_๊ฐœ๋ฐฉํ˜•ํ”Œ๋žซํผ์ค‘์‹ฌ.pdf
๋น…๋ฐ์ดํ„ฐํ”Œ๋žซํผ๊ตฌ์ถ•_๊ฐœ๋ฐฉํ˜•ํ”Œ๋žซํผ์ค‘์‹ฌ.pdf
ย 
Daum๋‚ด๋ถ€ Hadoop ํ™œ์šฉ ์‚ฌ๋ก€ | Devon 2012
Daum๋‚ด๋ถ€ Hadoop ํ™œ์šฉ ์‚ฌ๋ก€ | Devon 2012Daum๋‚ด๋ถ€ Hadoop ํ™œ์šฉ ์‚ฌ๋ก€ | Devon 2012
Daum๋‚ด๋ถ€ Hadoop ํ™œ์šฉ ์‚ฌ๋ก€ | Devon 2012
ย 
Ankus ์ œํ’ˆ์†Œ๊ฐœ์„œ
Ankus ์ œํ’ˆ์†Œ๊ฐœ์„œAnkus ์ œํ’ˆ์†Œ๊ฐœ์„œ
Ankus ์ œํ’ˆ์†Œ๊ฐœ์„œ
ย 
Daum ๋‚ด๋ถ€ ๋น…๋ฐ์ดํ„ฐ ๋ฐ ํด๋ผ์šฐ๋“œ ๊ธฐ์ˆ  ํ™œ์šฉ ์‚ฌ๋ก€- ์œค์„์ฐฌ (2012)
Daum ๋‚ด๋ถ€ ๋น…๋ฐ์ดํ„ฐ ๋ฐ ํด๋ผ์šฐ๋“œ ๊ธฐ์ˆ  ํ™œ์šฉ ์‚ฌ๋ก€- ์œค์„์ฐฌ (2012)Daum ๋‚ด๋ถ€ ๋น…๋ฐ์ดํ„ฐ ๋ฐ ํด๋ผ์šฐ๋“œ ๊ธฐ์ˆ  ํ™œ์šฉ ์‚ฌ๋ก€- ์œค์„์ฐฌ (2012)
Daum ๋‚ด๋ถ€ ๋น…๋ฐ์ดํ„ฐ ๋ฐ ํด๋ผ์šฐ๋“œ ๊ธฐ์ˆ  ํ™œ์šฉ ์‚ฌ๋ก€- ์œค์„์ฐฌ (2012)
ย 
Introduction to ankus(data mining and machine learning open source)
Introduction to ankus(data mining and machine learning open source)Introduction to ankus(data mining and machine learning open source)
Introduction to ankus(data mining and machine learning open source)
ย 
2016๋…„ ์ธ๋ฌธ์ •๋ณดํ•™ Sql์„ธ๋ฏธ๋‚˜ 1/3
2016๋…„ ์ธ๋ฌธ์ •๋ณดํ•™ Sql์„ธ๋ฏธ๋‚˜ 1/32016๋…„ ์ธ๋ฌธ์ •๋ณดํ•™ Sql์„ธ๋ฏธ๋‚˜ 1/3
2016๋…„ ์ธ๋ฌธ์ •๋ณดํ•™ Sql์„ธ๋ฏธ๋‚˜ 1/3
ย 
Rinker ์ „์‹œํšŒ ๋ฐœํ‘œ์šฉ (1)
Rinker ์ „์‹œํšŒ ๋ฐœํ‘œ์šฉ (1)Rinker ์ „์‹œํšŒ ๋ฐœํ‘œ์šฉ (1)
Rinker ์ „์‹œํšŒ ๋ฐœํ‘œ์šฉ (1)
ย 
How to prevent cyber attack with big data &amp; intelligence(sfis170222)
How to prevent cyber attack with big data &amp; intelligence(sfis170222)How to prevent cyber attack with big data &amp; intelligence(sfis170222)
How to prevent cyber attack with big data &amp; intelligence(sfis170222)
ย 
[SSA] 01.bigdata database technology (2014.02.05)
[SSA] 01.bigdata database technology (2014.02.05)[SSA] 01.bigdata database technology (2014.02.05)
[SSA] 01.bigdata database technology (2014.02.05)
ย 
[H3 2012] ๋กœ๊ทธ์† ์‚ฌ์šฉ์ž ๋ฐœ์ž๊ตญ ๋“ค์—ฌ๋‹ค๋ณด๊ธฐ
[H3 2012] ๋กœ๊ทธ์† ์‚ฌ์šฉ์ž ๋ฐœ์ž๊ตญ ๋“ค์—ฌ๋‹ค๋ณด๊ธฐ[H3 2012] ๋กœ๊ทธ์† ์‚ฌ์šฉ์ž ๋ฐœ์ž๊ตญ ๋“ค์—ฌ๋‹ค๋ณด๊ธฐ
[H3 2012] ๋กœ๊ทธ์† ์‚ฌ์šฉ์ž ๋ฐœ์ž๊ตญ ๋“ค์—ฌ๋‹ค๋ณด๊ธฐ
ย 
20120525 active directory๊ฐ€์ด๋“œ
20120525 active directory๊ฐ€์ด๋“œ20120525 active directory๊ฐ€์ด๋“œ
20120525 active directory๊ฐ€์ด๋“œ
ย 
[Retail & CPG Day 2019] Amazon.com์˜ ๋ฌด์ค‘๋‹จ, ๋Œ€์šฉ๋Ÿ‰ DBํŒจํ„ด๊ณผ ๊ตญ๋‚ด์‚ฌ๋ก€ (Lotte e-commerce) - ...
[Retail & CPG Day 2019] Amazon.com์˜ ๋ฌด์ค‘๋‹จ, ๋Œ€์šฉ๋Ÿ‰ DBํŒจํ„ด๊ณผ ๊ตญ๋‚ด์‚ฌ๋ก€ (Lotte e-commerce) - ...[Retail & CPG Day 2019] Amazon.com์˜ ๋ฌด์ค‘๋‹จ, ๋Œ€์šฉ๋Ÿ‰ DBํŒจํ„ด๊ณผ ๊ตญ๋‚ด์‚ฌ๋ก€ (Lotte e-commerce) - ...
[Retail & CPG Day 2019] Amazon.com์˜ ๋ฌด์ค‘๋‹จ, ๋Œ€์šฉ๋Ÿ‰ DBํŒจํ„ด๊ณผ ๊ตญ๋‚ด์‚ฌ๋ก€ (Lotte e-commerce) - ...
ย 
[์›จ๋น„๋‚˜] ์šฐ๋ฆฌ๊ฐ€ ๋ฐ์ดํ„ฐ ๋ฉ”์‹œ์— ์ฃผ๋ชฉํ•ด์•ผ ํ•  ์ด์œ 
[์›จ๋น„๋‚˜] ์šฐ๋ฆฌ๊ฐ€ ๋ฐ์ดํ„ฐ ๋ฉ”์‹œ์— ์ฃผ๋ชฉํ•ด์•ผ ํ•  ์ด์œ [์›จ๋น„๋‚˜] ์šฐ๋ฆฌ๊ฐ€ ๋ฐ์ดํ„ฐ ๋ฉ”์‹œ์— ์ฃผ๋ชฉํ•ด์•ผ ํ•  ์ด์œ 
[์›จ๋น„๋‚˜] ์šฐ๋ฆฌ๊ฐ€ ๋ฐ์ดํ„ฐ ๋ฉ”์‹œ์— ์ฃผ๋ชฉํ•ด์•ผ ํ•  ์ด์œ 
ย 
Deep learning framework ์ œ์ž‘
Deep learning framework ์ œ์ž‘Deep learning framework ์ œ์ž‘
Deep learning framework ์ œ์ž‘
ย 
๋””์ง€ํ„ธ ์ธ๋ฌธํ•™ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐœ๋ก 
๋””์ง€ํ„ธ ์ธ๋ฌธํ•™ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐœ๋ก ๋””์ง€ํ„ธ ์ธ๋ฌธํ•™ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐœ๋ก 
๋””์ง€ํ„ธ ์ธ๋ฌธํ•™ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐœ๋ก 
ย 

Informix user guide

  • 1. INFORMIX User Guide 2001. 6 Informix Korea
  • 2. ๋ชฉ์ฐจ ๏ถ RDB ๋ž€ ๋ฌด์—‡์ธ๊ฐ€ ๏ถ SQL ๊ฐœ์š” ๏ถ dbaccess ๋ฅผ ์ด์šฉํ•œ query ์‹คํ–‰ ๏ถ Informix DBMS ์˜ ์ดํ•ด ๏ถ SQL ์„ ์ด์šฉํ•œ ์งˆ์˜ ๋ฐฉ๋ฒ• ๏ถ DB Admin ์ž‘์—… ๏ถ ESQL/C ๋ฅผ ์ด์šฉํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๏ถ System Admin ์ž‘์—… ๏ถ Client/Server Connectivity ๏ถ Data Migration ๏ถ Backup & Restore ๏ถ GLS (Global Language Support) INFORMIX User 2
  • 3. RDB ๋ž€ ๋ฌด์—‡์ธ๊ฐ€ ๏ƒผ ์ •๋ณด์™€ ๋ฐ์ดํ„ฐ ๏ƒผ ์ •๋ณด์‹œ์Šคํ…œ ๏ƒผ ์ž๋ฃŒ์ฒ˜๋ฆฌ์‹œ์Šคํ…œ ๏ƒผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ •์˜ ๏ƒผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํŠน์„ฑ ๏ƒผ DBMS ๋ฐœ์ „ ๋ฐฐ๊ฒฝ ๏ƒผ ๋ฐ์ดํ„ฐ ๋…๋ฆฝ์„ฑ๊ณผ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๊ฐ„์˜ ์‚ฌ์ƒ ๏ƒผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ์‹œ์Šคํ…œ ๏ƒผ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง ๏ƒผ ๊ด€๊ณ„ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ ๏ƒผ ๊ณ„์ธต ๋ฐ์ดํ„ฐ ๋ชจ๋ธ ๏ƒผ ๋„คํŠธ์›Œํฌ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ ๏ƒผ Primary Key ์™€ Foreign Key ๏ƒผ ์ •๊ทœํ™” (Normalization)
  • 4. ์ •๋ณด์™€ ๋ฐ์ดํ„ฐ ๏ถ ๋ฐ์ดํ„ฐ ๏ต ํ˜„์‹ค ์„ธ๊ณ„ (Real World) ๋กœ๋ถ€ํ„ฐ ๋‹จ์ˆœํ•œ ๊ด€์ฐฐ์ด๋‚˜ ์ธก์ •์„ ํ†ตํ•ด์„œ ์ˆ˜์ง‘ํ•œ ์‚ฌ์‹ค (Fact) ๋˜๋Š” ๊ฐ’ (Values) ๏ถ ์ •๋ณด ๏ต ์–ด๋–ค ์ƒํ™ฉ์— ๊ด€ํ•œ ์–ด๋–ค ์˜์‚ฌ ๊ฒฐ์ •์„ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ์ง€์‹ (Knowledge) ๋กœ์จ ๋ฐ์ดํ„ฐ์˜ ์œ ํšจํ•œ ํ•ด์„ (Interpretation) ์ด๋‚˜ ๋ฐ์ดํ„ฐ ์ƒํ˜ธ๊ฐ„์˜ ๊ด€๊ณ„ (Relationship) ์ฒ˜๋ฆฌ๊ธฐ (P) ์ •๋ณด (I) ๋ฐ์ดํ„ฐ (D) INFORMIX User 4
  • 5. ์ •๋ณด ์‹œ์Šคํ…œ ๏ถ ๊ฒฝ์˜ ์ •๋ณด ์‹œ์Šคํ…œ (MIS : Management Information System) ๏ถ ๊ตฐ์‚ฌ ์ •๋ณด ์‹œ์Šคํ…œ (Military Information System) ๏ถ ํ–‰์ • ์ •๋ณด ์‹œ์Šคํ…œ (Administration Information System) ๏ถ ์ธ์‚ฌ ์ •๋ณด ์‹œ์Šคํ…œ (Personnel Information System) ๏ถ ์˜์‚ฌ ๊ฒฐ์ • ์ง€์› ์‹œ์Šคํ…œ (Decision Support System) ์˜ ์ˆ˜์ง‘ ์ž…๋ ฅ ์ถœ๋ ฅ ์‚ฌ ํ˜„์‹ค ์„ธ๊ณ„ ์ฒ˜๋ฆฌ๊ธฐ (P) ์ •๋ณด (I) ๋ถ„๋ฐฐ ๋ฐ์ดํ„ฐ (D) ๊ฒฐ ์ • ์ €์žฅ ๋ฐ์ดํ„ฐ INFORMIX User 5
  • 6. ์ž๋ฃŒ ์ฒ˜๋ฆฌ ์‹œ์Šคํ…œ ๏ถ ์ •๋ณด ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ• ํ•˜๊ธฐ ์œ„ํ•ด ์ •ํ™•ํ•œ ์ตœ์‹ ์˜ ์ •๋ณด๋ฅผ ์ ์‹œ์— ์ œ๊ณตํ•˜๋Š” ์‹œ ์Šคํ…œ ๏ต ์ž๋ฃŒ ์ฒ˜๋ฆฌ ์‹œ์Šคํ…œ์˜ ์ข…๋ฅ˜ ๏‚ง ์ผ๊ด„ ์ฒ˜๋ฆฌ ์‹œ์Šคํ…œ (batch Processing) ๏‚ง ์˜จ๋ผ์ธ ์ฒ˜๋ฆฌ ์‹œ์Šคํ…œ (on-line processing) ๏‚ง ๋ถ„์‚ฐ ์ฒ˜๋ฆฌ ์‹œ์Šคํ…œ (distributed processing) INFORMIX User 6
  • 7. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ •์˜ ๏ถ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ž€ ์–ด๋Š ํ•œ ์กฐ์ง์˜ ๋‹ค์ˆ˜ ์‘์šฉ ์‹œ์Šคํ…œ๋“ค์ด ์‚ฌ์šฉํ•˜๊ธฐ์œ„ํ•ด ํ†ต ํ•ฉ , ์ €์žฅ๋œ ์šด์˜ ๋ฐ์ดํ„ฐ์˜ ์ง‘ํ•ฉ ๏ต ํ†ตํ•ฉ๋œ ๋ฐ์ดํ„ฐ (Integrated Data) ๏‚ง ์ตœ์†Œ์˜ ์ค‘๋ณต , ํ†ต์ œ๋œ ์ค‘๋ณต ํ—ˆ์šฉ ๏ต ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ (Stored Data) ๏ต ์šด์˜ ๋ฐ์ดํ„ฐ (Operational Data) ๏‚ง ์กด์žฌ ๋ชฉ์ ์ด ๋šœ๋ ทํ•˜๊ณ  ํ•„์ˆ˜ ์ ์ธ ๋ฐ์ดํ„ฐ ๏ต ๊ณต์šฉ ๋ฐ์ดํ„ฐ (Shared Data) INFORMIX User 7
  • 8. ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์˜ ํŠน์„ฑ ๏ถ ์‹ค์‹œ๊ฐ„ ์ ‘๊ทผ์„ฑ (Real Time Accessibility) ๏ต ์ˆ˜์‹œ์ ์ด๊ณ  ๋น„ ์ •ํ˜•์ ์ธ ๋ฐ์ดํ„ฐ์˜ ๊ฒ€์ƒ‰์ด๋‚˜ ์ฒ˜๋ฆฌ๋ฅผ ์š”๊ตฌํ•˜๋Š” ์งˆ์˜ ๏ต ์งˆ์˜ (Queries) ์— ๋Œ€ํ•˜์—ฌ ์‹ค์‹œ๊ฐ„์— ์ฒ˜๋ฆฌ ์‘๋‹ต ๏ถ ๊ณ„์†์ ์ธ ๋ณ€ํ™” (Continuous Evolution) ๏ต ๋ฐ์ดํ„ฐ์˜ ์‚ฝ์ž… , ์‚ญ์ œ , ๊ฐฑ์‹ ์„ ํ†ตํ•˜์—ฌ ๊ฐ€์žฅ ์ตœ๊ทผ์˜ ์ •ํ™•ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์ง€ ๏ถ ๋™์‹œ ๊ณต์œ  (Concurrent Sharing) ๏ต ๋™์‹œ์— ์—ฌ๋Ÿฌ์‚ฌ์šฉ์ž๊ฐ€ ์ ‘๊ทผ ์ด์šฉ ๊ฐ€๋Šฅ ๏ถ ๋‚ด์šฉ์— ์˜ํ•œ ์ฐธ์กฐ (Content Reference) ๏ต ๋ฐ์ดํ„ฐ ๋ ˆ์ฝ”๋“œ๋“ค์€ ์ฃผ์†Œ๋‚˜ ์œ„์น˜์— ์˜ํ•ด ์ฐธ์กฐ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋ฐ์ดํ„ฐ์˜ ๋‚ด์šฉ ์ฆ‰ , ์–ด๋–ค ํŠน์ • ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๋ ˆ์ฝ”๋“œ๋“ค์€ ๋ชจ๋‘ ํ•˜๋‚˜์˜ ๋…ผ๋ฆฌ์  ๋‹จ์œ„๋กœ ์ทจ๊ธ‰ ๋˜๊ณ  ์ ‘๊ทผ INFORMIX User 8
  • 9. DBMS ๋ฐœ์ „ ๋ฐฐ๊ฒฝ ๏ถ ๋ฐ์ดํ„ฐ์˜ ์ข…์†์„ฑ ๏ถ ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต์„ฑ ๏ถ ๋‚ด๋ถ€์  ์ผ๊ด€์„ฑ (Consistency) ๏ต ๋ณด์•ˆ์„ฑ (Security) ๏ต ๊ฒฝ์ œ์„ฑ (Economics) ๏ต ๋ฌด๊ฒฐ์„ฑ (Integrity) ๏ถ ๋ฐ์ดํ„ฐ์˜ ๋…๋ฆฝ์„ฑ ๏ต ๋…ผ๋ฆฌ์  ๋ฐ์ดํ„ฐ ๋…๋ฆฝ์„ฑ ๏ต ๋ฌผ๋ฆฌ์  ๋ฐ์ดํ„ฐ ๋…๋ฆฝ์„ฑ INFORMIX User 9
  • 10. ๋ฐ์ดํ„ฐ ๋…๋ฆฝ์„ฑ๊ณผ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๊ฐ„์˜ ์‚ฌ ์ƒ ํ”„๋กœ๊ทธ๋žจ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋…ผ๋ฆฌ์  ๊ตฌ์กฐ A B C A ๋ฌผ๋ฆฌ์  D ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ 1 B C ๋…ผ ๋ฌผ B ๋ฆฌ D ๋ฆฌ ์‚ฌ์  ์‚ฌ์  A B C E ์ƒ ์ƒ D E F ๊ตฌ E ๊ตฌ F G H ... ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ 2 ์กฐ ์กฐ F G G H A ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ 3 C INFORMIX User 10
  • 11. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ์‹œ์Šคํ…œ ๏ถ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ๊ณผ ๋ฐ์ดํ„ฐ์˜ ์ค‘์žฌ์ž๋กœ์จ ๋ชจ๋“  ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ๋“ค์ด ๋ฐ์ดํ„ฐ๋ฒ  ์ด์Šค๋ฅผ ๊ณต์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ๋” ๊ด€๋ฆฌํ•ด ์ฃผ๋Š” ์†Œํ”„ํŠธ์›จ์–ด ์‹œ์Šคํ…œ ๏ต ์ •์˜ ๊ธฐ๋Šฅ ๏‚ง ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋…ผ๋ฆฌ์  ๊ตฌ์กฐ์™€ ๊ทธ ํŠน์„ฑ์„ ์–ด๋–ค ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์— ๋”ฐ๋ผ ๋ช…์„ธ ๏ƒผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ฌผ๋ฆฌ์  ๊ตฌ์กฐ๋ฅผ ๋ช…์„ธ ๏ƒผ ๋ฌผ๋ฆฌ์  ๊ตฌ์กฐ์™€ ๋…ผ๋ฆฌ์  ๊ตฌ์กฐ์˜ ๋ณ€ํ™˜์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ์‚ฌ์ƒ (mapping) ์„ ๋ช…์„ธ ๏ต ์กฐ์ž‘ ๊ธฐ๋Šฅ ๏‚ง ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ„ํŽธํ•˜๊ณ  ์‰ฌ์šฐ๋ฉฐ ๋ช…ํ™•ํ•˜๊ณ  ์™„์ „ํ•˜๊ณ  ํšจ์œจ์  ๏ต ์ œ์–ด ๊ธฐ๋Šฅ ๏‚ง ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ์ œ์–ด ๏‚ง ๋ณด์•ˆ๊ณผ ๊ถŒํ•œ์„ ๊ฒ€์‚ฌ ๏‚ง ๋™์‹œ์„ฑ ์ œ์–ด (Concurrency Control) INFORMIX User 11
  • 12. ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง ๊ฐ์ฒด ( ๊ทธ ์—”ํ‹ฐํ‹ฐ ํƒ€์ž… ๋ ˆ์ฝ”๋“œ ๋ฃน ์—ํŠธ๋ฆฌ๋ทฐํŠธ ๋ฐ์ดํ„ฐ ํ•„๋“œ ) ๊ฐ’ ๊ฐ’ ์„ฑ ์งˆ ๊ฐ’ ํ˜„์‹ค ์„ธ๊ณ„ ( ์‹ค์ฒด ๊ฐœ๋… ์„ธ๊ณ„ ( ์ •๋ณด ) ์ปดํ“จํ„ฐ ์„ธ๊ณ„ ( ๋ฐ์ดํ„ฐ ) ) ์ •๋ณด ๋ชจ๋ธ๋ง ํ˜„์‹ค ์„ธ๊ณ„ ๊ฐœ๋… ์„ธ๊ณ„ ๋ฐ์ดํ„ฐ ์ผ์น˜์„ฑ ๋ชจ๋ธ๋ง ๋ฐ์ดํ„ฐ๊ตฌ์กฐํ™” ๋ฌผ๋ฆฌ์  ๋ฐ์ดํ„ฐ ๋ชจ๋ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ปดํ“จํ„ฐ ์„ธ๊ณ„ INFORMIX User 12
  • 13. ๊ด€๊ณ„ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ ๏ถ ํ˜„์‹ค ์„ธ๊ณ„๋ฅผ ER ๋‹ค์ด์–ด ๊ทธ๋žจ์œผ๋กœ ํ‘œํ˜„ํ•œ ๊ฒƒ์€ ํ˜„์‹ค ์„ธ๊ณ„๋ฅผ ์‚ฌ๋žŒ์ด ์ดํ•ด ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ‘œํ˜„ํ•œ ๋…ผ๋ฆฌ์  ๊ตฌ์กฐ ํ˜„์‹ค ์„ธ๊ณ„ ER ๋ฐ์ดํ„ฐ ์ €์žฅ ๋‹ค์ด์–ด๊ทธ๋žจ ๋ชจ๋ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ•™๋ฒˆ ์ด๋ฆ„ ํ•™๋…„ ํ•™๊ณผ ํ•™๋ฒˆ ๊ณผ๋ชฉ ๋ฒˆํ˜ธ ์„ฑ์  ํ•™์ƒ ์ˆ˜๊ฐ• 1234 ๊น€์ฒ ์ˆ˜ 3 ์ „์‚ฐ 1235 CS312 90 1235 ์ด์ƒ์ฒ  4 ์ „์‚ฐ 1246 CS312 85 1246 ๋ฐ•์˜์ˆ˜ 3 ์ „์ž 1234 CS322 88 1248 ์กฐ์„ฑ์ง„ 3 ์ „๊ธฐ 1235 CS322 95 1225 ๊ฐ•์‹ ์กฐ 1 ์‚ฐ๊ณต 1248 CS322 94 1234 CS412 98 ๊ณผ๋ชฉ ๋ฒˆํ˜ธ ๊ณผ๋ชฉ์ด๋ฆ„ ํ•™์  ๊ต๊ณผ๋ชฉ 1235 CS412 75 CS312 ์ž๋ฃŒ ๊ตฌ์กฐ 3 1246 CS412 80 CS322 ํŒŒ์ผ ์ฒ˜๋ฆฌ 3 CS412 ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค 3 INFORMIX User 13
  • 14. ๊ณ„์ธต ๋ฐ์ดํ„ฐ ๋ชจ๋ธ ๊ต๊ณผ๋ชฉ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค CS 421.2 ์„ ์ˆ˜ ๊ณผ๋ชฉ ๊ฐ• ์ขŒ ํŒŒ์ผ ์ฒ˜๋ฆฌ๋ก  CS 421.1 ํ™์ˆ˜์˜ ๊ต ์ˆ˜ ํ•™ ์ƒ ์ด์ƒ๊ธธ ๊น€์ฒ ์ˆ˜ INFORMIX User 14
  • 15. ๋„คํŠธ์›Œํฌ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ 1000, ๊ฐ‘ , ๊ฒฝ์˜ , 4 A ์˜์–ด , 4 B C ์—ญ์‚ฌ , 3 2000, ์„ , ์ „์‚ฐ , 3 D A ์Œ์•… , 2 3000, ๋ณ‘ , ์˜๋ฌธ , 2 B C INFORMIX User 15
  • 16. Primary Key ์™€ Foreign Key ๏ถ Primary Key ๏ต ๊ฐ ๊ฐœ์ฒด๋ฅผ ์œ ์ผํ•˜๊ฒŒ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋Š” ์†์„ฑ ํ˜น์€ ์†์„ฑ์˜ ์กฐํ•ฉ . ๏ต Primary ๋Š” ๋ฐ˜๋“œ์‹œ ์กด์žฌํ•˜๋Š” ๊ฐ’์ด์–ด์•ผ ํ•œ๋‹ค . ๏ต ๋ชจ๋“  ๊ฐœ์ฒด๋Š” ํ•˜๋‚˜์˜ primary key ๋ฅผ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค . ๏ต ์˜ˆ ๏‚ง ๊ณ ๊ฐ ๊ฐœ์ฒด : ์ฃผ๋ฏผ๋ฒˆํ˜ธ ๏‚ง ์ƒํ’ˆ ๊ฐœ์ฒด : ์ƒํ’ˆ ์ฝ”๋“œ , ์ œ์กฐ์—…์ฒด ๏‚ง ํ•™์ƒ ๊ฐœ์ฒด : ํ•™๋ฒˆ ๏ถ Foreign Key ๏ต ๋‹ค๋ฅธ ๊ฐœ์ฒด์˜ primary key ๋ฅผ ์ฐธ์กฐํ•ด์•ผ ํ•˜๋Š” ๊ฐœ์ฒด์˜ ์†์„ฑ ๏ต ๊ฐœ์ฒด ๊ฐ„์— ๊ด€๊ณ„๋ฅผ ์„ค์ •ํ•˜๊ธฐ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ์†์„ฑ ํ˜น์€ ์†์„ฑ์˜ ์ง‘ํ•ฉ ๏ต ๊ฐ’์ด ์—†์–ด๋„ ๊ฐ€๋Šฅ ๏ต ์ค‘๋ณต๋œ ๊ฐ’ ๊ฐ€๋Šฅ ๏ต ์ˆ˜์ • ๊ฐ€๋Šฅ ๏ต ์˜ˆ ๏‚ง ์ฃผ๋ฌธ ๊ฐœ์ฒด์˜ ์ฃผ๋ฌธ ๊ณ ๊ฐ ์†์„ฑ ๊ณ ๊ฐ ๊ฐœ์ฒด์˜ ๊ณ ๊ฐ๋ฒˆํ˜ธ ๏‚ง ์ˆ˜๊ฐ• ๊ฐœ์ฒด์˜ ์ˆ˜๊ฐ• ํ•™์ƒ ์†์„ฑ ํ•™์ƒ ๊ฐœ์ฒด์˜ ํ•™๋ฒˆ INFORMIX User 16
  • 17. ์ •๊ทœํ™” - 1NF(First Normal Form) ๏ถ ์—”ํ‹ฐํ‹ฐ (entity) ์•ˆ์— ๋ฐ˜๋ณต๋˜๋Š” ์†์„ฑ ๊ทธ๋ฃน์„ ์ œ๊ฑฐํ•œ๋‹ค ์ฃผ๋ฌธ ์ฃผ๋ฌธ ์ฃผ๋ฌธ๋ฒˆํ˜ธ ์ฃผ๋ฌธ๋‚ ์งœ ์ฃผ๋ฌธ๋ฒˆํ˜ธ composite ์ด์•ก ํ•ญ๋ชฉ๋ฒˆํ˜ธ primary key ํ•ญ๋ชฉ๋ฒˆํ˜ธ 1 ์ˆ˜๋Ÿ‰ ํ•ญ๋ชฉ์ˆ˜๋Ÿ‰ 1 ์ฃผ๋ฌธ๋‚ ์งœ ๋ฐ˜๋ณต๋˜๋Š” ์†์„ฑ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์œ  ํ•ญ๋ชฉ๋ฒˆํ˜ธ 2 ์ด์•ก ์—ฐํ•˜๊ฒŒ ์ €์žฅํ•  ์ˆ˜ ์—†๋‹ค . ํ•ญ๋ชฉ์ˆ˜๋Ÿ‰ 2 ์ง€๋ถˆ๋‚ ์งœ ์—ฌ๊ธฐ์„œ , ํ•ญ๋ชฉ์€ ์ตœ๋Œ€ 4 ๊ฐœ๋ฐ–์— ํ•ญ๋ชฉ๋ฒˆํ˜ธ 3 ์ €์žฅํ•  ์ˆ˜ ์—†๋‹ค ํ•ญ๋ชฉ์ˆ˜๋Ÿ‰ 3 ํ•ญ๋ชฉ๋ฒˆํ˜ธ 4 ํ•ญ๋ชฉ์ˆ˜๋Ÿ‰ 4 INFORMIX User 17
  • 18. ์ •๊ทœํ™” - 2NF(Second Normal Form) ๏ถ 1NF ์—์„œ ๋ชจ๋“  ์†์„ฑ์€ ์ „์ฒด Primary Key ์— ์ข…์†๋˜์–ด์•ผํ•œ๋‹ค ๏ถ ์—”ํ‹ฐํ‹ฐ์˜ ๋ชจ๋“  ์†์„ฑ์€ Primary Key ์— functionally dependent ํ•ด์•ผ ํ•œ๋‹ค ๏ถ ๋ฐ์ดํ„ฐํ•ญ๋ชฉ a ๊ฐ€ ๋ฐ์ดํ„ฐํ•ญ๋ชฉ b ์— ์˜ํ•ด ์ •์˜๋  ์ˆ˜ ์žˆ๋‹ค๋ฉด a ๋Š” b ์— functionally dependant ํ•˜๋‹ค๊ณ  ํ•œ๋‹ค ์ฃผ๋ฌธ ์ฃผ๋ฌธ๋งˆ์Šคํ„ฐ ์ฃผ๋ฌธ๋ฒˆํ˜ธ ์ฃผ๋ฌธ๋‚ ์งœ , ์ด์•ก , ์ฃผ๋ฌธ๋ฒˆํ˜ธ ์ฃผ๋ฌธ๋‚ ์งœ ์ง€๋ถˆ๋‚ ์งœ๋Š” ๋‹จ์ง€ ํ•ญ๋ชฉ๋ฒˆํ˜ธ ์ด์•ก ์ฃผ๋ฌธ๋ฒˆํ˜ธ์—๋งŒ ์ˆ˜๋Ÿ‰ ์ง€๋ถˆ๋‚ ์งœ functionally ์ฃผ๋ฌธ๋‚ ์งœ dependant ํ•˜๋‹ค ์ด์•ก ์ง€๋ถˆ๋‚ ์งœ ์ฃผ๋ฌธ์ƒ์„ธ ์ฃผ๋ฌธ๋ฒˆํ˜ธ ์ฃผ๋ฌธ๋ฒˆํ˜ธ 1010 1010 1011 1010 ํ•ญ๋ชฉ์˜ ์ง€๋ถˆ ํ•ญ๋ชฉ๋ฒˆํ˜ธ ํ•ญ๋ชฉ๋ฒˆํ˜ธ 1 2 3 ์ˆ˜๋Ÿ‰ ์ˆ˜๋Ÿ‰ 20 3 12 ๋‚ ์งœ๊ฐ€ ๋ฐ”๋€Œ๋ฉด ๋ชจ ์ฃผ๋ฌธ๋‚ ์งœ 1/4/2001 1/4/2001 1/4/2001 ๋“  1010 ํ•ญ๋ชฉ์„ ์ˆ˜ ์ด์•ก 50,000 50,000 50,000 ์ง€๋ถˆ๋‚ ์งœ 2/4/2001 2/4/2001 2/4/2001 ์ •ํ•ด์•ผ ํ•œ๋‹ค INFORMIX User 18
  • 19. ์ •๊ทœํ™” - 3NF(Third Normal Form) ๏ถ Primary Key ์— ์ข…์†์ ์ธ Key ๊ฐ€ ์•„๋‹Œ ์†์„ฑ์— ์ข…์†์ ์ธ ์†์„ฑ์ด ์žˆ์œผ๋ฉด ์•ˆ๋œ๋‹ค . ๏ถ ์–ด๋– ํ•œ ์†์„ฑ๋„ Primary Key ์— transitively dependent ํ•˜๋ฉด ์•ˆ๋œ๋‹ค . ๏ถ ๋ฐ์ดํ„ฐํ•ญ๋ชฉ a ๊ฐ€ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐํ•ญ๋ชฉ b ์— ์ข…์†์ ์ด๋ฉด a ๋Š” b ๊ฐ€ ์ข…์†์ ์ธ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ํ•ญ๋ชฉ์—๋„ ํ•จ๊ป˜ ์ข…์†์ ์ธ ๊ด€๊ณ„๊ฐ€ ๋˜๊ณ  ์ด๋ฅผ transitively dependent ํ•˜๋‹ค๊ณ  ๋งํ•œ๋‹ค ์ฃผ๋ฌธ๊ฐ€๊ฒฉ ์ฃผ๋ฌธ ํ’ˆ๋ชฉ ์ฃผ๋ฌธ๋ฒˆํ˜ธ ์ฃผ๋ฌธ๋ฒˆํ˜ธ ํ•ญ๋ชฉ๋ฒˆํ˜ธ ํ•ญ๋ชฉ๋ฒˆํ˜ธ ํ’ˆ๋ชฉ๋ฒˆํ˜ธ ํ’ˆ๋ชฉ๋ฒˆํ˜ธ ํ’ˆ๋ชฉ๋ฒˆํ˜ธ ์ œ์กฐ์ฝ”๋“œ ์ œ์กฐ์ฝ”๋“œ ์ œ์กฐ์ฝ”๋“œ ๋‹จ๊ฐ€ ์ˆ˜๋Ÿ‰ ์ˆ˜๋Ÿ‰ ๋‹จ๊ฐ€ ์ฃผ๋ฌธ๋ฒˆํ˜ธ 1010 1010 1011 ์ฃผ๋ฌธํ•˜์ง€ ์•Š์€ ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ๋‹จ๊ฐ€๋ฅผ ์ž…๋ ฅํ•  ์ˆ˜ ์—†๋‹ค ํ•ญ๋ชฉ๋ฒˆํ˜ธ 1 2 1 ํ’ˆ๋ชฉ๋ฒˆํ˜ธ 1 30 1 ํ•ญ๋ชฉ์„ ํฌํ•จํ•œ ์ฃผ๋ฌธ์ด ์‚ญ์ œ๋˜๋ฉด ๊ทธ ํ•ญ๋ชฉ์˜ ๋‹จ๊ฐ€๋ฅผ ์žƒ๋Š”๋‹ค ์ œ์กฐ์ฝ”๋“œ ABC XYZ ABC ๋‹จ๊ฐ€๋Š” ์ค‘๋ณต์ ์œผ๋กœ ์ €์žฅ๋œ๋‹ค ์ˆ˜๋Ÿ‰ 20 3 12 ๋‹จ๊ฐ€ 1,000 3,500 1,000 ๋‹จ๊ฐ€๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ๊ทธ ํ•ญ๋ชฉ์„ ํฌํ•จํ•œ ๋ชจ๋“  ์ฃผ๋ฌธ์— ๋Œ€ํ•ด์„œ ๋ณ€ ๊ฒฝํ•ด์•ผ ํ•œ๋‹ค INFORMIX User 19
  • 20. SQL ๊ฐœ์š” ๏ƒผ SQL ์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€ ๏ƒผ SQL ์˜ ์ข…๋ฅ˜ ๏ƒผ DB ๋‚ด์˜ object ์ด๋ฆ„ ๊ทœ์น™ ๏ƒผ ์ธํฌ๋ฏน์Šค ์ž๋ฃŒํ˜• (Data Type) ๏ƒผ Character Data Type ๏ƒผ Numeric Data Type ๏ƒผ Large Object Data Type ๏ƒผ Time Data Type ๏ƒผ Row Data Type ๏ƒผ Collection Data Type ๏ƒผ Complex Data Type
  • 21. SQL ์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€ ? ๏ถ Structured Query Language ์˜ ์ค€๋ง ๏ถ ์˜์–ด์™€ ํก์‚ฌํ•œ ์–ธ์–ด ๏ถ Database ์™€์˜ ๊ด€๋ จ ์ž‘์—…์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•จ . ๏ถ ๋…ผ๋ฆฌ์ ์ธ database ์˜ model ์„ ๊ด€๊ณ„ํ˜• DB ์˜ schema ๋กœ ๋ฒˆ์—ญํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์–ธ์–ด . ๏ต schema ๋ž€ - DB ๋‚ด์—์„œ์˜ table ์˜ ๋ฌผ๋ฆฌ์ ์ธ ์ •์˜ ๏ต table ์ด๋ž€ - ์—ด๊ณผ ํ–‰์œผ๋กœ ์ด๋ฃจ์–ด์ง„ 2 ์ฐจ์› ํ‘œํ˜„ INFORMIX User 21
  • 22. SQL ์˜ ์ข…๋ฅ˜ ๏ถ DDL(Data Definition Language) ๏‚ง DB ๋‚˜ table ์„ ์ƒ์„ฑํ•˜๊ณ  , ๊ทธ ๊ตฌ์กฐ๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ์ž‘์—…๊ด€๋ จ ๊ตฌ๋ฌธ ๏ถ DML(Data Manipulation Language) ๏‚ง Data ๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  , ์ˆ˜์ •ํ•˜๊ณ  , ์‚ญ์ œํ•˜๋Š” ๋“ฑ์˜ Data ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ตฌ๋ฌธ ๏ถ Cursor Manipulation ๏‚ง Cursor ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ตฌ๋ฌธ ๏ถ Dynamic Management ๏‚ง ๋™์ ์œผ๋กœ ์ž์›์„ ์‚ฌ์šฉ , ๊ด€๋ฆฌํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ตฌ๋ฌธ ๏ถ Data Access ๏‚ง Data ์— ๋Œ€ํ•œ ๊ถŒํ•œ์„ ์„ค์ •ํ•˜๊ณ  , lock ์„ ๊ฑฐ๋Š”๋“ฑ์˜ ์ž‘์—…์— ์‚ฌ์šฉ๋˜๋Š” ๊ตฌ๋ฌธ ๏ถ Data integrity ๏‚ง Transaction ์„ ๊ด€๋ฆฌํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ตฌ๋ฌธ ๏ถ Query optimization ๏‚ง ์งˆ์˜ ์ตœ์ ํ™”์— ์‚ฌ์šฉ๋˜๋Š” ๊ตฌ๋ฌธ ๏ถ Stored procedure ๏‚ง Stored procedure ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์ž‘์—…์— ์‚ฌ์šฉ๋˜๋Š” ๊ตฌ๋ฌธ INFORMIX User 22
  • 23. DB ๋‚ด์˜ object ์ด๋ฆ„ ๊ทœ์น™ ๏ถ Informix version ์— ๋”ฐ๋ผ ๊ธธ์ด ์ œํ•œ์ด ๋‹ค๋ฆ„ . ๏ต Informix 7.*,8.* ,9.1*: 18 ๊ธ€์ž ( ์˜๋ฌธ๊ธฐ์ค€ ) ๏ต Informix 9.2* : 128 ๊ธ€์ž ( ์˜๋ฌธ๊ธฐ์ค€ ) ๏ถ ์ˆซ์ž๋กœ ์‹œ์ž‘ํ•˜๋ฉด ์•ˆ๋จ . ๏ถ ํŠน์ˆ˜๋ฌธ์ž์˜ ์‚ฌ์šฉ ๋ถˆ๊ฐ€ ๏ต ์˜ˆ : ๊ณต๋ฐฑ๋ฌธ์ž , tab ๋ฌธ์ž , ๋“ฑโ€ฆ ๏ถ โ€œ_ โ€ ๋Š” ์‚ฌ์šฉ ๊ฐ€๋Šฅ ๏ถ ANSI-reserved word ์‚ฌ์šฉ ์•ˆ๋จ . INFORMIX User 23
  • 24. ์ธํฌ๋ฏน์Šค ์ž๋ฃŒํ˜• (data type) Character char Numeric Exact varchar Built-in Data Type Large-object Approximate lvarchar User-defined Data Type Time byte decimal/numeric Complex Data Type boolean text money Opaque Data Type blob integer/int Distinct Data Type clob smallint Row Type Named Row Type date int8 Collection Type Unnamed Row Type datetime serial set interval serial8 list decimal multiset float real INFORMIX User 24
  • 25. Character Data Type ๏ถ char (size) ๏ต ๊ณ ์ • ๊ธธ์ด ๋ฌธ์ž ์ €์žฅ ๏ต 1~ 32,767 byte ๊นŒ์ง€์˜ character ์ €์žฅ ๊ฐ€๋Šฅ ๏ต default ๊ฐ’์€ 1 ๏ถ varchar (max, reserve) ๏ต ๊ฐ€๋ณ€ ๊ธธ์ด ๋ฌธ์ž ์ €์žฅ ๏ต 1~ 255 byte ๊นŒ์ง€ ๊ฐ€๋Šฅ ๏ต Reserve(default ๋กœ 0 ) ๋Š” option ์ด๋‚˜ Max ๋Š” ๋ฐ˜๋“œ์‹œ ์ฃผ์–ด์•ผ ํ•จ . ๏ถ lvarchar ๏ต 2K ๊นŒ์ง€์˜ ๊ฐ€๋ณ€๊ธธ์ด ๋ฌธ์ž๋ฅผ ์ €์žฅ INFORMIX User 25
  • 26. Numeric Data Type ๏ถ decimal (precision,scale) or numeric (precision,scale) ๏ต ๊ณ ์ • ์†Œ์ˆ˜์  ์‹ค์ˆ˜๋ฅผ ์ €์žฅ ,32 ์œ ํšจ์ž๋ฆฌ์ˆ˜๊นŒ์ง€ ํ‘œํ˜„ ๏ต default ์ž๋ฆฌ์ˆ˜ : 16, default ์†Œ์ˆ˜์ ์ดํ•˜ : 0 ๏ถ money (precision, scale) ๏ต ๋‚ด๋ถ€์ ์œผ๋กœ decimal ๊ณผ ๊ฐ™์œผ๋‚˜ , ํ™”ํ๋‹จ์œ„๊ธฐํ˜ธ๊ฐ€ ๋ถ™์–ด์„œ ์ถœ๋ ฅ๋จ . ๏ถ integer or int ๏ต 4bytes integer ์ €์žฅ : -(2 31 -1) ~ 2 31 -1 ๏ถ int8 ๏ต 8bytes integer ์ €์žฅ : -(2 63 -1) ~ 2 63 -1 ๏ถ smallint ๏ต 2bytes integer ์ €์žฅ : -(2 15 -1) ~ 2 15 -1 ๏ถ serial (start) / serial8 (start) ๏ต ์„œ๋ฒ„์— ์˜ํ•ด ์ž๋™์ ์œผ๋กœ 1 ์”ฉ ์ฆ๊ฐ€๋˜๋Š” ๊ฐ’์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” type. ๏ต ๋‚ด๋ถ€์ ์œผ๋กœ int ์™€ ๊ฐ™์Œ . INFORMIX User 26
  • 27. Numeric Data Type ๏ถ float or double precision ๏ต ๋ถ€๋™ ์†Œ์ˆ˜์  ์‹ค์ˆ˜๋ฅผ ์ €์žฅ ๏ต ์œ ํšจ์ž๋ฆฌ์ˆ˜ 16 ๊นŒ์ง€ ํ‘œํ˜„ ๊ฐ€๋Šฅ ๏ถ real or smallfloat ๏ต ๋ถ€๋™ ์†Œ์ˆ˜์  ์‹ค์ˆ˜๋ฅผ ์ €์žฅ ๏ต ์œ ํšจ์ž๋ฆฌ์ˆ˜ 8 ๊นŒ์ง€ ๊ฐ€๋Šฅ INFORMIX User 27
  • 28. Large-Object Data Type ๏ถ Large-Object data type ๏ต text ๏‚ง 2G ๊นŒ์ง€์˜ ASCII character ํ˜•์‹์˜ object ๋ฅผ ์ €์žฅ ๏ต byte ๏‚ง 2G ๊นŒ์ง€์˜ binary character ํ˜•์‹์˜ object ๋ฅผ ์ €์žฅ ๏ถ Smart Large Object data type ๏ต clob ๏‚ง 4T ๊นŒ์ง€์˜ ASCII character ํ˜•์‹์˜ object ๋ฅผ ์ €์žฅ ๏ต blob ๏‚ง 4T ๊นŒ์ง€์˜ binary character ํ˜•์‹์˜ object ๋ฅผ ์ €์žฅ INFORMIX User 28
  • 29. Time Data Type ๏ถ date ๏ต ์—ฐ , ์›” , ์ผ์˜ ๋‚ ์งœ๋ฅผ ์ €์žฅ ๏ต Format ์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Œ .(default : mm/dd/yyyy) ๏ต ํ™˜๊ฒฝ๋ณ€์ˆ˜ DBDATE ๋ฅผ ์ด์šฉํ•ด ๋ณ€๊ฒฝ ๏ถ datetime ๏ต ๋‚ ์งœ๋ฅผ ์‹œ๊ฐ„๊นŒ์ง€ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Œ . ๏ต default : yyyy-mm-dd hh:MM:ss.fff ๏ถ interval ๏ต ์‹œ๊ฐ„์˜ ๊ฐ„๊ฒฉ ( ๊ธฐ๊ฐ„ ) ์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Œ . INFORMIX User 29
  • 30. Row Data Type ๏ถ C ์–ธ์–ด์˜ ๊ตฌ์กฐ์ฒด์™€ ์œ ์‚ฌํ•œ ์—ฌ๋Ÿฌ ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐ์˜ ๋ชจ์Œ ๏ถ Unnamed Row Data Type create table part ( part_id serial , cost decimal, part_dimensions row (length decimal, width decimal, height decimal, weight decimal) ); insert into part values (0, 10.00, row(1.0, 2.0, 3.0, 4.0)); ๏ถ Named Row Data Type create row type dimension_t ( length decimal, width decimal, height decimal, weight decimal); create table part ( part_id serial, cost decimal, part_dimensions dimension_t); constructor Cast operator Row data type insert into part values (0, 10.00, row(1.0, 2.0, 3.0, 4.0)::dimension_t; ๏ถ Row Data Type ๋ฐ์ดํ„ฐ ์กฐํšŒ select part_id, cost, part_dimensions from part where part_dimensions.weight > 100; INFORMIX User 30
  • 31. Collection Data Type ๏ถ Set ๏ต ๋ฐ์ดํ„ฐ ์ž…๋ ฅ ์ˆœ์„œ์— ์˜๋ฏธ ์—†๊ณ  , ์ค‘๋ณต๋œ ๊ฐ’์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Œ alter table part add (defective_dates set(date not null)); insert into part (part_id, defective_dates) values (0,(set{2/23/2001,3/15/2001})); select * from part where โ€˜1/26/2001โ€™ in defective_dates; ๏ถ MultiSet ๏ต ๋ฐ์ดํ„ฐ ์ˆœ์„œ์— ์˜๋ฏธ ์—†๊ณ  , ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๋ฅผ ํ—ˆ์šฉํ•จ ๏ถ List ๏ต ๋ฐ์ดํ„ฐ ์ˆœ์„œ๊ฐ€ ์˜๋ฏธ ์žˆ๊ณ  , ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๋ฅผ ํ—ˆ์šฉํ•จ INFORMIX User 31
  • 32. Complex Data Type ๏ถ User-defined Data Types (UDTs) ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค ๏ถ Distinct Types ๏ต ๊ธฐ์กด์— ์กด์žฌํ•˜๋Š” ๋ฐ์ดํ„ฐํ˜•์„ ๊ธฐ๋ฐ˜์œผ๋กœํ•œ ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐํ˜•์„ ๋‚˜ํƒ€๋‚ธ๋‹ค create distinct type inches as decimal; create row type dimension_t ( length inches, width inches, . . . ); ๏ถ Opaque Data Types ๏ต C ์–ธ์–ด๋‚˜ JAVA ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐํ˜•์˜ ๋‚ด๋ถ€ ๊ตฌ์กฐ์™€ ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•œ๋‹ค ๏ต Create Opaque Type ๋ฌธ์„ ์ด์šฉํ•˜์—ฌ ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐํ˜•์„ ๋“ฑ๋กํ•œ๋‹ค ๏ต Create Function ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด ๋ฐ์ดํ„ฐํ˜•์„ ์ง€์›ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋“ฑ๋กํ•œ๋‹ค INFORMIX User 32
  • 33. dbaccess ๋ฅผ ์ด์šฉํ•œ query ์‹ค ํ–‰ ๏ƒผ dbaccess ๋ž€? ๏ƒผ dbaccess ์‹คํ–‰ ๏ƒผ dbaccess ์˜ ๋ฉ”๋‰ด ๊ตฌ์กฐ ๏ƒผ dbaccess ์˜ ์‹คํ–‰๋ฐฉ๋ฒ•
  • 34. Dbaccess ๋ž€ ? ๏ถ Query ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  , db ๋‚˜ table ์— ๋Œ€ํ•œ information ์„ ๋ณผ ์ˆ˜ ์žˆ๋Š” tool INFORMIX User 34
  • 35. Dbaccess ์‹คํ–‰ ๏ถ $ dbaccess ๏ถ ๋ฉ”๋‰ด์˜ ์‚ฌ์šฉ๋ฒ• ๏ต Space-bar ๋ฅผ ์ด์šฉํ•˜๊ฑฐ๋‚˜ ํ™”์‚ดํ‘œํ‚ค๋กœ ์ด๋™ ๏ต ํ˜น์€ ๊ฐ ๋ฉ”๋‰ด์˜ ๋Œ€๋ฌธ์ž๋กœ ์“ฐ์—ฌ์ง„ ๋ฌธ์ž๋ฅผ ๋ˆ„๋ฆ„ ๏‚ง ์˜ˆ : Exit ์˜ ๊ฒฝ์šฐ โ€œ eโ€ ๋ฅผ ๋ˆ„๋ฆ„ INFORMIX User 35
  • 36. Dbaccess ์˜ ๋ฉ”๋‰ด๊ตฌ์กฐ Query Language Connection Database Table Session Exit New Connect Select Create Run Disconnect Create Alter Modify Exit Info Info Use-Editor Drop Drop Output cLose Exit Save Exit Info Drop Exit ๏ƒผ NEW dbaccess editor ์—์„œ SQL ๋ฌธ์žฅ์„ ์ž‘์„ฑํ•œ๋‹ค , ์ž‘์„ฑ์ด ๋๋‚˜๋ฉด ESC ํ‚ค๋ฅผ ๋ˆŒ๋Ÿฌ์•ผ ๋ฉ”๋‰ด๋กœ ๋Œ์•„๊ฐ„๋‹ค ๏ƒผ RUN ์ž‘์„ฑ๋œ SQL ๋ฌธ์žฅ์„ ์‹คํ–‰ํ•œ๋‹ค ๏ƒผ MODIFY dbaccess editor ์—์„œ SQL ๋ฌธ์žฅ์„ ์ˆ˜์ •ํ•œ๋‹ค ๏ƒผ USE_EDITOR vi editor ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ SQL ๋ฌธ์žฅ์„ ์ž‘์„ฑ ๋ฐ ์ˆ˜์ •ํ•œ๋‹ค . ์ž‘์„ฑ์ด ๋๋‚˜๋ฉด ์ €์žฅํ•˜๊ณ  vi ๋ฅผ ์ข…๋ฃŒํ•œ๋‹ค ๏ƒผ OUTPUT ์ถœ๋ ฅ๊ฒฐ๊ณผ๋ฅผ ํŒŒ์ผ๋กœ ์ €์žฅํ•œ๋‹ค ๏ƒผ SAVE editor ์— ๊ธฐ๋ก๋˜์–ด ์žˆ๋Š” SQL ๋ฌธ์žฅ์„ ํŒŒ์ผ๋กœ ์ €์žฅํ•œ๋‹ค ( ํ™•์žฅ์ž : .sql) ๏ƒผ INFO ํ˜„์žฌ ์—ฐ๊ฒฐ๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํ…Œ์ด๋ธ” ์ •๋ณด๋ฅผ ๋ณธ๋‹ค ๏ƒผ DROP ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ์— ์ €์žฅ๋œ SQL ํŒŒ์ผ ( ํ™•์žฅ์ž : .sql) ์„ ์‚ญ์ œํ•œ๋‹ค ๏ƒผ EXIT Query Language ์ข…๋ฃŒ INFORMIX User 36
  • 37. Dbaccess ์˜ ์‹คํ–‰ ๋ฐฉ๋ฒ• ๏ถ ๊ตฌ๋ฌธ์„ ์ ์€ file ์„ ๋ช…๋ น ํ”„๋กฌํ”„ํŠธ์—์„œ ๋ฐ”๋กœ ์‹คํ–‰ํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ ๋‹ค. ๏ต Shell program, cron job ๋“ฑ์— ์‘์šฉ ๊ฐ€๋Šฅ ๏ต dbaccess DB ์ด๋ฆ„ SQL ํŒŒ์ผ๋ช… dbaccess test_db test.sql ๏ถ Interactive mode ๋กœ prompt ์ƒ์—์„œ ์‹คํ–‰ํ•œ๋‹ค ๏ต SQL ๋ฌธ์žฅ ๋์— ์„ธ๋ฏธ์ฝœ๋ก  (;) ์„ ๋„ฃ์–ด์•ผ ์‹คํ–‰๋œ๋‹ค ๏ต ์ข…๋ฃŒ๋Š” interrupt ํ‚ค๋ฅผ ๋ˆŒ๋Ÿฌ ๋น ์ ธ๋‚˜์˜จ๋‹ค dbaccess test_db - > select * from customer; ๏ถ ์—ฌ๋Ÿฌ ๋ฌธ์žฅ์„ ๊ทธ๋ฃน์œผ๋กœ ํ”„๋กฌํ”„ํŠธ์—์„œ ์‹คํ–‰ํ•œ๋‹ค ๏ต ์ƒˆ ์ž…๋ ฅ ๋ผ์ธ ์ฒซ ์ž๋ฆฌ์— ์ข…๋ฃŒ ๋ฌธ์ž๊ฐ€ ๋‚˜ํƒ€๋‚ ๋•Œ๊นŒ์ง€ ๋ฌธ์žฅ์„ ์ž…๋ ฅ ๋ฐ›๋Š”๋‹ค dbaccess test_db << ! > select * from customer; > select * from state; ! INFORMIX User 37
  • 38. Informix DBMS ์˜ ์ดํ•ด ๏ƒผ Informix DBMS ์˜ ์•„ํ‚คํ…์ณ ๏ƒผ Database Server ์˜ ๊ตฌ์„ฑ์š”์†Œ ๏ƒผ ๋ฌผ๋ฆฌ์ ์ธ ์ €์žฅ ๊ณต๊ฐ„ ๏ƒผ ๋…ผ๋ฆฌ์ ์ธ ์ €์žฅ ๊ณต๊ฐ„ ๏ƒผ ๋ฌผ๋ฆฌ์  ๋””์Šคํฌ ๊ณต๊ฐ„ ํ• ๋‹น ๏ƒผ ๋…ผ๋ฆฌ์  ๋””์Šคํฌ ๊ณต๊ฐ„ ํ• ๋‹น ๏ƒผ SYSMASTER ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๏ƒผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์กฐ
  • 39. Informix DBMS ์˜ ์•„ํ‚คํ…์ณ ๏ถ Client/Server ๊ตฌ์กฐ ๏ถ Multi-threaded ๊ตฌ์กฐ ๏ต client ๋Š” server ์—๊ฒŒ ๏ต ์ ์€ ํ”„๋กœ์„ธ์Šค ์†Œ์š” command ๋‚˜ query ๋ฅผ ๋ณด๋‚ด ๏ต ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ•˜๋‚˜์˜ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ  ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›๋Š”๋‹ค ์„ ์œ„ํ•˜์—ฌ ์ž‘์—… ๏ต server ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ปจ ๏ต ์„œ๋ฒ„ ํ”„๋กœ์„ธ์Šค ์•ˆ์—์„œ thread ํ…์ธ ๋ฅผ ๊ด€๋ฆฌํ•˜๋ฉฐ client ๊ฐ€ ๋ณด scheduling ๊ณผ context switching ๋‚ธ query ๋ฅผ ํ•ด์„ํ•˜๊ณ  ์‹คํ–‰ํ•˜ ์—ฌ ๊ฒฐ๊ณผ๋ฅผ client ์—๊ฒŒ ๋ณด๋‚ธ๋‹ค application โ€ขinterpre t โ€ขexecute SQL โ€ขreturn results process process process Client Server Server INFORMIX User 39
  • 40. Database Server ์˜ ๊ตฌ์„ฑ ์š”์†Œ ๋น ๋ฅธ access ๋ฅผ ์œ„ํ•˜์—ฌ disk Shared Memory ๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ ๋ฅผ cache ํ•˜๋Š” Lock, LRU, Buffer Pool, Resident Portion Logical log buffer, ์˜์—ญ ์‚ฌ์šฉ์ž ์„ธ์…˜ ๊ด€ Physical Log Buffer.. Virtual Message ๋ฆฌ MT, Sort, client ์™€ Portion Portion server ๊ฐ„์˜ ํ†ต Session, Procedure, Dictionary, ์‹  ์˜์—ญ ๋ฉ”๋ชจ๋ฆฌ์™€ ๋””์Šค ํฌ ๋ฐ์ดํ„ฐ์˜ ๋™ Big buffer, Global.. ํ™˜๊ฒฝ๋ณ€์ˆ˜ : INFORMIXSERVER, INFORMIXDIR, ๊ธฐํ™” ์ž‘์—… PATH checkpoin t Processes Chunk Disk Page V.P ๋Š” ์ž์ฒด์ ์œผ๋กœ Extent thread ๋ฅผ Tblspace scheduling ํ•˜๊ณ  Dbspace ์‹คํ–‰ํ•œ๋‹ค Blobspace Virtual Processors Smart Blobspace (CPU, PIO, LIO, AIO, ADT, MSC, SHM, Physical Log, Logical Log TLI, SOC, ADM, OPT, JVP..) INFORMIX User 40
  • 41. ๋ฌผ๋ฆฌ์ ์ธ ์ €์žฅ ๊ณต๊ฐ„ ๏ถ Page ๏ต IDS ์˜ ๊ธฐ๋ณธ์ ์ธ I/O ์˜ ๋‹จ์œ„ ๏ต CHUNK ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์ตœ์†Œ ๋‹จ์œ„ . ๏ต ๋ฉ”๋ชจ๋ฆฌ ๋ฒ„ํผ์˜ ์‚ฌ์ด์ฆˆ์™€ ๋™์ผ ๏ต Size : 2K ํ˜น์€ 4K ๏ถ Extent ๏ต Table ์ด๋‚˜ index, fragment ์— ์ €์žฅ์˜์—ญ์„ ํ• ๋‹นํ•˜๋Š” ๋‹จ์œ„๋กœ์„œ , ์—ฐ์†๋œ ํŽ˜ ์ด์ง€์˜ ๋ฌถ์Œ . ๏ถ Chunk ๏ต Informix ์— ํ• ๋‹น๋œ ์—ฐ์†๋œ disk ์˜ ๊ณต๊ฐ„ ๏ต Raw device ๋‚˜ cooked device(file) ๊ฐ€๋Šฅ INFORMIX User 41
  • 42. ๋…ผ๋ฆฌ์ ์ธ ์ €์žฅ๊ณต๊ฐ„ ๏ถ Tblspaces ๏ต Table ์— ํ• ๋‹น๋œ extent ์˜ ๋ฌถ์Œ ๏ต ํ•˜๋‚˜์˜ dbspace ์—๋งŒ ์กด์žฌ๊ฐ€๋Šฅ ๏ถ Dbspaces ๏ต Informix ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ์ €์žฅ ๊ณต๊ฐ„์œผ๋กœ ํ•˜๋‚˜ ์ด์ƒ์˜ Chunk ๋กœ ๊ตฌ์„ฑ๋จ . /dev/rvol1 Tab1 ์˜ tablespace dbspace Tab2 ์˜ tablespace /usr/ifmxdata /dev/rvol2 INFORMIX User 42
  • 43. ๋ฌผ๋ฆฌ์ ์ธ ๋””์Šคํฌ ๊ณต๊ฐ„ ํ• ๋‹น first_table create table first_table ( tab_id int , name char(20) , second_table address char(50) ) extent size 32 next size 16; create table second_table ( โ€ฆโ€ฆโ€ฆโ€ฆ tab_id int , name char(20) , address char(50) ) extent size 16 next size 8; page INFORMIX User 43
  • 44. ๋…ผ๋ฆฌ์  ๋””์Šคํฌ ๊ณต๊ฐ„ ํ• ๋‹น create database example1db; create database example2db in dbspace1; rootdbs create table first_table ( tab_id int , name char(20) , example1db address char(50) ) ; create table second_table ( dbspace1 tab_id int , name char(20) , example2db address char(50) ) in dbspace2; first_table dbspace2 second_table INFORMIX User 44
  • 45. SYSMASTER ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๏ถ Informix ์„œ๋ฒ„์˜ ์ •๋ณด๋ฅผ ์ €์žฅ ๏ถ Informix ์„œ๋ฒ„๊ฐ€ ์ดˆ๊ธฐํ™” ๋˜๋Š” ์‹œ์ ์— ์ž๋™ ์ƒ์„ฑ ๏ถ ๊ณต์œ ๋ฉ”๋ชจ๋ฆฌ์˜ ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ์ ‘๊ทผ (access) SELECT dbsnum, name, owner, nchuncks, is_temp, shared memory is_blobspace, flags SELECT partnum, dbsnum, FROM sysdbspaces owner, tabname FROM systabnamess process WHERE dbsname = โ€œDB ์ด๋ฆ„ โ€ SELECT name, owner, created, is_logging, sysmaster is_buff_log, is_ansi FROM sysdatabases SELECT sid, username, uid SELECT c.dbsnum, chknum, hostname, nxchknum, d.name, connected chksize, nfree FROM syssessions FROM syschunks c, sysdbspaces c WHERE c.dbsnum = d.dbsnum AND d.name = โ€œdbspace ์ด๋ฆ„โ€ INFORMIX User 45
  • 46. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์กฐ (1) ๏ถ ์‹œ์Šคํ…œ ์นดํƒ€๋กœ๊ทธ ํ…Œ์ด๋ธ” (system catalog table) ๏ต ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ตฌ์กฐ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ €์žฅ ๏ต ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ์‹œ์ ์— ์ž๋™์ ์œผ๋กœ ์ƒ์„ฑ ๏ต ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋‚ด์˜ ํ…Œ์ด๋ธ” ๊ตฌ์กฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋Š” ์‹œ์ ์— ์ž๋™์œผ๋กœ ์ˆ˜์ • ๏ถ ๋ฐ์ดํ„ฐ ํ…Œ์ด๋ธ” ๏ต ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•  ๋•Œ ๊ณ ๋ คํ•  ์‚ฌํ•ญ ๏‚ง dbspace : ํ…Œ์ด๋ธ”์ด ์ƒ์„ฑ๋  ์œ„์น˜ ๏‚ง extent/next size : ์—ฐ์†์œผ๋กœ ํ• ๋‹นํ•  ๊ณต๊ฐ„์˜ ํฌ๊ธฐ ๏‚ง lock mode : row ๋˜๋Š” page ๋‹จ์œ„์˜ locking ์‚ฌ์šฉ ๏ถ ์ธ๋ฑ์Šค ๏ต ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ์ •๋ณด๋ฅผ ์ €์žฅ ๏ต ์ธ๋ฑ์Šค์˜ ์ข…๋ฅ˜ ๏‚ง ๋ฐ์ดํ„ฐ ์ค‘๋ณต ์—ฌ๋ถ€์— ๋”ฐ๋ผ unique / duplicate ์ธ๋ฑ์Šค๋กœ ๊ตฌ๋ถ„ ๏‚ง ์—ฌ๋Ÿฌ ์ปฌ๋Ÿผ์„ ์ธ๋ฑ์Šค ํ‚ค๋กœ ์‚ฌ์šฉํ•˜๋Š” composite ์ธ๋ฑ์Šค ๏‚ง ์ธ๋ฑ์Šค ์ƒ์„ฑ ์‹œ ๋ฐ์ดํ„ฐ์˜ ๋ฌผ๋ฆฌ์  ์œ„์น˜๋ฅผ ์žฌ ์ •๋ ฌ์‹œํ‚ค๋Š” cluster ์ธ๋ฑ์Šค INFORMIX User 46
  • 47. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์กฐ (2) ๏ถ ์ œ์•ฝ์กฐ๊ฑด (Constraints) ๏ต Referential constraint : ํ…Œ์ด๋ธ”๊ฐ„์˜ integrity ๋ณด์žฅ ๏ต Default values : ์ž…๋ ฅ ๋‚ด์šฉ์ด ์—†์„ ๊ฒฝ์šฐ ์ง€์ •ํ•œ ๊ธฐ๋ณธ๊ฐ’ ์ €์žฅ ๏ต NOT NULL constraint : null ๊ฐ’์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ์ปฌ๋Ÿผ ์ง€์ • ๏ต Check constraint : ์ž…๋ ฅ , ์ˆ˜์ •์‹œ ํ—ˆ์šฉํ•˜๋Š” ์ปฌ๋Ÿผ ๊ฐ’์„ ์ง€์ • ๏ต Unique constraint : ์ปฌ๋Ÿผ๊ฐ’์ด ํ…Œ์ด๋ธ”์•ˆ์—์„œ ์œ ์ผ ๏ถ ๋ทฐ (view) ํ…Œ์ด๋ธ” ๏ต ์‹ค์ œ ํ…Œ์ด๋ธ”์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฐ€์ƒ์˜ ํ…Œ์ด๋ธ” ๏ถ Stored Procedure ๏ต ์‚ฌ์šฉ์ž๊ฐ€ ์ •์˜ํ•œ ํ•จ์ˆ˜ ๏ต ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์•ˆ์— ์ €์žฅ๋˜๋Š” ๋กœ์ง ๏ถ Trigger ๏ต ํ…Œ์ด๋ธ”์— ์ด๋ฒคํŠธ ๋ฐœ์ƒ์‹œ ์ž๋™์ ์œผ๋กœ ์‹คํ–‰ INFORMIX User 47
  • 48. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์กฐ (3) ๏ถ dbschema utility ๏ต ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ตฌ์กฐ๋ฅผ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋Š” ์œ ํ‹ธ๋ฆฌํ‹ฐ ๏ต ์‚ฌ์šฉ๋ฒ• ๏‚ง dbschema -d <DB ์ด๋ฆ„ > ๏‚ง dbschema -d <DB ์ด๋ฆ„ > -t <table ์ด๋ฆ„ > ๏‚ง dbschema -d <DB ์ด๋ฆ„ > -s <synonym ์ด๋ฆ„ > ๏‚ง dbschema -d <DB ์ด๋ฆ„ > -f <procedure ์ด๋ฆ„ > ๏‚ง table ์ด๋ฆ„ , synonym ์ด๋ฆ„ , procedure ์ด๋ฆ„ ๋Œ€์‹  โ€œ allโ€ ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ง€์ •ํ•œ ๋ฐ์ด ํ„ฐ๋ฒ ์ด์Šค ๋‚ด์˜ ๋ชจ๋“  table, synonym, procedure ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค ๏‚ง ์˜ต์…˜๋’ค์— ํŒŒ์ผ ์ด๋ฆ„์„ ๋ช…์‹œํ•˜๋ฉด ์‹คํ–‰๊ฒฐ๊ณผ๊ฐ€ ํŒŒ์ผ๋กœ ์ €์žฅ๋œ๋‹ค ๏‚ง -ss ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•˜๋ฉด ํ…Œ์ด๋ธ”์˜ lock mode, extent, space ์ •๋ณด ๋“ฑ์„ ์ž์„ธํžˆ ์ถœ ๋ ฅํ•œ๋‹ค . INFORMIX User 48
  • 49. SQL ์„ ์ด์šฉํ•œ ์งˆ์˜ ๋ฐฉ๋ฒ• ๏ƒผ SQL ์งˆ์˜ ์ž‘์„ฑ ๋ฐฉ๋ฒ• ๏ƒผ DML ๋ฌธ์˜ ์ข…๋ฅ˜ ๏ƒผ SELECT ๏ƒผ SELECT ์˜ ์˜ˆ ๏ƒผ SQL ์‹คํ–‰ ๊ฒฝ๋กœ ํ™•์ธ ๏ƒผ INSERT, UPDATE, DELETE ๏ƒผ Concurrency Control ๏ƒผ SPL ๏ƒผ SPL ์ƒ์„ฑ ๋ฐ ์‹คํ–‰ ๏ƒผ SPL ๊ตฌ๋ฌธ ๏ƒผ Trigger
  • 50. SQL ์งˆ์˜ ์ž‘์„ฑ ๋ฐฉ๋ฒ• ๏ถ ๊ตฌ๋ฌธ ( ๊ตฌ๋ฌธ , ํ…Œ์ด๋ธ”์ด๋ฆ„ , ์ปฌ๋Ÿผ์ด๋ฆ„๋“ฑ ..) ์€ ๋Œ€ ์†Œ๋ฌธ์ž ์ƒ๊ด€ ์—†๋‹ค . ๏ถ ์งˆ์˜์˜ ๋‚ด์šฉ์ด ์•„๋‹Œ ์ฃผ์„์˜ ๊ฒฝ์šฐ ๏ต ์ค„๋‹จ์œ„๋กœ๋Š” โ€œ --โ€ ๋ฅผ ์ด์šฉํ•˜๊ณ  ๏ต ๋‹จ๋ฝ๋‹จ์œ„๋กœ๋Š” โ€œ { }โ€ ๋ฅผ ์ด์šฉํ•œ๋‹ค . ๏ถ ๋ฌธ์ž๋ฅผ ์ž…๋ ฅํ•˜๊ฑฐ๋‚˜ , ๋น„๊ตํ• ๋•Œ์—๋Š” ์ธ์šฉ๋ถ€ํ˜ธ๊ฐ€ ํ•„์š”ํ•˜๋‹ค . ๏ถ ์กฐ๊ฑด์˜ ๋Œ€์ƒ์ด๋˜๋Š” ๋ฌธ์ž์—ด์˜ ๊ฒฝ์šฐ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ณ„ํ•œ๋‹ค . ๏ต โ€œCAโ€ ,โ€caโ€, โ€œCaโ€ ๋Š” ๋ชจ๋‘ ๋‹ค๋ฅด๋‹ค . ๏ถ ํ•œ ๋ฌธ์žฅ์€ โ€œ ;โ€ ๋กœ ๋๋‚œ๋‹ค . INFORMIX User 50
  • 51. DML ๋ฌธ์˜ ์ข…๋ฅ˜ ๏ถ SELECT ๏ต ํ…Œ์ด๋ธ”๋‚ด์˜ ์ž๋ฃŒ๋ฅผ ๊ฐ€์ ธ์˜ด . ๏ต Row, column ๋‹จ์œ„ ๏ถ INSERT ๏ต ํ…Œ์ด๋ธ”๋‚ด์— ์ƒˆ๋กœ์šด ์ž๋ฃŒ๋ฅผ ์ž…๋ ฅ ๏ต Row ๋‹จ์œ„ ๏ถ UPDATE ๏ต ํ…Œ์ด๋ธ”๋‚ด์˜ ์ž๋ฃŒ๋ฅผ ๊ฐฑ์‹  ๏ต Column ๋‹จ์œ„ ๏ถ DELETE ๏ต ํ…Œ์ด๋ธ”๋‚ด์˜ ์ž๋ฃŒ๋ฅผ ์‚ญ์ œ ๏ต Row ๋‹จ์œ„ INFORMIX User 51
  • 52. SELECT ๏ถ ๋ฌธ๋ฒ• Select ๊ฐ€์ ธ์˜ฌ ์ปฌ๋Ÿผ ๋ฆฌ์ŠคํŠธ From ํ…Œ์ด๋ธ” ์ด๋ฆ„ Where ๊ฐ€์ ธ์˜ฌ ์กฐ๊ฑด Group by ๊ทธ๋ฃน์œผ๋กœ ๋งŒ๋“ค ๋Œ€์ƒ ์ปฌ๋Ÿผ Having ๊ทธ๋ฃน๋‚ด์˜ ๊ฐ€์ ธ์˜ฌ ์กฐ๊ฑด Order by ์ •๋ ฌ ๊ธฐ์ค€ ์ปฌ๋Ÿผ Into temp ์ž„์‹œํ…Œ์ด๋ธ”์˜ ์ด๋ฆ„ INFORMIX User 52
  • 53. Select ์˜ ์˜ˆ (1) SYNTAX SELECT * FROM customer; Select * From table_name ; S ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ์ปฌ๋Ÿผ์„ ๊ฐ€์ ธ์˜จ๋‹ค . SYNTAX SELECT distinct customer_num Select distinct ์ปฌ๋Ÿผ์ด๋ฆ„ FROM orders From table_name ; ๏ƒ ํ…Œ์ด๋ธ”์˜ ํŠน์ • ์ปฌ๋Ÿผ์ค‘ ์œ ์ผํ•œ ๊ฐ’๋งŒ์„ ๊ฐ€์ ธ ์˜จ๋‹ค . INFORMIX User 53
  • 54. Select ์˜ ์˜ˆ (2) SYNTAX SELECT phone[2,3] FROM Select column [ first, last ] customer; From table_name ; Output : Phone ๏ƒ ํ…Œ์ด๋ธ”์˜ ํŠน์ • ์ปฌ๋Ÿผ์˜ first ๋ถ€ํ„ฐ last ๊นŒ 08 ์ง€๋ฅผ 11 ๊ฐ€์ ธ์˜จ๋‹ค . 12 SYNTAX SELECT substr(phone,2,3) Select substr(column,first,n) FROM customer; From table_name ; Output : (expression) ๏ƒ ํ…Œ์ด๋ธ”์˜ ํŠน์ • ์ปฌ๋Ÿผ์˜ first ๋ถ€ํ„ฐ n ๊ฐœ์˜ ๋ฌธ์ž๋ฅผ 789 ๊ฐ€์ ธ์˜จ๋‹ค . 822 328 INFORMIX User 54
  • 55. Select ์˜ ์˜ˆ (3) โ€“ where ์กฐ๊ฑด ์  ์šฉ SYNTAX SELECT stock_num, manu_code, unit Select . . . FROM stock From . . . WHERE unit != โ€˜caseโ€™; Where [ ์กฐ๊ฑด ] ] ํŠน์ • row ๋ฅผ ๊ฐ€์ ธ์˜ด . ๏ƒ  stock ํ…Œ์ด๋ธ” ์ค‘ unit ์ปฌ๋Ÿผ ๊ฐ’์ด case ๏ƒ join ์˜ ์กฐ๊ฑด ์ธ ๊ฒƒ๋งŒ ๊ฐ€์ ธ์˜จ๋‹ค . SELECT stock_num, manu_code, unit FROM stock WHERE unit != โ€˜caseโ€™; ๏ƒ  stock ํ…Œ์ด๋ธ” ์ค‘ unit ์ปฌ๋Ÿผ ๊ฐ’์ด case ๊ฐ€ ์•„๋‹Œ ๊ฒƒ๋งŒ ๊ฐ€์ ธ์˜จ๋‹ค . INFORMIX User 55
  • 56. Select ์˜ ์˜ˆ (3-1) โ€“ where ์กฐ๊ฑด ์ ์šฉ SYNTAX Select . . . SELECT * FROM customer From . . . WHERE customer_num in Where ์ปฌ๋Ÿผ in ( ๊ฐ’ , ๊ฐ’ . . . ); (118,114,106); ๏ƒ ํ…Œ์ด๋ธ”์˜ ์ปฌ๋Ÿผ์ด ๊ฐ’๋“ค์ค‘์— ์žˆ๋‹ค๋ฉด ๋ชจ๋‘ ๊ฐ€์ ธ์˜จ๋‹ค . SYNTAX Select . . . SELECT * FROM stock From . . . WHERE unit_price between 20.00 and Where ์ปฌ๋Ÿผ between A and B; 30.00; . ํ…Œ์ด๋ธ”์˜ ์ปฌ๋Ÿผ์ด A ์™€ B ์‚ฌ์ด์ธ๊ฒƒ์„ ๊ฐ€์ ธ์˜จ๋‹ค . INFORMIX User 56
  • 57. Select ์˜ ์˜ˆ (3-2) โ€“ where ์กฐ๊ฑด ์ ์šฉ SYNTAX Select . . . SELECT * FROM customer From . . . WHERE address2 is null; Where ์ปฌ๋Ÿผ is null ; S ํ…Œ์ด๋ธ”์˜ ์ปฌ๋Ÿผ์ด null ๊ฐ’์ธ๊ฒƒ์„ ๊ฐ€์ ธ์˜จ๋‹ค . SYNTAX Select . . . SELECT * FROM customer From . . . WHERE address2 is not null; Where ์ปฌ๋Ÿผ is not null ; . ํ…Œ์ด๋ธ”์˜ ์ปฌ๋Ÿผ์ด null ๊ฐ’์ด ์•„๋‹Œ๊ฒƒ์„ ๊ฐ€์ ธ์˜จ๋‹ค . INFORMIX User 57
  • 58. Select ์˜ ์˜ˆ (3-3) โ€“ where ์กฐ๊ฑด ์ ์šฉ SYNTAX Select . . . SELECT * FROM customer From . . . WHERE phone[1,3] matches โ€˜415โ€™; Where ์ปฌ๋Ÿผ matches โ€˜* ๊ฐ’ *โ€™; SELECT * FROM customer WHERE company matches S ํ…Œ์ด๋ธ”์˜ ์ปฌ๋Ÿผ์— ๊ฐ’์„ ํฌํ•จํ•œ ๊ฒƒ์„ ๊ฐ€์ ธ์˜จ๋‹ค . โ€˜*City*โ€™; SYNTAX Select . . . SELECT customer_num , company From . . . FROM customer Where ์ปฌ๋Ÿผ like โ€˜% ๊ฐ’ %โ€™; WHERE company like โ€˜City%โ€™; . ํ…Œ์ด๋ธ”์˜ ์ปฌ๋Ÿผ์— ๊ฐ’์„ ํฌํ•จํ•œ ๊ฒƒ์„ ๊ฐ€์ ธ์˜จ๋‹ค . INFORMIX User 58
  • 59. Select ์˜ ์˜ˆ (4) โ€“ ์ •๋ ฌ SYNTAX Select . . . SELECT stock_num, manu_code From . . . FROM stock Order by ์ปฌ๋Ÿผ ; ORDER BY stock_num; ๏ƒ  stock ํ…Œ์ด๋ธ”์˜ row ๋ฅผ stock_num ์ˆœ์„œ๋กœ ๊ฐ€์ ธ์˜จ๋‹ค . SELECT stock_num, manu_code FROM stock ORDER BY stock_num desc; ๏ƒ  stock ํ…Œ์ด๋ธ”์˜ row ๋ฅผ stock_num ๋‚ด๋ฆผ ์ˆœ์„œ๋กœ ๊ฐ€์ ธ์˜จ๋‹ค . INFORMIX User 59
  • 60. Select ์˜ ์˜ˆ (5) โ€“ ์กฐ๊ฑด์‹์˜ ์‚ฌ์šฉ SYNTAX CASE SELECT title, CASE movie_type WHEN condition1 THEN result1 WHEN 1 THEN โ€˜HORRORโ€™ WHEN condition2 THEN result2 WHEN 2 THEN โ€˜COMEDYโ€™ . . . WHEN 3 THEN โ€˜ROMANCEโ€™ ELSE result n WHEN 4 THEN โ€˜WESTERNโ€™ END ELSE โ€˜UNCLASSIFIEDโ€™ END, S ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋‹ค๋ฅธ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค . our_cost FROM movie_titles; INFORMIX User 60
  • 61. Select ์˜ ์˜ˆ (5-1) โ€“ ์กฐ๊ฑด์‹์˜ ์‚ฌ ์šฉ SYNTAX SELECT fname, NVL(addr, โ€œAddress is missingโ€) NVL(value1, value2) as address FROM employees; ๏ƒ value1 ์ด null ๊ฐ’์ด๋ฉด value2 ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค . Input : fname address Peter 3318 Rockdale Paul NULL Output : fname address Peter 3318 Rockdale Paul Address is missing INFORMIX User 61
  • 62. Select ์˜ ์˜ˆ (5-2) โ€“ ์กฐ๊ฑด์‹์˜ ์‚ฌ ์šฉ SYNTAX SELECT DECODE DECODE(value1, value2, value3, (city, โ€œMenlo Parkโ€, โ€œlocalโ€, value4, . . . value n ) โ€œPalo Altoโ€, โ€œTall Treeโ€, city) city FROM customer; ๏ƒ value1 ์ด Input : Output : value2 ์ด๋ฉด value3 ์„ return ํ•˜๊ณ  , city city value4 ์ด๋ฉด value5 ๋ฅผ return ํ•˜๊ณ  , Menlo Park Local ์•„๋‹ˆ๋ฉด valuen ์„ return ํ•œ๋‹ค . Santa Clara Santa Clara Palo Alto Tall Tree San Francisco San Francisco INFORMIX User 62
  • 63. Select ์˜ ์˜ˆ (6) โ€“ function ์˜ ์‚ฌ ์šฉ SYNTAX UPDATE orders today SET order_date = TODAY current WHERE order_num = 1005; INSERT INTO orders VALUES (0, TODAY, 120, NULL, NULL, NULL); S ์˜ค๋Š˜ ๋‚ ์งœ๋ฅผ return ํ•œ๋‹ค . ๏ƒ today : ์—ฐ , ์›” , ์ผ CREATE TABLE new_acct ( ๏ƒ current : ์—ฐ , ์›” , ์ผ , ์‹œ , ๋ถ„ , ์ดˆ , ๊ฐ col1 int, col2 datetime year to day default current year to day ); DELETE FROM cust_calls WHERE res_dtime < CURRENT YEAR TO MINUTE; SELECT * FROM orders WHERE DAY(ord_date)<DAY(CURRENT); SELECT * FROM cust_calls WHERE call_dtime BETWEEN โ€˜1997-1-1 00:00:00โ€™ AND CURRENT; INFORMIX User 63
  • 64. Select ์˜ ์˜ˆ (6-1) โ€“ Algebraic SYNTAX SELECT * FROM orders ABS ( num_expression ) WHERE ABS(ship_charge) > 20; MOD ( dividend, divisor ) SELECT POW ( base, exponent ) MOD(today-mdy(1,1,year(today)),30) ROOT ( radicand, index ) default index:2 FROM orders; SELECT * FROM circle ROUND ( expr, factor ) default factor:0 WHERE (3.14 * POW(radius,2)) < SQRT ( sqrt_radicand ) 1000; TRUNC ( expr, factor ) default factor:0 SELECT ROOT(9) FROM square; SELECT ROOT(64,3) FROM cube; SELECT SQRT(9) FROM angles; INFORMIX User 64
  • 65. Select ์˜ ์˜ˆ (6-2) โ€“ Log,hex,length SYNTAX EXP (float_expression) SELECT EXP(3) FROM angles; SELECT LOGN(population) FROM history LOGN (float_expression) ORDER BY date; LOG10 (float_expression) SELECT LOG10(distance) +1 digits HEX (expression) FROM travel; LENGTH(expression) SELECT tabname, HEX(partnum) FROM systables; SELECT HeX(order_num + 1) FROM orders; SELECT LENGTH(fname) + LENGTH(lname), LENGTH(โ€˜How many bytes ?โ€™) FROM customer; INFORMIX User 65
  • 66. Select ์˜ ์˜ˆ (6-3) โ€“ time SYNTAX SELECT * FROM order DATE (non_date_expr) 1. WHERE DAY (date/datetime_expr) order_date<DATE(โ€˜12/31/99โ€™); MONTH (date/datetime_expr) 2. WHERE order_date < DATE(365); WEEKDAY (date/datetime_expr) 3. WHERE DAY(order_date) > DAY (CURRENT); YEAR (date/datetime_expr) SELECT order_num, MONTH(order_date) EXTEND (datetime_expr, first to last) FROM orders; MDY (month, day, year) SELECT * FROM orders WHERE WEEKDAY(paid_date) = WEEKDAY(CURRENT); SELECT order_num FROM orders WHERE YEAR(ship_date) < Date(365) = 12/31/1899+365day = 12/31/1900 YEAR(TODAY); WEEKDAY ๋Š” ์ผ์š”์ผ์„ 0 ์œผ๋กœ ์‹œ์ž‘ํ•˜์—ฌ ๊ฐ ์š”์ผ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค 0 : Sunday, 1 : Monday, โ€ฆ INFORMIX User 66
  • 67. Select ์˜ ์˜ˆ (6-4) โ€“ time SYNTAX SELECT TO_CHAR(begin_date, โ€˜%A %B %d, %Y %Rโ€™) FROM tab1; TO_DATE (String [,fmt] ) UPDATE tab1 TO_CHAR (String [,fmt] ) SET begin_date = TO_DATE (โ€œWednesday February 07, 01 14:17โ€, โ€œ%A %B %d, %Y %Rโ€); The full weekday name as defined %A Input : in the locale begin_date The full month name as defined 2001-02-07 14:17 %B in the locale The day of the month as a decimal Output : %d number begin_date Wednesday February 07, 01 14:17 %Y The year as a 4-digit decimal number %R The time in 24-hour notation INFORMIX User 67
  • 68. Select ์˜ ์˜ˆ (6-5) โ€“ trigonometric SYNTAX SELECT COS(degrees*180/3.14) COS/SIN/TAN (radian_expr) FROM anglestb1; ASIN/ACOS/ ATAN (numeric_expr) SELECT SIN(radians) FROM anglestb1; ATAN2 (y,x) SELECT TAN(radians) FROM anglestb1; SELECT ACOS(-0.73) FROM anglestb1; SELECT ASIN(-0.73) FROM anglestb1; SELECT ATAN(-0.73) FROM anglestb1 WHERE angles > ATAN2(4,5); INFORMIX User 68
  • 69. Select ์˜ ์˜ˆ (6-6) โ€“ string SYNTAX TRIM ( source_expr) SELECT TRIM(c1), TRIM(TRAILING โ€˜#โ€™ FROM TRIM ({ LEADING|TRAILING|BOTH } c1), [trim_expr] FROM source_expr) TRIM(LEADING FROM c1) TRIM ( trim_expr FROM source_expr) FROM tab; UPDATE c1 = โ€˜xyzโ€™ FROM tab WHERE LENGTH(TRIM(c1))=5; SELECT c1, TRIM(LEADING โ€˜#โ€™ FROM TRIM(TRAILING โ€˜%โ€™ FROM โ€˜###abc %%%โ€™)) FROM tab; INFORMIX User 69
  • 70. Select ์˜ ์˜ˆ (6-7) โ€“ string SYNTAX SELECT REPLACE(โ€˜Mighxzy xzimeโ€™,โ€™xzโ€™,โ€™tโ€™) REPLACE(string,old [,new] ) FROM mytable; Output : ๏ƒ string ์˜ old ๊ฐ’์„ new ๋กœ ๋Œ€์ฒดํ•œ๋‹ค . (constant) Mighty time INFORMIX User 70
  • 71. Select ์˜ ์˜ˆ (6-8) โ€“ string SYNTAX SELECT LPAD(โ€˜Here we areโ€™,16,โ€™-_โ€™ ) FROM mytable; LPAD(string,length [,pad] ) SELECT RPAD(โ€˜Where are youโ€™,18,โ€™?!โ€™) RPAD(string,length [,pad] ) FROM mytable; Output : (constant) -_-_-Here we are W ์™ผ์ชฝ์ด๋‚˜ ์˜ค๋ฅธ์ชฝ์— ํŠน์ • ๋ฌธ์ž๋ฅผ ์ฑ„์›Œ Length ๋งŒํผ์˜ ๋ฌธ์ž์—ด์„ ๋งŒ๋“ ๋‹ค . (constant) Where are you?!?!? INFORMIX User 71
  • 72. Select ์˜ ์˜ˆ (6-9) โ€“ string SYNTAX SELECT city, LOWER(city), UPPER(city), UPPER (column or string) INITCAP(city) LOWER(column or string) FROM weather INITCAP (column or string) WHERE UPPER(city) = โ€œSUNNYVALEโ€; Output : city ๏ƒ UPPER : ๋ชจ๋‘ ๋Œ€๋ฌธ์ž๋กœ sunnyVale ๏ƒ LOWER : ๋ชจ๋‘ ์†Œ๋ฌธ์ž๋กœ ๏ƒ INITCAP : ์ฒ˜์Œ ๋ฌธ์ž๋งŒ ๋Œ€๋ฌธ์ž๋กœ city (constant) (constant) (constant) sunnyVale sunnyvale SUNNYVALE Sunnyvale INFORMIX User 72
  • 73. Select ์˜ ์˜ˆ (6-10) โ€“ aggregate SYNTAX SELECT count(*) FROM stock; COUNT(*) SELECT sum(total_price) FROM stock; AVG ( [DISTINCT|UNIQUE] column) SELECT city,state,count(*) MAX ( [DISTINCT|UNIQUE] column) FROM customer MIN ( [DISTINCT|UNIQUE] column) GROUP BY city,state; SUM ( [DISTINCT|UNIQUE] column) SELECT order_num,sum(total_price) FROM items COUNT([DISTINCT|UNIQUE] column) GROUP BY order_num; RANGE (expr) STDEV (expr) VARIANCE (expr) INFORMIX User 73
  • 74. Select ์˜ ์˜ˆ (7) โ€“ group by,having SYNTAX SELECT order_num,sum(total_price) SELECT . . . FROM items FROM . . . GROUP BY order_num GROUP BY ์ปฌ๋Ÿผ HAVING COUNT(*) > 2; HAVING ์กฐ๊ฑด ; H ๊ธฐ์ค€ ์ปฌ๋Ÿผ์— ์˜ํ•ด ๋งŒ๋“ค์–ด์ง„ group ์•ˆ์—์„œ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๊ทธ๋ฃน์˜ ๊ฒฐ๊ณผ๋งŒ์„ ๊ฐ€์ ธ์˜จ๋‹ค . INFORMIX User 74
  • 75. Select ์˜ ์˜ˆ (8) โ€“ HINT ์˜ ์‚ฌ์šฉ ๏ถ Optimizer Directive (HINT) ๋ž€ ? ๏ต SQL ์„ ์–ด๋– ํ•œ ๋ฐฉ์‹์œผ๋กœ ์‹คํ–‰ํ•  ๊ฒƒ์ธ๊ฐ€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” optimizer ์—๊ฒŒ ์ฃผ๋Š” ์ง€ ์‹œ์ž . ๏ต Index ์˜ ์‚ฌ์šฉ , join ๋ฐฉ๋ฒ• ๋“ฑ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค . ๏ถ ๋ฌธ๋ฒ• ๏ต ๊ทธ ์ค„์˜ ๋๊นŒ์ง€๊ฐ€ DIRECTIVE ์ผ๋•Œ ๏ƒ  โ€œ--+โ€ ๋กœ ์‹œ์ž‘ ๏ต ์—ฌ๋Ÿฌ ์ค„ ํ˜น์€ ๊ทธ ์ค„์˜ ์ผ๋ถ€๊ฐ€ DIRECTIVE ์ผ๋•Œ ๏ƒ {+ } ๋กœ ๋ฌถ์Œ INFORMIX User 75
  • 76. Select ์˜ ์˜ˆ (8-1) โ€“ access method SYNTAX SELECT --+ INDEX(e salary_indx) --+ INDEX name, salary ( {table|view|synonym|alias} FROM emp e index[,index] ) WHERE e.dno = 1 AND e.salary > 50000; W ํŠน์ • ํ…Œ์ด๋ธ”์— ๋Œ€ํ•ด ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์งˆ์˜ํ•˜๋„๋ก ํ•จ . SYNTAX SELECT --+ AVOID_INDEX(e salary_indx) --+ AVOID_INDEX name, salary ( {table|view|synonym|alias} FROM emp e index[,index] ) WHERE e.dno = 1 AND e.salary > 50000; S ํŠน์ • ํ…Œ์ด๋ธ”์— ๋Œ€ํ•ด ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋„๋ก ์งˆ์˜ํ•˜๋„๋ก ํ•จ . INFORMIX User 76
  • 77. Select ์˜ ์˜ˆ (8-2) โ€“ access method SYNTAX SELECT {+ FULL(e) } name, salary --+ FULL FROM emp e ( {table|view|synonym|alias} ) WHERE e.dno = 1 AND e.salary > 50000; W ํŠน์ • ํ…Œ์ด๋ธ”์— ๋Œ€ํ•ด full scan ํ•˜์—ฌ ์งˆ์˜ํ•˜๋„๋ก ํ•จ . SYNTAX SELECT {+ AVOID_FULL(e), --+ AVOID_FULL INDEX(e salary_indx) } ( {table|view|synonym|alias} ) name, salary FROM emp e WHERE e.dno = 1AND e.salary > 50000; S ํŠน์ • ํ…Œ์ด๋ธ”์— ๋Œ€ํ•ด full scan ํ•˜์ง€ ๋ง๊ณ  ์งˆ์˜ํ•˜๋„๋ก ํ•จ . INFORMIX User 77
  • 78. Select ์˜ ์˜ˆ (8-3) โ€“ Join Order SYNTAX SELECT --+ ORDERED --+ ORDERED name, title, dept FROM dept, job, emp WHERE title = โ€œclerkโ€ ๏ƒ Join ์˜ ๋Œ€์ƒ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ Join ์˜ ์ˆœ์„œ๋ฅผ AND emp.dno = dept.dno from ์ ˆ ๋‹ค์Œ์˜ ํ…Œ์ด๋ธ” ์ˆœ์„œ๋Œ€๋กœ ํ•˜๋„๋ก ํ•œ๋‹ค . AND emp.job = job.job; INFORMIX User 78
  • 79. Select ์˜ ์˜ˆ (8-4) โ€“ Join Method SYNTAX SYNTAX --+ USE_NL --+ AVOID_NL ( {table|view|synonym|alias} ) ( {table|view|synonym|alias} ) ๏ƒ Join ์— ์žˆ์–ด์„œ Nested Loop Join ๋ฐฉ ๏ƒ Join ์— ์žˆ์–ด์„œ Nested Loop Join ์„ ์‚ฌ์šฉํ•˜์ง€ ๋ฒ•์„ ์•Š๋Š”๋‹ค . ์‚ฌ์šฉํ•œ๋‹ค . SYNTAX SYNTAX --+ USE_HASH --+ AVOID_HASH ( {table|view|synonym|alias} ( {table|view|synonym|alias} [/BUILD|/PROBE] ) [/BUILD|/PROBE] ) ๏ƒ Join ์— ์žˆ์–ด์„œ HASH Join ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค ๏ƒ  Join ์— ์žˆ์–ด์„œ HASH Join ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์ง€ . ์•Š๋Š”๋‹ค . INFORMIX User 79
  • 80. Select ์˜ ์˜ˆ (8-2) โ€“ Optimization Goal SYNTAX SELECT --+ FIRST_ROWS --+ FIRST_ROWS name, age --+ ALL_ROWS (default) FROM employee e, department d WHERE e.dept_no = d.dept_no; ๏ƒ Query Optimizer ๊ฐ€ ์งˆ์˜๋ฅผ ์ตœ์ ํ™” ํ• ๋•Œ SET OPTIMIZATION FIRST_ROWS; ์—, SELECT โ€ฆโ€ฆ ๊ทธ ๋ชฉ์ ์„ ์ฒ˜์Œ ๋ช‡๊ฐœ์˜ row ๋ฅผ ๋นจ๋ฆฌ ๊ฐ€ ์ ธ์˜ฌ ์ˆ˜ OPT_GOAL. ํŒŒ๋ผ๋งคํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ตœ์ ํ™” ๋ฐฉ๋ฒ•์„ ์žˆ๋„๋ก ์ตœ์ ํ™” ํ•˜๊ฑฐ๋‚˜ , ์ „์ฒด row ๋ฅผ ๋นจ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค ๋ฆฌ OPT_GOAL = -1 : ALL_ROWS ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋„๋ก ์ตœ์ ํ™” ํ•  ๊ฒƒ์ธ๊ฐ€๋ฅผ OPT_GOAL = 0 : FIRST_ROWS ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค . . ์ด ๋ฐฉ๋ฒ•์€ ์งˆ์˜์˜ ๋Œ€์ƒ์ด ์ „์ฒด๊ฐ€ ์•„๋‹Œ ์ผ๋ถ€๋ถ„์˜ ๋ฐ์ดํ„ฐ ๋งŒ์„ ๊ฐ€์ ธ์˜ค๋Š” โ€œ first nโ€ ๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉ๋ ๋•Œ ๊ฐ€์žฅ ์ข‹์€ ์„ฑ๋Šฅ์„ ๋‚ผ ์ˆ˜ ์žˆ๋‹ค , INFORMIX User 80
  • 81. Select ์˜ ์˜ˆ (8-2) โ€“ First N SYNTAX SELECT FIRST 10 name, salary SELECT FIRST n FROM emp ORDER BY salary DESC; O ์งˆ์˜์˜ ๊ฒฐ๊ณผ์ค‘ ์ฒ˜์Œ n ๊ฐœ์˜ row ๋ฅผ ๊ฐ€์ ธ์˜ด . INFORMIX User 81
  • 82. SQL ์‹คํ–‰ ๊ฒฝ๋กœ ํ™•์ธ ๏ถ SQL ๊ตฌ๋ฌธ์ด optimizing ๋œ ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค . ๏ต Set explain on; ๏ต ํ™•์ธํ•˜๊ณ ์ž ํ•˜๋Š” ๊ตฌ๋ฌธ๋“ค . . . ๏ต Set explain off; ๏ถ UNIX ์˜ ๊ฒฝ์šฐ ํ˜„์žฌ ์ด ๊ตฌ๋ฌธ์„ ์‹คํ–‰ํ•œ application ์ด ์‹คํ–‰๋œ ๋””๋ ‰ํ† ๋ฆฌ ๋ฐ‘์— โ€œ sqexplain.outโ€ ์ด๋ผ๋Š” file ์— ๊ธฐ๋ก๋œ๋‹ค . ๏ถ NT ์˜ ๊ฒฝ์šฐ $INFORMIXDIR/sqexpln ๋””๋ ‰ํ† ๋ฆฌ ์•ˆ์— ํ˜„์žฌ ๊ตฌ๋ฌธ์„ ์‹คํ–‰ ํ•œ โ€œ user ์ด๋ฆ„ .outโ€ ์ด๋ผ๋Š” file ์— ๊ธฐ๋ก๋œ๋‹ค . ์˜ˆ> QUERY: ------ select * from customer Estimated Cost: 1 Estimated # of Rows Returned: 28 1) anchoi.customer: SEQUENTIAL SCAN INFORMIX User 82
  • 83. INSERT,UPDATE,DELETE ๏ถ ๋ฌธ๋ฒ• ๏ต Insert into ํ…Œ์ด๋ธ” ( ์ปฌ๋Ÿผ์ด๋ฆ„๋“ค ) values( ๊ฐ’๋“ค ); ๏‚ง ํ…Œ์ด๋ธ”์— ๊ฐ’๋“ค์„ ์ž…๋ ฅ ๏ต Update ํ…Œ์ด๋ธ” set ์ปฌ๋Ÿผ ( ๋“ค ) = ๊ฐ’ where ์กฐ๊ฑด ; ๏‚ง ํ…Œ์ด๋ธ”์ค‘ ์กฐ๊ฑด์— ๋งŒ์กฑํ•˜๋Š” row ์˜ ์ปฌ๋Ÿผ์„ ๊ฐ’์œผ๋กœ ๊ฐฑ์‹  ๏ต Delete ํ…Œ์ด๋ธ” Where ์กฐ๊ฑด ; ๏‚ง ํ…Œ์ด๋ธ”์— ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” row ๋ฅผ ์‚ญ์ œ INFORMIX User 83
  • 84. Concurrency Control ๏ถ DB ๋Š” ๋‹ค์ˆ˜์˜ ์‚ฌ์šฉ์ž์— ์˜ํ•ด ๊ณต์œ ๋จ . ๏ถ Read Concurrency - SELECT ๏ต 4 ๊ฐ€์ง€์˜ isolation level ๋กœ ์ ์šฉ . ๏‚ง Dirty Read ๏‚ง Committed Read ๏‚ง Cursor Stability ๏‚ง Repeatable Read ๏ถ Update Concurrency - INSERT, DELETE, UPDATE ๏ต Lock ์˜ ํฌ๊ธฐ๋กœ ์ ์šฉ ๏‚ง Type of Locking ๏ƒผ Exclusive ๏ƒผ Shared ๏ƒผ Update ๏‚ง Levels of locking ๏ƒผ Database, Table, Page, Row, Key INFORMIX User 84
  • 85. Concurrency Control - READ Dirty Read Committed Read server process server process Can lock be acquired? ๊ธฐ์กด์˜ lock ์„ check ํ•˜์ง€ ์•Š๊ณ  , ์ž์‹ ์ด lock ์„ ๊ฑธ์ˆ˜ ์žˆ๋Š”์ง€ check ํ•˜๊ณ  ์ฝ์–ด๋‚ด๋ฆผ . Data ๋ฅผ ์ฝ์–ด๋‚ด๋ฆผ . ๊ทธ๋Ÿฌ๋‚˜ ์ž์‹ ์€ lock ์„ ๊ฑธ์ง€ ์•Š์Œ . ์ด๋•Œ์— ์ž์‹ ๋„ lock ์„ ๊ฑธ์ง€ ์•Š๊ณ  ์ฝ์Œ . Cursor Stability Repeatable Read server process server process Shared lock Locks put on placed on row all rows examined Cursor ๊ฐ€ ํ˜„์žฌ fetch ํ•˜๊ณ  ์žˆ๋Š” row ์— ๋Œ€ํ•ด ์ž์‹ ์˜ process ๊ฐ€ ์งˆ์˜์—์„œ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋Š” Lock ์„ ๊ฑธ๊ณ  , ๋‹ค์Œ row ๋ฅผ fetch ํ• ๋•Œ์— ๋ชจ๋“  row ์— ๋Œ€ํ•ด lock ์„ ๊ฑธ๊ณ  ์ž‘์—…ํ•จ . Lock ์„ ํ•ด์ œํ•จ . INFORMIX User 85
  • 86. Concurrency Control - READ ๏ถ Isolation level ์˜ ์ ์šฉ ๏ต DB ์˜ ํ˜•ํƒœ ๋ณ„ default ๊ฐ€ ์กด์žฌ ํ•œ๋‹ค . ๏‚ง NO Logging DB : Dirty Read ๏‚ง Logging DB : Committed Read ๏‚ง ANSI DB : Repeatable Read ๏ต ๋”ฐ๋ผ์„œ default ์ด์™ธ๋กœ ๋ณ€๊ฒฝ์‹œ์—๋Š” ๋‹ค์Œ์˜ ๊ตฌ๋ฌธ์œผ๋กœ ์ ์šฉํ•˜์—ฌ์•ผ ํ•œ๋‹ค . ๏ต ํ•ด๋‹น ์„ธ์…˜์—๋งŒ ์ ์šฉ๋œ๋‹ค . ๏ถ ๊ตฌ๋ฌธ Set Isolation To Dirty Read; Set Isolation To Committed Read; Set Isolation To Cursor Stability; Set Isolation To Repeatable Read; INFORMIX User 86
  • 87. Concurrency Control - UPDATE Database Level Locking Table Level Locking database stores exclusive; lock table customer in share mode; stores customer ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๋Š” ๋ฐ์ดํ„ฐ select select ๋ฒ ์ด์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค update delete insert set isolation to dirty read customer lock table customer in exclusive mode; INFORMIX User 87
  • 88. Concurrency Control - Lock Mode ๏ถ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์— ์˜ํ•ด lock ์ด ๊ฑธ๋ ค ์žˆ๋Š” ์ž๋ฃŒ์— ์ ‘๊ทผํ• ๋•Œ์—๋Š” default ๋กœ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  error ๋ฅผ return. Set Lock Mode to Wait ; Set Lock Mode to Not Wait ; Set Lock Mode to Wait 20 ; set lock mode to wait 20 lock ์ด ํ•ด์ œ๋ ๋•Œ๊นŒ์ง€ 20 ์ดˆ ๋™์•ˆ ๊ธฐ๋‹ค๋ฆผ set lock mode to not wait set lock mode to wait lock ์ด ํ•ด์ œ๋ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ์ง€ lock ์ด ํ•ด์ œ๋ ๋•Œ๊นŒ์ง€ ์•Š๊ณ  ์ฆ‰์‹œ ์—๋Ÿฌ๋ฅผ ๋ฆฌํ„ดํ•จ ๋ฌดํ•œ์ • ๊ธฐ๋‹ค๋ฆผ INFORMIX User 88
  • 89. Concurrency Control - Page/Row ๏ถ ํ…Œ์ด๋ธ” ์ƒ์„ฑ ์‹œ default lock mode ๋Š” page ๋‹จ์œ„ create table row_lock_table ( id char(20), name char(20) ) lock mode row; alter table page_lock_table lock mode (page); page modify access page modify INFORMIX User 89
  • 90. SPL ๏ถ Stored Procedure Language ๏ถ Stored procedure ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋จ . ๏ถ Stored procedure ๏ต DB ๋‚ด์— ์ €์žฅ๋œ SQL ๋ฌธ๋“ค๊ณผ , SPL ๋กœ ์ž‘์„ฑ๋œ ๊ตฌ๋ฌธ์˜ ๋ฌถ์Œ . ๏ถ ์ฃผ๋กœ business logic ์„ DB ์— ์ €์žฅํ•˜๋Š” ์šฉ๋„๋กœ ์‚ฌ์šฉ๋จ . ๏ถ SQL ๋ฌธ์€ ๋ฏธ๋ฆฌ parsing ๋˜๊ณ  optimize ๋œ ์ƒํƒœ๋กœ ํ•ด๋‹น DB ์˜ ์‹œ์Šคํ…œ ์นดํƒ€๋กœ๊ทธ ํ…Œ์ด๋ธ” (sysprocedures, sysprocbody, sysprocplan, sysprocauth) ์— ์ €์žฅ๋จ . INFORMIX User 90
  • 91. SPL - ๊ฐ„๋‹จํ•œ ์˜ˆ์ œ ๏ถ ์ž‘์„ฑ Stored procedure ์˜ ์ด๋ฆ„ ๋งค๊ฐœ ๋ณ€์ˆ˜์˜ ์ด๋ฆ„ ๋งค๊ฐœ ๋ณ€์ˆ˜์˜ type create procedure test_proc(name varchar(10)) insert into test_tab values(name); end procedure; ๏ถ ์‹คํ–‰ ๋งค๊ฐœ ๋ณ€์ˆ˜๋กœ ๋„˜์–ด ์˜จ ๊ฐ’์„ test_tab ์ด๋ผ๋Š” table ์— insert ํ•˜๋ผ๋Š” ๊ตฌ๋ฌธ execute procedure test_proc(โ€œannaโ€); INFORMIX User 91
  • 92. SPL - ์ฝ”๋“œ ๋‚ด์šฉ ๋ณด๊ธฐ ๏ถ DBSCHEMA utility dbschema -d <dbname> -f <procedure ์ด๋ฆ„ > sql.sql dbschema -d <dbname> -f all spl.sql ๏ถ System Catalog Table select data from sysprocedures d, sysprocbody b where datakey = โ€œTโ€ and d.procname = โ€œprocedure ์ด๋ฆ„โ€ and d.procid = b.procid INFORMIX User 92
  • 93. SPL ์ƒ์„ฑ ๋ฐ ์‹คํ–‰ - ๊ธฐ๋ณธ๊ตฌ์กฐ ๏ถ ๊ธฐ๋ณธ๊ตฌ์กฐ Stored procedure ์˜ ์ด๋ฆ„ ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ฌธ์žฅ ๋ธ”๋Ÿญ (statement block) create procedure raise_prices (per_cent int) update stock -- increase by percentage set unit_price = unit_price + (unit_price * (per_cent / 100 ) ); end procedure ์ฃผ์„ (comment) document โ€œusage : execute procedure raise_prices (xxx) โ€œ, โ€œxxx = percentage from 1 โ€“ 100 โ€œ document ์ ˆ์€ ์ƒ๋žต ๊ฐ€๋Šฅ with listing in โ€œwarn_fileโ€; ์ปดํŒŒ์ผ warning ์ €์žฅ execute procedure raise_prices (5); execute procedure db@servername:raise_prices(5) INFORMIX User 93
  • 94. SPL ์ƒ์„ฑ ๋ฐ ์‹คํ–‰ - ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ๋ฆฌ ํ„ด๊ฐ’ create procedure delete_order (p_order_num int default null ) returning int, int; default ๊ฐ’ define item_count int; select count(*) into item_count from items ๋งค๊ฐœ๋ณ€์ˆ˜ where order_num=p_order_num; delete from items where order_num = p_order_num; delete from orders where order_num = p_order_num;๋‘ ๊ฐœ์˜ ์ •์ˆ˜ ๋ฐ˜ํ™˜ ์˜ˆ์ • returning p_order_num, item_count; end procedure; ๋‘ ๊ฐœ์˜ ์ •์ˆ˜ ๋ณ€์ˆ˜ ๋ฐ˜ํ™˜ ๏ถ DBACCESS execute procedure delete_order (1001) ; ๏ถ ESQL/C EXEC SQL execute procedure delete_order(:p_order_num) into :p_order_num, :p_item_count; INFORMIX User 94
  • 95. SPL ์ƒ์„ฑ ๋ฐ ์‹คํ–‰ - ์ปค์„œ์‚ฌ์šฉ ๏ถ SPL ESQL/C EXEC SQL declare geti cursor for create procedure get_items() execute procedure get_items(); returning integer, char(3), integer; EXEC SQL open geti while(1) { define p_stock_no integer; EXEC SQL fetch geti define p_manu_code char(3); into :p_num, :p_code, :p_qty; define p_quantity integer; if (sqlca.sqlcode == 100) break; foreach } select stock_num, manu_code, quantity SQL close geti; EXEC into p_stock_no, p_manu_code, p_quantity from items return p_stock_no, p_manu_code, p_quantity with resume; end foreach; end procedure; ์ปค์„œ ์‚ฌ์šฉ foreach ๋ฌธ์•ˆ์—์„œ ๊ณ„์† ๋ฆฌํ„ด๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ํ•œ๋‹ค INFORMIX User 95
  • 96. SPL ์ƒ์„ฑ ๋ฐ ์‹คํ–‰ - ํ˜ธ์ถœ / ์ œ๊ฑฐ ๏ถ SQL ๋ฌธ์—์„œ ํ˜ธ์ถœ select * from orders where order_num = get_biggest_order(114); insert into old_orders execute procedure get_orders(114); ๏ถ SPL ์—์„œ ํ˜ธ์ถœ create procedure give_disconnect (p_customer_num integer) define p_order_num integer; call get_biggest_order (p_customer_num ) returning p_order_num; : end procedure ๏ถ SPL ์ œ๊ฑฐ drop procedure get_biggest_order; INFORMIX User 96
  • 97. SPL ๊ตฌ๋ฌธ - ๋ณ€์ˆ˜ ๏ถ SPL ๋‚ด๋ถ€์—์„œ ๋ณ€์ˆ˜ ์„ ์–ธ ๏ต define p_order_date date; ์œ ํšจํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž๋ฃŒํ˜• ๏ต define p_customer_num like orders.customer_num; ๏ต define global global_bar integer default 1; ๏ต define blob_var references text; ๋ช…์‹œํ•œ ํ…Œ์ด๋ธ” ์ปฌ๋Ÿผ์˜ ์ž๋ฃŒํ˜• ์„ธ์…˜ ์•ˆ์—์„œ ์ „์—ญ๊ฐ’์„ ๊ฐ€์ง„๋‹ค BLOB ์ž๋ฃŒํ˜• ๏ถ ๋ณ€์ˆ˜๊ฐ’ ํ• ๋‹น ๏ต let c = 10; let d = 5; ๏ต let p_order_date = today; ๏ต let a,b = 10,c+d; ๏ต let a,b = (select col_a, col_b from tab1 where col_c=10); ๏ต let a = proc_name(); ๏ต let a = c || d; INFORMIX User 97
  • 98. SPL ๊ตฌ๋ฌธ - ์กฐ๊ฑด์‹ ๏ถ ๊ตฌ๋ฌธ IF ์กฐ๊ฑด์‹ THEN ๋ฌธ์žฅ 1 ELIF ์กฐ๊ฑด์‹ THEN ๋ฌธ์žฅ 2 ELSE ๋ฌธ์žฅ 3 END IF ๏ถ ์กฐ๊ฑด์‹์˜ ์˜ˆ if exists (select order_num from orders where order_num = 1023) then : end if if p_total_price > all (select total_price from items where order_num = 1023) then : end if if p_customer_name matches โ€œA*โ€ then : end if INFORMIX User 98
  • 99. SPL ๊ตฌ๋ฌธ - ๋ฃจํ”„ ๏ถ FOREACH foreach select ship_charge into p_ship_charge from orders : end foreach; ๏ถ WHILE โ€ป ๋ฃจํ”„ ์ œ์–ด for i = 1 to 10 while i < nbr_rows if i = 5 then insert into test_tab values ( i ); continue for; elif i = 8 then let i = i + 1; exit for; end while end if ๏ถ FOR end for; for i = 1 to 10 step 2 : end for for i in (1,5,10,15) โ€ฆ end for for i in (1 to 20 step 5, 20 to 1 step โ€“5, 1,2,3,4,5) โ€ฆ end for INFORMIX User 99
  • 100. SPL ๊ตฌ๋ฌธ โ€“ dbinfo ์‚ฌ์šฉ ๏ถ serial ๊ฐ’ ๋ฐ˜ํ™˜ define ser int; insert into orders (order_num, order_date, customer_num) values (0, โ€œ04/01/99โ€, 102); let ser = dbinfo(โ€œsqlca.sqlerrd1โ€); ๏ถ ์ฒ˜๋ฆฌ๋œ ํ–‰์˜ ์ˆ˜ ๋ฐ˜ํ™˜ define num_rows int; delete from orders where customer_num = 104; let num_rows = dbinfo(โ€œsqlca.sqlerrd2โ€); INFORMIX User 100
  • 101. SPL ๊ตฌ๋ฌธ - ๊ธฐํƒ€ ๏ถ ์—…๋ฐ์ดํŠธ ์ปค์„œ define p_ship_date date; ์—…๋ฐ์ดํŠธ ์ปค์„œ์˜ ์ด๋ฆ„์„ ๋ช…์‹œํ•ด์•ผ ํ•œ๋‹ค begin work; foreach cur1 for select ship_date into p_ship_date from orders where order_date < today - 100 if p_ship_date is not null then ํ˜„์žฌ ์ปค์„œ๊ฐ€ ์˜คํ”ˆํ•˜๊ณ  ์žˆ๋Š” ํ–‰ delete from orders where current of cur1; end if end foreach; commit work; ์—…๋ฐ์ดํŠธ ๋œ ํ–‰์˜ lock ํ•ด์ œ ๏ถ OS ๋ช…๋ น์–ด ํ˜ธ์ถœ system โ€œecho โ€œโ€œDelete Operation Completedโ€โ€ | mail judyโ€ ; system โ€œmail โ€“s violation โ€ || usr1 || โ€œ โ€ || usr2 || โ€œ< vio.fileโ€; INFORMIX User 101
  • 102. Trigger ๏ถ ํŠธ๋ฆฌ๊ฑฐ (Trigger) ๋Š” ์–ด๋– ํ•œ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„๋•Œ ์ž๋™์ ์œผ๋กœ SQL ๋ฌธ์„ ์‹คํ–‰ํ•˜๋„๋ก ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฉ”์ปค๋‹ˆ์ฆ˜ ๏ถ ํŠธ๋ฆฌ๊ฑฐ ์ด๋ฒคํŠธ (event) ๋Š” ํŠน์ • ํ…Œ์ด๋ธ”์— ๋Œ€ํ•ด INSERT, UPDATE, DELETE ์™€ ๊ฐ™์€ SQL ๋ฌธ ๏ถ ํŠธ๋ฆฌ๊ฑฐ ์•ก์…˜ (action) ์€ INSERT, UPDATE, DELETE ๋ฐ EXECUTE PROCEDURE ๋ฌธ Create Trigger Trigger name Trigger Trigger Trigger event action correlation name INFORMIX User 102
  • 103. Trigger - Event / Action ๏ถ ํŠธ๋ฆฌ๊ฑฐ ์ด๋ฒคํŠธ (event) ๏ต INSERT ON ํ…Œ์ด๋ธ”์ด๋ฆ„ ๏ต DELETE ON ํ…Œ์ด๋ธ”์ด๋ฆ„ event ๏ต UPDATE ON ํ…Œ์ด๋ธ”์ด๋ฆ„ update orders ๏ต UPDATE OF ์ปฌ๋Ÿผ์ด๋ฆ„ ON ํ…Œ์ด๋ธ”์ด๋ฆ„ set ship_instruct = โ€œexpressโ€ ๏ถ ํŠธ๋ฆฌ๊ฑฐ ์•ก์…˜ (action) where customer_num = ๏ต BEFORE ( SQL ๋ฌธ ) 106; ๏ต FOR EACH ROW ( SQL ๋ฌธ ) ๏ต AFTER ( SQL ๋ฌธ ) 106 ๏ถ ์˜ˆ์ œ 106 create trigger test1 update on orders action before (execute procedure check_permission()) execute check_permission for each row (execute procedure log_chg()) update 1 row after (execute procedure log_total()); execute log_chg update 1 row execute log_chg execute log_total INFORMIX User 103
  • 104. Trigger - referencing ๏ถ ํŠธ๋ฆฌ๊ฑฐ ๋™์ž‘ ์ „ , ํ›„์˜ ๊ฐ’์„ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•˜์—ฌ correlation name ์„ ๋ถ€์—ฌ ๏ถ NEW, OLD ๋Š” ํ‚ค์›Œ๋“œ๋กœ DELETE ์ด๋ฒคํŠธ์—์„œ๋Š” NEW ๊ฐ€ ์‚ฌ์šฉ ๋  ์ˆ˜ ์—† ๊ณ  , INSERT ์ด๋ฒคํŠธ์—์„œ๋Š” OLD ๊ฐ€ ์‚ฌ์šฉ ๋  ์ˆ˜ ์—†๋‹ค . ๏ถ ์˜ˆ์ œ create trigger items_upd update of total_price on items referencing new as post old as pre for each row (update orders set order_price = order_price + post.total_price = pre.total_price where order_num = post.order_num ); INFORMIX User 104
  • 105. Trigger - when ๏ถ ํŠธ๋ฆฌ๊ฑฐ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒ๋˜์—ˆ์„๋•Œ WHEN ์ ˆ์— ์กฐ๊ฑด์ด ๋งŒ์กฑํ•˜๋Š”์ง€ ๋จผ์ € ๊ฒ€ ์‚ฌํ•œ ํ›„ ์กฐ๊ฑด์ด ๋งž์„ ๋•Œ์— ํŠธ๋ฆฌ๊ฑฐ ์•ก์…˜์ด ๋™์ž‘ํ•œ๋‹ค . ๏ถ ์˜ˆ์ œ create trigger ins_cust_calls insert on cust_calls referencing new as post for each row when (post.call_code = โ€œBโ€) ( insert into warn_billing values (post.customer_num) ); INFORMIX User 105
  • 106. DB admin ์ž‘์—… ๏ƒผ DB admin ์ž‘์—…์ด๋ž€ ๏ƒผ DB ์˜ ์ƒ์„ฑ ๏ƒผ Table ์˜ ์ƒ์„ฑ ๏ƒผ Table ์˜ ๋ถ„ํ•  ๏ƒผ ๋ณด์•ˆ์˜ ์„ค์ • ๏ƒผ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ๋ณด์žฅ ๏ƒผ ์ธ๋ฑ์Šค์˜ ์ƒ์„ฑ ๏ƒผ ์งˆ์˜ ์ˆ˜ํ–‰์„ ์ตœ์ ํ™” ํ•ด์ฃผ๊ธฐ ์œ„ํ•œ ์ž‘์—… ๏ƒผ Data Migration
  • 107. DB admin ์ž‘์—…์ด๋ž€ ๏ถ DB admin ์ž‘์—…์ด๋ž€ ? ๏ต DB ์™€ ๊ด€๋ จ๋œ ์‚ฌํ•ญ์„ ๊ฒฐ์ •ํ•˜๊ณ  , ๋ณ€๊ฒฝํ•˜๋Š” ์ž‘์—… ๏ต DB ๋‚˜ table ์„ ์ƒ์„ฑํ•˜๋Š” ์ž‘์—… ๏ต ๋ณด์•ˆ์„ ์ ์šฉํ•˜๋Š” ์ž‘์—… ๏ต ๋ฐ์ดํ„ฐ์˜ ๋ฌด๊ฒฐ์„ฑ์„ ๋ณด์žฅํ•˜๋Š” ์ž‘์—… ๏ต ๋™์‹œ ์‚ฌ์šฉ์ž์— ๊ด€ํ•œ ์ œ์–ด ๏ต ์ธ๋ฑ์Šค์™€ ๊ด€๋ จ๋œ ์ž‘์—… ๏ต ์งˆ์˜ ์ˆ˜ํ–‰์„ ์ตœ์ ํ™”ํ•ด ์ฃผ๋Š” ์ž‘์—… ๏ต Data migration INFORMIX User 107
  • 108. DB ์˜ ์ƒ์„ฑ ๏ถ DB ์˜ ์ƒ์„ฑ์‹œ ๋‹ค์Œ์˜ ์‚ฌํ•ญ์„ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค . ๏ต DB ๋ฅผ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์–ด๋Š ์œ„์น˜์— ๋‘˜ ๊ฒƒ์ธ๊ฐ€ ๏‚ง DB ๊ฐ€ ์œ„์น˜ํ•  dbspace ๋ฅผ ์ง€์ •ํ•จ . ๏ต DB ๋Š” ์–ด๋–ค ํ˜•ํƒœ๋กœ ๋งŒ๋“ค๊ฒƒ์ธ๊ฐ€ ๏‚ง DB ์— ๋Œ€ํ•œ logging ์ž‘์—…์„ ํ•  ๊ฒƒ์ธ๊ฐ€๋ฅผ ๊ฒฐ์ • create database <DB ์ด๋ฆ„ > in <DB ๋ฅผ ์ €์žฅํ•  dbspace ์ด๋ฆ„ > ๏ƒ default: rootdbs with <DB ์˜ logging ๋ชจ๋“œ >; ๏ƒ  default : no logging ๏ต ์˜ˆ> create database test_db in dbspace1 with log; create database test_db with log; create database test_db in dbspace1 ; create database test_db in dbspace1 with buffered log; INFORMIX User 108
  • 109. Table ์˜ ์ƒ์„ฑ ๏ถ Table ์ƒ์„ฑ์‹œ ๋‹ค์Œ์˜ ์‚ฌํ•ญ์„ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค . ๏ต ์ปฌ๋Ÿผ์—๋Š” ์–ด๋–ค ์ž๋ฃŒํ˜•์„ ์‚ฌ์šฉํ•  ๊ฒƒ์ธ๊ฐ€ ๏ต ํ…Œ์ด๋ธ”์— ๋Œ€ํ•ด ๋ถ„ํ•  ํ•  ๊ฒƒ์ธ๊ฐ€ ๏ต ํ…Œ์ด๋ธ”์˜ ์œ„์น˜ ๏ต ์–ผ๋งˆ๋งŒํผ์˜ ๋””์Šคํฌ ๊ณต๊ฐ„์„ ํ• ๋‹นํ•  ๊ฒƒ์ธ๊ฐ€ ๏ต ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ lock ๋ชจ๋“œ create table < ํ…Œ์ด๋ธ”์ด๋ฆ„ >( ์ปฌ๋Ÿผ์ด๋ฆ„ ์ปฌ๋Ÿผ์ž๋ฃŒํ˜• ) in <dbspace ์ด๋ฆ„ > or < ๋ถ„ํ•  ๋ฐฉ๋ฒ•๋ฐ ์œ„์น˜ > extent size < ์ดˆ๊ธฐ์— ํ• ๋‹นํ•  ์˜์—ญ ํฌ๊ธฐ K ๋‹จ์œ„ : default ๋Š” 8page> next size < ์ฆ๊ฐ€๋ถ„์— ํ• ๋‹นํ•  ์˜์—ญ ํฌ๊ธฐ K ๋‹จ์œ„ : default ๋Š” 8page> lock mode <row or page : default ๋Š” page>; INFORMIX User 109
  • 110. Table ์˜ ๋ถ„ํ•  ๏ถ ํ•œ ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ dbspace ์— ๋ถ„ํ• ํ•œ๋‹ค ๏ถ ๋ณ‘๋ ฌ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ž…์ถœ๋ ฅ ํ•  ์ˆ˜ ์žˆ๋‹ค ๏ถ ์ž…์ถœ๋ ฅ์˜ ๋ถ€ํ•˜๋ฅผ ๊ท ๋“ฑํ•˜๊ฒŒ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ๋‹ค ๏ถ ๋ฐ์ดํ„ฐ์˜ ๊ฐ€์šฉ์„ฑ์„ ํ–ฅ์ƒ ์‹œํ‚จ๋‹ค ๏ถ ๋‹ค์–‘ํ•œ ๊ธฐ์ค€์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„ํ• ํ•  ์ˆ˜ ์žˆ๋‹ค ์ž…์ถœ๋ ฅ ๋ถ€ํ•˜ ๋ถ„์‚ฐ fragment1 scan thread table ๋ณ‘๋ ฌ ์Šค fragment2 scan thread ์บ” fragment3 scan thread INFORMIX User 110
  • 111. Table ์˜ ๋ถ„ํ•  - round robin create table roundtable ( col_1 serial, col_2 char(20), : ) fragment by round robin in dbspace1, dbspace2, dbspace3 extent size 10000 next size 3000 ; insert into roundtable(col_1, col_2) values (0, โ€˜aabbโ€™); insert into roundtable(col_1, col_2) values (0, โ€˜aabbโ€™); insert into roundtable(col_1, col_2) values (0, โ€˜aabbโ€™); insert into roundtable(col_1, col_2) values (0, โ€˜aabbโ€™); insert into roundtable(col_1, col_2) values (0, โ€˜aabbโ€™); insert into roundtable(col_1, col_2) values (0, โ€˜aabbโ€™); dbspace1 dbspace2 dbspace3 INFORMIX User 111
  • 112. Table ์˜ ๋ถ„ํ•  - Expression create table exprtable ( col_1 serial, col_2 char(20), : ) fragment by expression col_1 <= 100 and col_1 >= 1 in dbspace1, col_1 <= 200 and col_1 > 100 in dbspace2, remainder in dbspace3 ; insert into exprtable(col_1) values (50); insert into exprtable(col_1) values (700); insert into exprtable(col_1) values (120); dbspace1 dbspace2 dbspace3 INFORMIX User 112
  • 113. Table ์˜ ๋ถ„ํ•  - hash create table exprtable ( col_1 serial, col_2 char(20), : ) fragment by expression mod (col_1, 3) = 0 in dbspace1, mod (col_1, 3) = 1 in dbspace2, mod (col_1, 3) = 2 in dbspace3 ; insert into exprtable(col_1) values (17); insert into exprtable(col_1) values (34); insert into exprtable(col_1) values (66); dbspace1 dbspace2 dbspace3 INFORMIX User 113
  • 114. Table ์˜ ๋ถ„ํ•  - guidelines ๏ถ ๊ฐ€๊ธ‰์  remainder ์ ˆ์„ ์“ฐ์ง€ ์•Š๋„๋ก expression ์„ ๋งŒ๋“ ๋‹ค ๏ถ ์—ฌ๋Ÿฌ ๋””์Šคํฌ์— I/O ๋ฅผ ๋ถ„์‚ฐํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ณ ๋ คํ•œ๋‹ค ๏ถ expression ์€ ๊ฐ€๋Šฅํ•œํ•œ ๋‹จ์ˆœํ•œ ํ˜•ํƒœ์—ฌ์•ผ ํ•œ๋‹ค ๏ถ expression ์—์„œ ๊ฐ€์žฅ ์ œํ•œ์ ์ธ ์กฐ๊ฑด์ด ๋จผ์ € ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค ๏ถ ๋ฐ์ดํ„ฐ์˜ ๋ณ€ํ™˜์ด ํ•„์š”ํ•œ expression ์€ ํ”ผํ•œ๋‹ค ๏ถ ๋ฐ์ดํ„ฐ ๋กœ๋“œ ๋ฐ ์ „์ฒด ์กฐํšŒ๊ฐ€ ์ฃผ๋œ ๋ชฉ์ ์ด๋ผ๋ฉด round robin ์„ ์‚ฌ์šฉํ•œ๋‹ค ๏ถ ์ธ๋ฑ์Šค ๋˜ํ•œ fragment ๊ตฌ๋ฌธ์— ์˜ํ•ด ๋ถ„ํ•  ๋  ์ˆ˜ ์žˆ์ง€๋งŒ , ๊ฐ€๊ธ‰์  ๋ณ„๋„์˜ dbspace ์— fragment ๋˜์ง€ ์•Š์€ ํ˜•ํƒœ (detached index) ๋กœ ์ƒ์„ฑํ•œ๋‹ค create index idx_roundtable on roundtable(col_1) in dbspace4; ๏ถ ํ…Œ์ด๋ธ” ๋ถ„ํ• ์— ์˜ํ•œ ์ด๋“์ด ๊ทธ๋‹ค์ง€ ๋งŽ์ง€ ์•Š๋‹ค๋ฉด ๋ถ„ํ• ํ•˜์ง€ ์•Š๋Š”๋‹ค INFORMIX User 114
  • 115. ๋ณด์•ˆ์˜ ์„ค์ • ๏ถ ๋ณด์•ˆ์˜ ์ ์šฉ ๋ฐฉ๋ฒ• ๏ต ๊ถŒํ•œ ์ œํ•œ ๏ต View ์˜ ์‚ฌ์šฉ ๏ต Role ์˜ ์‚ฌ์šฉ ๏ถ ๊ถŒํ•œ์˜ ์ข…๋ฅ˜ ๏ต DB level : DBA,RESOURCE,CONNECT ๏ต Table,Column level : SELECT,INSERT,UPDATE,DELETE,ALTERโ€ฆ INFORMIX User 115
  • 116. ๋ณด์•ˆ์˜ ์„ค์ • - ๊ถŒํ•œ ์ œํ•œ ๏ถ ๊ถŒํ•œ ์„ค์ • ๋ฐฉ๋ฒ• ๏ต GRANT ๊ถŒํ•œ์ด๋ฆ„ <on ํ…Œ์ด๋ธ”์ด๋ฆ„ ( ์ปฌ๋Ÿผ์ด๋ฆ„ )> to user ์ด๋ฆ„ ; ๏ต REVOKE ๊ถŒํ•œ์ด๋ฆ„ <on ํ…Œ์ด๋ธ”์ด๋ฆ„ > from user ์ด๋ฆ„ ; ๏ต Table ์˜ ๊ฒฝ์šฐ ์ผ๋‹จ ๋ชจ๋“  ๊ถŒํ•œ์„ ๋บ๊ณ  ํ•˜๋‚˜ํ•˜๋‚˜ ์„ค์ •ํ•œ๋‹ค . ๏ถ ์˜ˆ GRANT DBA to user1; GRANT CONNECT to user2; REVOKE ALL ON tab1 from PUBLIC; GRANT SELECT ON tab1 to user2; GRANT DELETE,UPDATE,INSERT on tab1 to user1; GRANT SELECT(col1,col2) on tab2 to user2; INFORMIX User 116
  • 117. ๋ณด์•ˆ์˜ ์„ค์ • - view ์˜ ์‚ฌ์šฉ ๏ถ View ๋Š” ํ…Œ์ด๋ธ”์˜ ์ผ๋ถ€ ํ˜น์€ ๊ณ„์‚ฐ๋œ ๊ฐ’๋“ฑ์— ์„ค์ •๋  ์ˆ˜ ์žˆ๋‹ค . ๏ถ ์˜ˆ create view cust_seoul as select * from customer where city=โ€˜ ์„œ์šธโ€™ ; create view big_order_won as select total_price*1200 from orders where total_price > 10000; create view detail_info_cust as select company, order_num,total_price from customer,orders where customer.customer_num=orders.customer_num; INFORMIX User 117
  • 118. ๋ณด์•ˆ์˜ ์„ค์ • - role ์˜ ์‚ฌ์šฉ ๏ถ Role ์ด๋ž€ , ์‚ฌ์šฉ์ž์˜ ๊ทธ๋ฃน ๊ถŒํ•œ์˜ ์ œํ•œ์ด , ๊ฐœ์ธ๋ณ„๋กœ๊ฐ€ ์•„๋‹Œ ๊ทธ๋ฃน๋ณ„๋กœ ํ•ด์•ผํ•  ํ•„์š”๊ฐ€ ์žˆ์„๋•Œ์— ์“ฐ์ž„ . ๏ถ ๊ฐœ์ธ์€ ๊ฐœ์ธ์˜ ๊ถŒํ•œ์œผ๋กœ์˜ ์ž‘์—…๋„ ๊ฐ€๋Šฅํ•˜๊ณ  , role ์˜ ์ผ์›์œผ๋กœ์„œ์˜ ์ž‘์—… ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค ๏ถ ์˜ˆ Create role marketing; Create role sales; Grant marketing to user1,user2; Grant sales to user3,user4; ๏ถ ๋งŒ์ผ user1 ์ด marketing role ๋กœ์„œ ์ž‘์—…ํ•˜๋ ค๋ฉด ๋‹ค์Œ ๊ตฌ๋ฌธ์„ ์‹คํ–‰ํ•ด์•ผ ํ•จ. Set role marketing; INFORMIX User 118
  • 119. ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์˜ ๋ณด์žฅ (1) ๏ถ ๋ฐ์ดํ„ฐ๊ฐ’์— ๋Œ€ํ•œ ์†์„ฑ์„ ์ œํ•œ์ž (constraint) ๋ฅผ ํ†ตํ•ด ์ ์šฉ . ๏ถ ์ข…๋ฅ˜ ๏ต Primary Key ๏ต Foreign key ๏ต CHECK ๏ต UNIQUE ๏ต NOT NULL INFORMIX User 119
  • 120. ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์˜ ๋ณด์žฅ (2) ๏ถ Constraint ์˜ ์ด๋ฆ„์€ ์ž๋™์ ์œผ๋กœ ๋ถ€์—ฌ ๋  ์ˆ˜ ์žˆ์ง€๋งŒ , ์ง์ ‘ ๋ช…์‹œํ•  ์ˆ˜๋„ ์žˆ๋‹ค CREATE TABLE orders ( order_num integer UNIQUE CONSTRAINT order_num_uq, order_date date NOT NULL CONSTRAINT order_num_nn DEFAULT TODAY); ALTER TABLE orders MODIFY order_num integer NOT NULL CONSTRAINT order_num_nn; ๏ถ Constraint ๋Š” ์ปฌ๋Ÿผ ๋‹จ์œ„ ๋˜๋Š” ํ…Œ์ด๋ธ” ๋‹จ์œ„๋กœ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ , ๋‹ค๋ฅธ ์ปฌ๋Ÿผ์— ๋Œ€ํ•œ ์ •์˜๊ฐ€ ํฌํ•จ๋  ๊ฒฝ์šฐ๋Š” ํ…Œ์ด๋ธ” ๋‹จ์œ„๋กœ ์ •์˜ํ•ด์•ผ๋งŒ ํ•œ๋‹ค -- ํ…Œ์ด๋ธ” ๋‹จ์œ„ ALTER TABLE items ADD CONSTRAINT CHECK (quantity >= 1); -- ์ปฌ๋Ÿผ ๋‹จ์œ„ ALTER TABLE items MODIFY quantity smallint CHECK (quantity >= 1); -- ์ปฌ๋Ÿผ ๋‹จ์œ„๋Š” ๋‹ค๋ฅธ ์ปฌ๋Ÿผ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค . ALTER TABLE orders MODIFY paid_date date CHECK (paid_date > ship_date); # #676: Invalid check constraint column. INFORMIX User 120
  • 121. ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์˜ ๋ณด์žฅ (3) ๏ถ Referential Constraint ์˜ ์ข…๋ฅ˜ ๏ต Cyclic referential constraints parent child ๏ต Self referential constraints parent ๏ต Multiple path constraints parent child child ๏ถ Primary / Foreign Key ๊ทœ์น™ ๏ต Primary key ๋Š” ์ž๋™์ ์œผ๋กœ unique index ์—ญํ• ์„ ํ•˜๊ฒŒ ๋œ๋‹ค ๏ต Foreign key ์ปฌ๋Ÿผ๊ฐ’์€ Primary key ์— ๊ฐ’์ด ์žˆ์–ด์•ผ ์ž…๋ ฅ , ์ˆ˜์ • ํ•  ์ˆ˜ ์žˆ๋‹ค ๏ต Foreign Key ๊ฐ’์ด ์žˆ๋Š” ์ƒํƒœ์—์„œ Primary Key ๊ฐ’์„ ์‚ญ์ œ , ์ˆ˜์ • ํ•  ์ˆ˜ ์—†๋‹ค INFORMIX User 121
  • 122. ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์˜ ๋ณด์žฅ (4) ๏ถ Cyclic referential constraints create table customer ( customer orders customer_num serial, customer_num order_num fname char(20), fname customer_num primary key (customer_num) constraint pk_cnum ); create table orders ( order_num serial, customer_num integer, foreign key (customer_num) references customer constraint fk_cnum); ๏ถ Self referential constrains emp create table emp ( enum enum serial, mnum mnum integer, primary key (enum) constraint pk_enum, foreign key (mnum) references emp(enum) constraint fk_enum) ; INFORMIX User 122
  • 123. ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์˜ ๋ณด์žฅ (5) ๏ถ Multiple path referential constraints create table stock ( stock stock_num smallint, stock_num manu_code char(3), manu_code primary key (stock_num, manu_code) constraint pk_stock); create table items ( items catalog item_num smallint, item_num catalog_num stock_num smallint, stock_num stock_num manu_code char(3), manu_code manu_code foreign key (stock_num, manu_code) references stock constraints fk1_stock); create table catalog ( catalog_num serial, stock_num smallint, manu_code char(3), foreign key (stock_num, manu_code) references stock constraints fk2_stock); INFORMIX User 123
  • 124. ์ธ๋ฑ์Šค์˜ ์ƒ์„ฑ ๏ถ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•ด ๋น ๋ฅธ ์ ‘๊ทผ์„ ์œ„ํ•ด ์‚ฌ์šฉ ๏ถ OLTP ์—…๋ฌด์˜ ๊ฒฝ์šฐ ์ธ๋ฑ์Šค์˜ ์ƒ์„ฑ์€ ๋งค์šฐ ์ค‘์š”ํ•จ . ๏ถ ๋‹ค์Œ์— ํ•ด๋‹น๋˜๋Š” ์ปฌ๋Ÿผ์— ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Œ . ๏ต ์กฐ์ธ์˜ ๋Œ€์ƒ์ด ๋˜๋Š” ์ปฌ๋Ÿผ ๏ต ์กฐ๊ฑด ๋น„๊ต์˜ ๋Œ€์ƒ์ด ๋˜๋Š” ์ปฌ๋Ÿผ ๏ต ์ •๋ ฌ์˜ ๊ธฐ์ค€์ด ๋˜๋Š” ์ปฌ๋Ÿผ Create index < ์ธ๋ฑ์Šค์ด๋ฆ„ > on ํ…Œ์ด๋ธ”์ด๋ฆ„ ( ์ปฌ๋Ÿผ์ด๋ฆ„ ) In < ์ธ๋ฑ์Šค๋ฅผ ์ €์žฅํ•  ์œ„์น˜ >; ๏ถ ์˜ˆ create unique index idx_cust on customer(customer_num) in dbspace1; create index idx_stock on stock (stock_num, manu_code) ; INFORMIX User 124
  • 125. ์งˆ์˜ ์ˆ˜ํ–‰์„ ์ตœ์ ํ™” ํ•ด์ฃผ๊ธฐ ์œ„ํ•œ ์ž‘ ์—… ๏ถ ์„œ๋ฒ„๋กœ ์ „๋‹ฌ๋œ ๋ชจ๋“  ์งˆ์˜๋Š” ๋‹ค์Œ์˜ ๊ณผ์ •์„ ๊ฑฐ์นจ Parsing Optimizing Executing ์œ ํšจ์„ฑ , ๋ฌธ๋ฒ• ๋“ฑ์„ ์ฒดํฌ ์ตœ์ ํ™”๋œ ์งˆ์˜ ์ˆ˜ํ–‰์˜ ์‹คํ–‰ ๊ฒฝ๋กœ๋ฅผ ๊ฒฐ์ • ๏ถ ์งˆ์˜ ์ˆ˜ํ–‰ ๊ฒฝ๋กœ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š”๋ฐ ์ฐธ์กฐํ•˜๋Š” ๋ฐ์ดํ„ฐ๋Š” system catalog ์˜ ์ • ๋ณด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•จ . ๏ถ ์งˆ์˜ ์ˆ˜ํ–‰ ๊ฒฝ๋กœ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ์š”์ธ ๏ต ์ธ๋ฑ์Šค ์œ ๋ฌด , ๋ฐ์ดํ„ฐ์˜ ์–‘ , ๋ฐ์ดํ„ฐ ๋ถ„ํฌ๋„ ๋“ฑ .. ๏ถ ๋”ฐ๋ผ์„œ , ํ˜„์žฌ์ƒํ™ฉ์˜ ๋ฐ์ดํ„ฐ์— ๊ด€ํ•œ ์ •ํ™•ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜์—ฌ์•ผ , ์ตœ์ ์˜ ์งˆ์˜๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Œ . INFORMIX User 125
  • 126. ์งˆ์˜ ์ˆ˜ํ–‰์„ ์ตœ์ ํ™” ํ•ด์ฃผ๊ธฐ ์œ„ํ•œ ์ž‘ ์—… ๏ถ Update statistics ๏ต System catalog ์˜ ๋ฐ์ดํ„ฐ ๊ด€๋ จ ํ†ต๊ณ„์ž๋ฃŒ๋ฅผ ๊ฐฑ์‹  ๏ต ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ๋ถ„ํฌ๋„๋ฅผ ๋งŒ๋“ค์–ด์คŒ . ๏ถ Mode ์˜ ์ข…๋ฅ˜ ๏ต Low ๏‚ง system catalog ์˜ ํ†ต๊ณ„์ •๋ณด๋งŒ ๊ฐฑ์‹  ๏ต Medium ๏‚ง ํ†ต๊ณ„์ •๋ณด ๊ฐฑ์‹ ๊ณผ ํ•จ๊ป˜ , ๋ฐ์ดํ„ฐ ๋ถ„ํฌ๋„๋ฅผ ๋งŒ๋“ฌ . ์ด๋•Œ , ํ‘œ๋ณธ ์ถ”์ถœ์— ์˜ํ•ด ๋ถ„ํฌ๋„๋ฅผ ๋งŒ๋“ฌ . ๏ต High ๏‚ง medium ๊ณผ ๊ฐ™์œผ๋‚˜ , ํ‘œ๋ณธ์ถ”์ถœ์ด ์•„๋‹Œ ์ „์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ๋ถ„ํฌ๋„๋ฅผ ๋งŒ๋“ฌ . INFORMIX User 126
  • 127. ์งˆ์˜ ์ˆ˜ํ–‰์„ ์ตœ์ ํ™” ํ•ด์ฃผ๊ธฐ ์œ„ํ•œ ์ž‘ ์—… ๏ถ ์–ธ์ œ ์ˆ˜ํ–‰ํ•˜์—ฌ์•ผ ํ•˜๋‚˜ ? ๏ต ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์‹œ์—๋Š” ๋ฐ˜๋“œ์‹œ ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค . ๏‚ง Bulk Data loading ํ›„ , bulk update ๋“ฑ .. ๏ต ์‹œ์Šคํ…œ ์œ ํœด ์‹œ๊ฐ„๋Œ€์— ์ •๊ธฐ์ ์œผ๋กœ ํ•ด์ฃผ์–ด๋„ ์ข‹๋‹ค . ๏ถ ๊ตฌ๋ฌธ ๏ต Update statistics [low|medium|high] ; ๏ต Update statistics [low|medium|high] for table; ๏ต Update statistics [low|medium|high] for table ํ…Œ์ด๋ธ”์ด๋ฆ„ ; ๏ต Update statistics [low|medium|high] for table ํ…Œ์ด๋ธ”์ด๋ฆ„ ( ์ปฌ๋Ÿผ์ด๋ฆ„ ); INFORMIX User 127
  • 128. Data Migration ๏ถ DB ํ˜น์€ table ์„ file ๋กœ ๋‚ด๋ฆด ํ•„์š”๊ฐ€ ์žˆ์„๋•Œ ์‚ฌ์šฉ . ๏ถ Data Backup ์˜ ํ•˜๋‚˜์˜ ๋ฐฉ๋ฒ•์œผ๋กœ๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ ๏ถ ์„œ๋กœ ๋‹ค๋ฅธ ๊ธฐ์ข…์˜ machine ์— ์žˆ๋Š” ์„œ๋ฒ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์˜ฎ๊ธฐ๊ณ ์ž ํ• ๋•Œ ์œ  ์šฉ. ๏ถ Data ๋ฅผ ๊ธฐ์กด์˜ table ์— append ํ• ๋•Œ์— ์œ ์šฉ . ๏ถ ์‚ฌ์šฉ ์šฉ๋„๋‚˜ , ์ œ๊ณต๋˜๋Š” ๊ธฐ๋Šฅ์— ๋”ฐ๋ผ ๋‹ค์–‘ํ•œ tool, ๊ตฌ๋ฌธ์„ ์ œ๊ณต . INFORMIX User 128
  • 129. Data Migration - Unloading ๏ถ ์ข…๋ฅ˜ ๏ต UNLOAD ๊ตฌ๋ฌธ ๏‚ง SQL ๊ตฌ๋ฌธ์ด๋ฏ€๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฝ๊ณ  , ์›ํ•˜๋Š” ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋‚ด๋ ค ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค . ๏ƒผ UNLOAD to โ€˜ ํŒŒ์ผ์ด๋ฆ„โ€™ select * from customer; ๏ต ONUNLOAD ๏‚ง DB ๋‹ด์œ„ , table ๋‹จ์œ„ ๊ฐ€๋Šฅ ๏‚ง Binary ํ˜•ํƒœ๋กœ ๋ฐ›์Œ . ๏ƒผ onunload โ€“t /dev/rmt0 DB ์ด๋ฆ„ ๏ต DBEXPORT ๏‚ง DB ๋‹จ์œ„์˜ ์ž‘์—… ์ง€์› : DB ๋‹จ์œ„์ž‘์—…์— ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ ๏‚ง Ascii ํ˜•ํƒœ๋กœ ๋ฐ›์Œ . ๏ƒผ dbexport DB ์ด๋ฆ„ ๏ต ONPLOAD ๏‚ง HPL(High Performance Loader) ์„ ๊ตฌ์„ฑํ•˜๋Š” process ๏‚ง ๋งŽ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ๊ฐ€์žฅ ์ข‹์€ ์„ฑ๋Šฅ์„ ๋ƒ„ . INFORMIX User 129
  • 130. Data Migration - Loading ๏ถ ์ข…๋ฅ˜ ๏ต LOAD ๊ตฌ๋ฌธ ๏‚ง SQL ๊ตฌ๋ฌธ์ด๋ฏ€๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฝ๊ณ  , ์›ํ•˜๋Š” ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋‚ด๋ ค ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค . ๏ƒผ LOAD from โ€˜ ํŒŒ์ผ์ด๋ฆ„โ€™ insert into customer; ๏ต ONLOAD ๏‚ง DB ๋‹ด์œ„ , table ๋‹จ์œ„ ๊ฐ€๋Šฅ ๏‚ง Binary ํ˜•ํƒœ๋กœ ๋ฐ›์Œ . ๏ƒผ onload โ€“t /dev/rmt0 DB ์ด๋ฆ„ ๏ต DBIMPORT ๏‚ง DB ๋‹จ์œ„์˜ ์ž‘์—… ์ง€์› : DB ๋‹จ์œ„์ž‘์—…์— ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ ๏‚ง Ascii ํ˜•ํƒœ๋กœ ๋ฐ›์Œ . ๏ƒผ dbimport DB ์ด๋ฆ„ ๏ต ONPLOAD ๏‚ง HPL(High Performance Loader) ์„ ๊ตฌ์„ฑํ•˜๋Š” process ๏‚ง ๋งŽ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ๊ฐ€์žฅ ์ข‹์€ ์„ฑ๋Šฅ์„ ๋ƒ„ . INFORMIX User 130
  • 131. ESQL/C ๋ฅผ ์ด์šฉํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๏ƒผ ESQL/C ๋ž€ ๏ƒผ ESQL/C ์˜ ์‚ฌ์šฉ ๏ƒผ ESQL/C ํ”„๋กœ๊ทธ๋žจ ์ž‘์„ฑ ๊ทœ์น™ ๏ƒผ ESQL/C ํ”„๋กœ๊ทธ๋žจ compile ๏ƒผ ESQL/C ํ”„๋กœ๊ทธ๋žจ ์ž‘์„ฑ ์˜ˆ์ œ ๏ƒผ ํ˜ธ์ŠคํŠธ๋ณ€์ˆ˜ (Host Variables) ๏ƒผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ๏ƒผ SQLCA ๊ตฌ์กฐ์ฒด ๏ƒผ EXCEPTION ํ…Œ์ŠคํŠธ ๏ƒผ GET DIAGNOSTICS ์‚ฌ์šฉ ๏ƒผ prepare ๋ฅผ ์‚ฌ์šฉํ•œ ๋‹จ์ˆœ DML ์ฒ˜๋ฆฌ ๏ƒผ Indicator ์‚ฌ์šฉ ๏ƒผ ์ปค์„œ (Cursors)
  • 132. ESQL/C ๋ž€ ๏ถ C ํ”„๋กœ๊ทธ๋žจ ๋‚ด์— sql ๊ตฌ๋ฌธ์„ ๋ฐ”๋กœ ๋„ฃ์–ด ๊ทธ ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋‹ค์–‘ํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ œ๊ณต๋˜๋Š” ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ tool ๏ถ ESQL/C ์˜ ์ฃผ๋œ component ๋Š” preprocessor ๋กœ์„œ ESQL/C code ๋ฅผ C code ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ C compiler ์—๊ฒŒ ๋„˜๊ฒจ์ค€๋‹ค . INFORMIX User 132
  • 133. ESQL/C ์˜ ์‚ฌ์šฉ ๏ถ ๋‹ค์Œ์˜ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•ด์•ผ ํ•œ๋‹ค . ๏ต INFORMIXDIR ๏‚ง ESQL/C ์„ค์น˜ ๋””๋ ‰ํ† ๋ฆฌ ๏ต PATH ๏‚ง ESQL/C ์‹คํ–‰ ํŒŒ์ผ์˜ ์œ„์น˜๋ฅผ ์ถ”๊ฐ€ ๏ต LD_LIBRARY_PATH ๏‚ง Library ์˜ ์œ„์น˜ ๏ต INFORMIXC ๏‚ง CC ์ปดํŒŒ์ผ๋Ÿฌ ์™ธ์˜ ๋‹ค๋ฅธ ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•  ๋•Œ ๏ถ ์˜ˆ export INFORMIXDIR=/usr/informix export PATH=$PATH:$INFORMIXDIR/bin export LD_LIBRARY_PATH=$INFORMIXDIR/lib:$INFORMIXDIR/lib/esql export INFORMIXC=gcc INFORMIX User 133
  • 134. ESQL/C ํ”„๋กœ๊ทธ๋žจ ์ž‘์„ฑ ๊ทœ์น™ ๏ถ ESQL/C preprocessor ๊ฐ€ ๋‹ค๋ฅธ C code ์™€ ๊ตฌ๋ณ„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด SQL ์€ โ€œ $โ€ ํ˜น์€ โ€œ exec sqlโ€ ์œผ๋กœ ์‹œ์ž‘ ๏ถ SQL ๊ตฌ๋ฌธ์˜ ๋์—๋Š” โ€œ ;โ€ ๋ฅผ ๋ถ™์ž„ . ๏ถ SQL ๊ตฌ๋ฌธ ์•ˆ์˜ ๋ณ€์ˆ˜ (host ๋ณ€์ˆ˜๋ผ ๋ถ€๋ฆ„ ) ๋Š” ๋ณ€์ˆ˜ ์ด๋ฆ„ ์•ž์— โ€œ :โ€ ๋ฅผ ๋ถ™ ์ž„. ๏ถ ์ฃผ์„์€ ํ‘œ์ค€ C ์˜ ์ฃผ์„์ธ โ€œ /* */โ€ ์‚ฌ์šฉ INFORMIX User 134
  • 135. ESQL/C ํ”„๋กœ๊ทธ๋žจ compile (1) ๏ถ Esql ์˜ option ์€ ๋‹ค์–‘ํ•˜๋ฏ€๋กœ ๊ฐ ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ๋‹ค์–‘ํ•˜๊ฒŒ ์‚ฌ์šฉ ๏ต esql [-e] [preprocessor ์˜ต์…˜ ] [cc ๋งค๊ฐœ๋ณ€์ˆ˜ ] [-o ์‹คํ–‰ํŒŒ์ผ ] ์†Œ์Šค .ec [ ๋งํฌ์˜ต์…˜ ] ๏ถ ์˜ˆ> ๏ต ESQL/C ๋กœ ์ž‘์„ฑ๋œ customer.ec file ์„ customer ๋ผ๋Š” ์ด๋ฆ„์˜ ์‹คํ–‰ํŒŒ์ผ๋กœ ๋งŒ๋“ค๊ณ ์ž ํ•œ๋‹ค๋ฉด esql -o customer customer.ec customer.ec customer. c customer. o customer esql preprocess c compile -shared ์˜ต์…˜์ด default ๊ฐ’ standard library esql/c library -static ์˜ต์…˜ esql customer.ec file.c -l mylib -o customer -static customer.ec customer. c customer. o customer esql preprocess c compile file.c file. o mylib INFORMIX User 135