๐Ÿ‘จโ€๐Ÿ’ป Web Development/Oracle

[Day13] Oracle 13 - ์ •๊ทœํ™”, ์ด์ƒํ˜„์ƒ, ๋ทฐ, ์‹œํ€€์Šค

Kim_dev 2022. 10. 19. 02:40

[Day13] Oracle13 [10/14]

 

๋ฆด๋ ˆ์ด์…˜ =  ํ…Œ์ด๋ธ”
ํŠœํ”Œ        =  ๋ ˆ์ฝ”๋“œ(ํ–‰)
์†์„ฑ        =  ์ปฌ๋Ÿผ


์ •๊ทœํ™”

- ์ด์ƒํ˜„์ƒ(์‚ฝ์ž…,๊ฐฑ์‹ ,์‚ญ์ œ), ํ•จ์ˆ˜ ์ข…์†์„ฑ (  X->Y ), 1NF~ 5NF
- ERD->๊ด€๊ณ„์Šคํ‚ค๋งˆ ์ƒ์„ฑ ํ›„  ์ข…์†์„ฑ ์ด๋ก ์„ ์ด์šฉํ•ด์„œ ์ž˜๋ชป๋œ ์„ค๊ณ„๋œ ๊ด€๊ณ„ ์Šคํ‚ค๋งˆ๋ฅผ ๋” ์ž‘์€ ์†์„ฑ์˜ ๋ฐ”๋žŒ์งํ•œ ์Šคํ‚ค๋งˆ๋กœ ๋งŒ๋“ค์–ด ๊ฐ€๋Š” ๊ณผ์ •์„ ์ •๊ทœํ™” ๋ผ๊ณ  ํ•œ๋‹ค.
- DB ์„ค๊ณ„ ๋ฌธ์ œ์ (  ๋ฐ์ดํ„ฐ ์ค‘๋ณต )์ด ์žˆ์„ ๊ฒฝ์šฐ ์‚ฝ์ž…,๊ฐฑ์‹ ,์‚ญ์ œํ•  ๋•Œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ "์ด์ƒํ˜„์ƒ"์ด๋ผ๊ณ  ํ•œ๋‹ค. ์ด๋Ÿฐ ์ด์ƒํ˜„์ƒ์„ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์„ ์ •๊ทœํ™”๋ผ๊ณ  ํ•œ๋‹ค.

 

๋ฐ์ดํ„ฐ ์ค‘๋ณต ์ œ๊ฑฐ ๊ณผ์ •(์ž‘์—…) == ์ •๊ทœํ™”   
 

ํ•จ์ˆ˜์  ์ข…์†์„ฑ(FD;Functional Dependency) 

- ์ •๊ทœํ™” ํ…Œ์ด๋ธ”์˜  ์†์„ฑ๋“ค๊ฐ„์˜ ๊ด€๋ จ์„ฑ

DEPT(๋ถ€์„œํ…Œ์ด๋ธ”)
PK

๊ฒฐ์ •์ž         ์ข…์†์ž 
  X                   Y 
[deptno]    dname                   loc    
10               ACCOUNTING      NEW YORK
20              RESEARCH            DALLAS
30              SALES                    CHICAGO
40              OPERATIONS        BOSTON

* Y ์†์„ฑ์€ X ์†์„ฑ์— ํ•จ์ˆ˜์  ์ข…์†์ ์ด๋‹ค.
* X -> Y

1) ์™„์ „ ํ•จ์ˆ˜์  ์ข…์† 
- ์–ด๋–ค ๋ฆด๋ ˆ์ด์…˜ R์—์„œ ์†์„ฑA๊ฐ€ ์†์„ฑ ์ง‘ํ•ฉ์ผ ๋•Œ, ์†์„ฑ B๊ฐ€ ์†์„ฑA์— ํ•จ์ˆ˜์  ์ข…์†ํ•˜๋ฉด์„œ, ์†์„ฑ A์˜ ์–ด๋–ค ์ง„๋ถ€๋ถ„ ์ง‘ํ•ฉ์—๋„ ํ•จ์ˆ˜์ ์œผ๋กœ ์ข…์†ํ•˜์ง€ ์•Š์œผ๋ฉฐ, ์†์„ฑ B๊ฐ€ ์†์„ฑ A์— ์™„์ „ํ•˜๊ฒŒ ํ•จ์ˆ˜์ ์œผ๋กœ ์ข…์†ํ•œ๋‹ค.
- ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์†์„ฑ์ด ๋ชจ์—ฌ์„œ ํ•˜๋‚˜์˜ ๊ธฐ๋ณธํ‚ค๋ฅผ ์ด๋ฃฐ ๊ฒฝ์šฐ ( ๋ณตํ•ฉํ‚ค ) ๋ณตํ•ฉํ‚ค ์ „์ฒด์— ์–ด๋–ค ์†์„ฑ์ด ์ข…์†์ ์ผ ๋•Œ "์™„์ „ ํ•จ์ˆ˜์  ์ข…์†"์ด๋ผ ํ•œ๋‹ค. 

๋ณตํ•ฉํ‚ค
[๊ณ ๊ฐID]        [์ด๋ฒคํŠธID]      A    B   C
kenik            E001              
[ X         +       Y ]      ->     A
[ X         +       Y ]      ->     B
[ X         +       Y ]      ->     C


 2) ๋ถ€๋ถ„ ํ•จ์ˆ˜์  ์ข…์†
- ์™„์ „ ํ•จ์ˆ˜์  ์ข…์†์ด ์•„๋‹ˆ๋ฉด ๋ถ€๋ถ„ ํ•จ์ˆ˜์  ์ข…์†์ด๋‹ค. 

   ๋ณตํ•ฉํ‚ค
   [๊ณ ๊ฐID]      [์ด๋ฒคํŠธID]   ํ•ฉ๊ฒฉ์—ฌ๋ถ€    ๋“ฑ๊ธ‰
   kenik             E001           Y           gold
              ๋ณตํ•ฉํ‚ค      ->     ํ•ฉ๊ฒฉ์—ฌ๋ถ€ O
              ๋ณตํ•ฉํ‚ค      ->                        ๋“ฑ๊ธ‰ X
   ๊ณ ๊ฐID  -> ๋“ฑ๊ธ‰   O


 3) ์ดํ–‰ ํ•จ์ˆ˜์  ์ข…์†
     X->Y,   Y->Z  
    ๊ฒฐ์ •์ž

    dept ํ…Œ์ด๋ธ”
    ๊ฒฐ์ •์ž
    PK
       X      ->                   Y           
                                       Y     ->      Z
    [deptno]                dname       ๋ถ€์„œ์žฅ    ๋ถ€์„œ์žฅ์„ฑ๋ณ„
    ๋ถ€์„œ๋ฒˆํ˜ธ                  ๋ถ€์„œ๋ช…         ํ™๊ธธ๋™    ๋‚จ์ž


 -- ์ •๊ทœํ™” --    
์›๋ถ€์ด๊ฒฐ๋‹ค์กฐ 

1 : ์›์ž๊ฐ’์ด ์•„๋‹Œ ๋„๋ฉ”์ธ ๋ถ„ํ•ด
2 : ๋ถ€๋ถ„ํ•จ์ˆ˜ ์ข…์†์„ฑ ์ œ๊ฑฐ
3 : ์ดํ–‰ํ•จ์ˆ˜ ์ข…์†์„ฑ ์ œ๊ฑฐ
4 : ๊ฒฐ์ •์ž์ด๋ฉด์„œ ํ›„๋ณดํ‚ค ์•„๋‹Œ ๊ฒƒ ์ œ๊ณ 
5 : ๋‹ค์น˜์ข…์† ์ œ๊ฑฐ
6 : ์กฐ์ธ ์ข…์†์„ฑ ์ด์šฉ


1) ์ œ1์ •๊ทœํ™”( NOrmal Form )  1NF
- ๋ฆด๋ ˆ์ด์…˜์— ์†ํ•œ ๋ชจ๋“  ์†์„ฑ์˜ ๋„๋ฉ”์ธ์ด ์›์ž ๊ฐ’(atomic value)์œผ๋กœ๋งŒ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋ฉด ์ œ1์ •๊ทœํ˜•์— ์†ํ•œ๋‹ค.

 deptno dname    loc
 10         ์ด๋ฌด๋ถ€       l_id(FK) 1
 20         ์˜์—…๋ถ€                     2
 30        ์ƒ์‚ฐ๋ถ€                      1
 40        ์ž์žฌ๋ถ€                      2
 :
 
 [๋ถ€์„œ์ง€์—ญ ํ…Œ์ด๋ธ”]
 PK
 l_id
 1    ์„œ์šธ   ... ...
 2    ๋ถ€์‚ฐ
 3    ๋Œ€๊ตฌ


2) ์ œ2์ •๊ทœํ™”  (2NF)
- ๋ฆด๋ ˆ์ด์…˜์ด ์ œ1์ •๊ทœํ˜•์— ์†ํ•˜๊ณ , ๊ธฐ๋ณธํ‚ค๊ฐ€ ์•„๋‹Œ ๋ชจ๋“  ์†์„ฑ์ด ๊ธฐ๋ณธํ‚ค์— ์™„์ „ ํ•จ์ˆ˜ ์ข…์†๋˜๋ฉด ์ œ2์ •๊ทœํ˜•์— ์†ํ•œ๋‹ค.  
- ๋ถ€๋ถ„ ํ•จ์ˆ˜์  ์ข…์† -> ์ œ๊ฑฐ

          ๋ณตํ•ฉํ‚ค  
 [๊ณ ๊ฐID + ์ด๋ฒคํŠธID ]  ๋‹น์ฒจ์—ฌ๋ถ€   ๊ณ ๊ฐ๋ช…  ๊ณ ๊ฐ๋“ฑ๊ธ‰

->

 ์ด๋ฒคํŠธ ํ…Œ์ด๋ธ”
  E001           ๋…ธํŠธ๋ถ        30%     ์‹œ์ž‘์ผ    ์ข…๋ฃŒ์ผ ...
  E002           ๋…ธํŠธ๋ถ        20%
  E003           ํฐ              50%
  E001           ๋…ธํŠธ๋ถ        30%
  ์ด๋ฒคํŠธ <์‹ ์ฒญ>       
  ์‹ ์ฒญ๋ฒˆํ˜ธ(PK)     ๊ณ ๊ฐID    ์ด๋ฒคํŠธID   ์‹ ์ฒญ์ผ      ๋‹น์ฒจ์—ฌ๋ถ€
  1                        ๊ณ ๊ฐ1      E001        22.1.1        Y
  ๊ณ ๊ฐํ…Œ์ด๋ธ”
  ๊ณ ๊ฐID         ๊ณ ๊ฐ๋ช…      ๊ณ ๊ฐ๋“ฑ๊ธ‰
  ๊ณ ๊ฐ1


3)์ œ3์ •๊ทœํ™”( 3NF )
- ๋ฆด๋ ˆ์ด์…˜์ด ์ œ2์ •๊ทœํ˜•์— ์†ํ•˜๊ณ , ๊ธฐ๋ณธํ‚ค๊ฐ€ ์•„๋‹Œ ๋ชจ๋“  ์†์„ฑ์ด ๊ธฐ๋ณธํ‚ค์— [์ดํ–‰์  ํ•จ์ˆ˜ ์ข…์†]์ด ๋˜์ง€ ์•Š์œผ๋ฉด ์ œ3์ •๊ทœํ˜•์— ์†ํ•œ๋‹ค.
- ์ดํ–‰์  ํ•จ์ˆ˜ ์ข…์† -> ์ œ๊ฑฐ

    PK
    X       ->    Y
    X       ->                     Z
                      Y             ->                 T
  deptno     ๋ถ€์„œ์žฅ      ๋ถ€์„œ๋ช…       ๋ถ€์„œ์žฅ์—ฐ๋ฝ์ฒ˜
  
   X->Y,    Y->Z

->

   ๋ถ€์„œํ…Œ์ด๋ธ” 
   ๋ถ€์„œ๋ฒˆํ˜ธ  ๋ถ€์„œ์žฅ์‚ฌ์›์ฝ”๋“œ(FK)  ๋ถ€์„œ๋ช…
   ์‚ฌ์›ํ…Œ์ด๋ธ”
   ์‚ฌ์›์ฝ”๋“œ(PK) ์‚ฌ์›๋ช… ์ง๊ธ‰๋ช… ์—ฐ๋ฝ์ฒ˜



  4) ๋ณด์ด์Šค/์ฝ”๋“œ ์ •๊ทœํ™”( BCNF ) 
    ๋ฆด๋ ˆ์ด์…˜์˜ ํ•จ์ˆ˜ ์ข…์† ๊ด€๊ณ„์—์„œ ๋ชจ๋“  ๊ฒฐ์ •์ž(๋ณตํ•ฉํ‚ค)๊ฐ€ ํ›„๋ณดํ‚ค์ด๋ฉด ๋ณด์ด์Šค/์ฝ”๋“œ ์ •๊ทœํ˜•์— ์†ํ•œ๋‹ค.
          ๋ณตํ•ฉํ‚ค

    [๊ณ ๊ฐ์•„์ด๋””  ์ธํ„ฐ๋„ท๊ฐ•์ขŒ]       ๋‹ด๋‹น๊ฐ•์‚ฌ๋ฒˆํ˜ธ
      [  X                 Y   ]       ->           Z            ์™„์ „ ํ•จ์ˆ˜ ์ข…์†
                             Y           <-           Z

           ํ…Œ์ด๋ธ”    [ X  Z ]      
           ํ…Œ์ด๋ธ”    [Z]    Y

           
* ์ œ3์ •๊ทœํ™”๋ฅผ ๋งŒ์กฑํ•˜๋ฉด BCNF ์ •๊ทœํ™” ๊ฑฐ์˜ ์—†๋‹ค.  X   



* ๋ฌผ๋ฆฌ์  dB ๋ชจ๋ธ๋ง
  - ์—ญ์ •๊ทœํ™” - ์„ฑ๋Šฅ
* EXERD  DB ๋ชจ๋ธ๋ง  -> ์˜ค๋ผํด DB ์„œ๋ฒ„ ( ์Šคํ‚ค๋งˆ ์ƒ์„ฑ )
* ์—‘์…€, ๋ฉ”๋ชจ์žฅ              ->  INSERT ์ž๋™



๋ทฐ( View ) 


1. ํ…Œ์ด๋ธ”์„ ๋ณด๊ธฐ ์œ„ํ•œ ์ฐฝ๋ฌธ ์ •๋„๋กœ ์ƒ๊ฐ.
2. ๊ฐ€์ƒํ…Œ์ด๋ธ” =  1๊ฐœ ์ด์ƒ์˜ ํ…Œ์ด๋ธ” ๋˜๋Š” ๋ทฐ๋ฅผ ์ด์šฉํ•ด์„œ ์ƒ์„ฑ๋œ๋‹ค.
3. ๋ทฐ๋Š” "๋ฐ์ดํ„ฐ ์‚ฌ์ „"์— ์ •์˜ ๋ถ€๋ถ„๋งŒ ์ €์žฅ๋˜๊ณ  , ์‹ค์ œ ๋ฐ์ดํ„ฐ๋Š” ์ €์žฅ X
4. ๋ทฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ชฉ์ (์ด์œ  )
   1) ๋ณด์•ˆ
   2) ํŽธ๋ฆฌ์„ฑ
5. ๋ทฐ - SELECT, INSERT, UPDATE, DELETE ๊ฐ€๋Šฅ
6. ์ œ์•ฝ ์กฐ๊ฑด ์„ค์ • ๊ฐ€๋Šฅ
7.  user_views :   ๋ทฐ ์กฐํšŒ.
    user_tables :   ํ…Œ์ด๋ธ” ์ •๋ณด ์กฐํšŒ

SELECT *
FROM user_views;


8. ๋ทฐ ์ข…๋ฅ˜
  1) ๋‹จ์ˆœ๋ทฐ (  simple view ) - 1 ๊ฐœ
  2) ๋ณตํ•ฉ๋ทฐ ( complex view ) - 2๊ฐœ ์ด์ƒ.~
9. ๋ทฐ ์ƒ์„ฑ ํ˜•์‹ 
ใ€ํ˜•์‹ใ€‘
CREATE [OR REPLACE] [FORCE | NOFORCE] VIEW ๋ทฐ์ด๋ฆ„
[(alias[,alias]...]
AS subquery
[WITH CHECK OPTION]
[WITH READ ONLY];

OR REPLACE  : ๊ฐ™์€ ์ด๋ฆ„์˜ ๋ทฐ๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ ๋ฌด์‹œํ•˜๊ณ  ๋‹ค์‹œ ์ƒ์„ฑ 
FORCE             : ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”์˜ ์œ ๋ฌด์— ์ƒ๊ด€์—†์ด ๋ทฐ๋ฅผ ์ƒ์„ฑ 
NOFORCE       : ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”์ด ์žˆ์„ ๋•Œ๋งŒ      ๋ทฐ๋ฅผ ์ƒ์„ฑ 


ALIAS               : ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”์˜ ์ปฌ๋Ÿผ์ด๋ฆ„๊ณผ ๋‹ค๋ฅด๊ฒŒ ์ง€์ •ํ•œ ๋ทฐ์˜ ์ปฌ๋Ÿผ๋ช… ๋ถ€์—ฌ 


WITH CHECK OPTION  : ๋ทฐ์— ์˜ํ•ด access๋  ์ˆ˜ ์žˆ๋Š” ํ–‰(row)๋งŒ์ด ์‚ฝ์ž…, ์ˆ˜์ • ๊ฐ€๋Šฅ 
WITH READ ONLY         :  DML ์ž‘์—…์„ ์ œํ•œ(๋‹จ์ง€ ์ฝ๋Š” ๊ฒƒ๋งŒ ๊ฐ€๋Šฅ) 


์˜ˆ) ํŒ๋งค๋Ÿ‰ ํ™•์ธ - ์ฟผ๋ฆฌ 
 

SELECT b.b_id, title, price, g.g_id, g_name, p_date, p_su  
FROM book b JOIN danga  d ON b.b_id = d.b_id
            JOIN panmai p ON  b.b_id = p.b_id
            JOIN gogaek g ON  p.g_id = g.g_id;


-- ๋ทฐ ์ƒ์„ฑ

GRANT CREATE VIEW TO scott;
CREATE OR REPLACE FORCE VIEW panView
( bookid, booktitle, bookprice, gogaekid, gogaekname, pdate, psu )
AS (

SELECT b.b_id , title, price, g.g_id, g_name, p_date, p_su  
FROM book b JOIN danga  d ON b.b_id = d.b_id
            JOIN panmai p ON  b.b_id = p.b_id
            JOIN gogaek g ON  p.g_id = g.g_id
);


-- ๋ทฐ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ „์ฒด ํŒ๋งค ๊ธˆ์•ก

SELECT SUM( psu * BOOKPRICE ) ์ „์ฒดํŒ๋งค๊ธˆ์•ก
FROM panview;


-- ๋ทฐ ์ƒ์„ฑ : gogaekview
-- ๋…„๋„, ์›”, ๊ณ ๊ฐ์ฝ”๋“œ, ๊ณ ๊ฐ๋ช…, ํŒ๋งค๊ธˆ์•ก์ดํ•ฉ (  ๋…„๋„๋ณ„ ์›”๋ณ„ )  ์กฐํšŒ

-- panmai :  p_date (  year, month ) , p_su
-- gogaek :  g_id, gname
-- danga  :                             price

-- ORA-00979: not a GROUP BY expression
-- ORA-00907: missing right parenthesis

CREATE OR REPLACE FORCE VIEW gogaekview 
  -- [alias,,,,]
AS 
        SELECT
              -- p_date
              TO_CHAR( p_date, 'YYYY')   year
              , TO_CHAR( p_date, 'MM')   month
              , g.g_id, g_name
              ,  SUM(  p_su * price ) amt
        FROM panmai p  JOIN gogaek g ON p.g_id = g.g_id
                       JOIN danga d  ON d.b_id = p.b_id
        GROUP BY    TO_CHAR( p_date, 'YYYY') 
              , TO_CHAR( p_date, 'MM'), g.g_id, g_name    
        ORDER BY   year
              , month



-- ๋ทฐ๋ฅผ ์‚ฌ์šฉํ•ด์„œ DML ์ž‘์—… --

CREATE TABLE tbl_view1(
  aid   number primary key
  , name varchar2(20) not null
  , tel varchar2(20) not null
  , memo varchar2(100)
)
-- Table TBL_VIEW1์ด(๊ฐ€) ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
CREATE TABLE tbl_view2(
  bid number primary key
  , aid number CONSTRAINT FK_tblview2_aid
         REFERENCES tbl_view1(aid) ON DELETE CASCADE -- FK
  , score number(3)
)

INSERT INTO tbl_view1 (aid, NAME, tel) VALUES (1, 'a', '1');
INSERT INTO tbl_view1 (aid, name, tel) VALUES (2, 'b', '2');
INSERT INTO tbl_view1 (aid, name, tel) VALUES (3, 'c', '3');
INSERT INTO tbl_view1 (aid, name, tel) VALUES (4, 'd', '4');

INSERT INTO tbl_view2 (bid, aid, score) VALUES (1, 1, 80);
INSERT INTO tbl_view2 (bid, aid, score) VALUES (2, 2, 70);
INSERT INTO tbl_view2 (bid, aid, score) VALUES (3, 3, 90);
INSERT INTO tbl_view2 (bid, aid, score) VALUES (4, 4, 100);

 COMMIT;



-- ๋‹จ์ˆœ๋ทฐ : 1๊ฐœ ํ…Œ์ด๋ธ”

CREATE OR REPLACE VIEW aView
AS
  -- SELECT aid, name, memo  -- , tel varchar2(20) not null  X
  SELECT aid, name,tel
  FROM tbl_view1;



-- ๋ทฐ๋ฅผ ์‚ฌ์šฉํ•ด์„œ DML ์ž‘์—…

INSERT INTO AVIEW (aid, name, memo ) VALUES ( 5, 'f', null );

-- ORA-01400: cannot insert NULL into ("SCOTT"."TBL_VIEW1"."TEL")
-- ์™œ? -> tbl_view1์˜ NOT NULL ์กฐ๊ฑด์ด ์ ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์—

INSERT INTO AVIEW (aid, name, tel ) VALUES ( 5, 'f', '5' );

 

--๋ทฐ : 1 ํ–‰ ์ด(๊ฐ€) ์‚ฝ์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

-- ๋‹จ์ˆœ๋ทฐ
-- ๋ณตํ•ฉ๋ทฐ

CREATE OR REplace VIEW abview
AS
SELECT a.aid, name, tel, bid, score
FROM tbl_view1 a JOIN tbl_view2 b ON a.aid = b.aid
WITH READ ONLY; -- SELECT ์กฐํšŒ๋งŒ ํ•˜๊ฒ ๋‹ค,         I/U/D X  ์ฝ๊ธฐ ์ „์šฉ
-- View ABVIEW์ด(๊ฐ€) ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
SELECT *
FROM abview;



-- ๋ทฐ ์‚ญ์ œ
DROP TABLE

DROP VIEW aview;
DROP VIEW abview;
-- View ABVIEW์ด(๊ฐ€) ์‚ญ์ œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.



[ WITH CHECK OPTION ]
- ๋ทฐ์— ์˜ํ•ด access๋  ์ˆ˜ ์žˆ๋Š” ํ–‰(row)๋งŒ์ด ์‚ฝ์ž…, ์ˆ˜์ • ๊ฐ€๋Šฅ 

SELECT *
FROM tbl_view2;
bid aid score
1     1      80
2    2      70
3    3      90
4    4    100
CREATE OR REPLACE VIEW bview
AS
  SELECT bid, aid, score
  FROM tbl_view2
  WHERE score >= 90;
UPDATE bview
SET   score = 70
WHErE bid = 3;


VS

 

CREATE OR REPLACE VIEW bview
AS
  SELECT bid, aid, score
  FROM tbl_view2
  WHERE score >= 90
  WITH CHECK OPTION  CONSTRAINT CK_BVIEW;
UPDATE bview
--SET   score = 70  -- UPDATE X
SET   score = 170  -- UPDATE O
WHERE bid = 3; -- 90

 

 -- ORA-01402: view WITH CHECK OPTION where-clause violation

INSERT INTO bview ( bid, aid, score) VALUES ( 5, 4, 10);

 

-- ORA-01402: view WITH CHECK OPTION where-clause violation

INSERT INTO bview ( bid, aid, score) VALUES ( 5, 4, 110);

 

--1 ํ–‰ ์ด(๊ฐ€) ์‚ฝ์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค.


๋ทฐ ์‚ฌ์šฉ์ด์œ  ? 
-- ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๊ธด ์ฟผ๋ฆฌ( SELECT ) -> ๋ทฐ ์ƒ์„ฑ , ๋ณด์•ˆ, ํŽธ๋ฆฌ์„ฑ



[์‹œํ€€์Šค SEQUENCE ]

SELECT *
FROM dept;
                        deptno ๋ถ€์„œ๋ฒˆํ˜ธ ์ž๋™ ์„ค์ •..
INSERT INTO dept VALUES ( 50,  OPERATIONS BOSTON );
INSERT INTO dept VALUES ( 60,  OPERATIONS BOSTON );
INSERT INTO dept VALUES ( 70,  OPERATIONS BOSTON );
ex) ์€ํ–‰ ์—…๋ฌด ์ฒ˜๋ฆฌ 
์ œ์ผ ๋จผ์ € ํ•ด์•ผ ๋  ์ผ ? ์ˆœ์„œ   -   ๋ฒˆํ˜ธํ‘œ ๋ฝ‘์•„์š”.
 ์‹œํ€€์Šค == [์€ํ–‰ ๋ฒˆํ˜ธ ์žฅ์น˜] ์ฒญ์›๊ฒฝ์ฐฐ  10๊ฐฏ์ˆ˜
->  chache / ์บ์‹œ๊ธฐ๋Šฅ (์„ฑ๋Šฅ ๋†’์ผ ์ˆ˜ ์žˆ์Œ)


 ใ€ํ˜•์‹ใ€‘
CREATE SEQUENCE ์‹œํ€€์Šค๋ช…
[ INCREMENT BY ์ •์ˆ˜]      1
[ START WITH ์ •์ˆ˜]        1
[ MAXVALUE n ยฆ NOMAXVALUE]  100
[ MINVALUE n ยฆ NOMINVALUE]  5
[ CYCLE ยฆ NOCYCLE]
[ CACHE n ยฆ NOCACHE];            

 

-- ์‹œํ€€์Šค
CREATE SEQUENCE seq_dept
INCREMENT BY 10
START WITH 50
MAXVALUE 90
NOCYCLE
NOCACHE;
-- Sequence SEQ_DEPT์ด(๊ฐ€) ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

INSERT INTO dept VALUES ( seq_dept.nextval ,  'QC',  'SEOUL' );

SELECT seq_dept.currval
From dual;

INSERT INTO dept VALUES ( seq_dept.nextval ,  'XX',  'SEOUL' );
COMMIT;
CREATE SEQUENCE
ALTER SEQUENCE
DROP  SEQUENCE seq_dept;
๋Œ“๊ธ€์ˆ˜0