23. Back-end/23. DATABASE

DDL(Data Define Language), ์ œ์•ฝ์กฐ๊ฑด ์กฐํšŒ, ์ œ์•ฝ์กฐ๊ฑด ์ข…๋ฅ˜

keemzeehae 2022. 1. 26. 00:19

Data Define Language


DB์˜ Table, User, Sequence ๋ฅผ Object๋ผ๊ณ  ํ•จ

DB์˜ Object๋ฅผ ์ƒ์„ฑ, ์ˆ˜์ •, ์‚ญ์ œ

- Create : ์ƒ์„ฑ

- Alter: ์ˆ˜์ •

- Drop, Truncate : ์‚ญ์ œ

- Rename : ์ด๋ฆ„ ์ˆ˜์ •

 

 

์ œ์•ฝ์กฐ๊ฑด

์ด์ƒํ•œ(๊ฒฐํ•จ์ด ์žˆ๋Š”) Data ๊ฐ€ ์ž…๋ ฅ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ : ๋ฌด๊ฒฐ์„ฑ ์›์น™ 

๋ฌด๊ฒฐ์„ฑ ์›์น™์„ ์œ„๋ฐ˜ํ•˜๋ฉด ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒ ์‹œํ‚ด

 

1. ์ œ์•ฝ ์กฐ๊ฑด ์กฐํšŒ

 - SELECT * FROM USER_CONSTRAINTS; 

 - SELECT * FROM USER_CONSTRAINT WHERE TABLE_NAME='ํ…Œ์ด๋ธ”๋ช…';

 

2. ์ œ์•ฝ ์กฐ๊ฑด ์ข…๋ฅ˜

 1) NULL : NULL๊ฐ’ ํ—ˆ์šฉ, Default

 2) not NULL (NN) : NULL๊ฐ’์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Œ(NULL์ด ๋“ค์–ด๊ฐ€๋ฉด ์—๋Ÿฌ)

 3) Unique (UK) : ๊ฐ™์€ ๊ฐ’์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Œ(์ค‘๋ณต ๋ถˆ๊ฐ€), NULL ์ž…๋ ฅ ๊ฐ€๋Šฅ( ๊ทผ๋ฐ ํ•œ๋ฒˆ๋งŒ ๋“ค์–ด๊ฐ€์•ผ ๋จ)

 4) Primary Key (PK): Not NULL + Unique  null ๊ฐ’์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๊ณ  ์ค‘๋ณต๋„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๊ฒ ๋‹ค 

 5) Default : ๊ฐ’์„ ๋„ฃ์ง€ ์•Š์œผ๋ฉด ๊ธฐ๋ณธ๊ฐ’ ์ ์šฉ

 6) Check (C) : ์กฐ๊ฑด์— ๋งž๋Š” ๊ฐ’๋งŒ ํ—ˆ์šฉ(where์˜ ์กฐ๊ฑด์‹๊ณผ ๊ฐ™์€ ํ˜•์‹)

 7) Foerign Key 

  - ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์„ ์ฐธ์กฐ

  - ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”๊ณผ ๊ด€๊ณ„(Relation) ์ฒ˜๋ฆฌ 

  - ์ฐธ์กฐ ๋˜๋Š” ํ…Œ์ด๋ธ” ๋ถ€๋ชจํ…Œ์ด๋ธ”, ์ฐธ์กฐํ•˜๋Š” ํ…Œ์ด๋ธ”์€ ์ž์‹ํ…Œ์ด๋ธ”

  - ๋ถ€๋ชจํ…Œ์ด๋ธ”์˜ ์ปฌ๋Ÿผ์€ ๊ธฐ๋ณธํ‚ค (Primary key or Unique)๋กœ ์ง€์ •๋œ ์ปฌ๋Ÿผ์ด์–ด์•ผ ํ•จ

  - ๋ถ€๋ชจํ…Œ์ด๋ธ”์˜ ํ…Œ์ด๋ธ”์„์‚ญ์ œํ•˜๋ ค๋ฉด ์ž์‹ํ…Œ์ด๋ธ”์—์„œ ์ฐธ์กฐํ•˜๋Š” row๊ฐ€ ์—†์–ด์•ผ๋งŒ ์‚ญ์ œ ๊ฐ€๋Šฅ

  ์ฐธ์กฐ๋‹นํ•˜๋Š” Table(Parent, ๋ถ€๋ชจ), ์ฐธ์กฐํ•˜๋Š” Table (Child, ์ž์‹)

 

  * TABLE ์ƒ์„ฑ์‹œ ๋ถ€๋ชจ์˜ TUPLE(ROW)๊ฐ€ ์‚ญ์ œ ๋  ๋•Œ ์ž๋™์œผ๋กœ ์ž์‹์˜ TUPLE(ROW)์„ ๋ณ€๊ฒฝํ•˜๋Š” ์˜ต์…˜ 

   A. ์ž์‹์˜ Tuple(row) ๋„ ๊ฐ™์ด ์‚ญ์ œ: ON DELETE CASCADE

EX) NUM NUMBER CONSTRAINT POINT_NUM_FK REFERENCES STUDENT(NUM) ON DELETE CASCADE,

   B. ์ž์‹์˜ Attribute  (Column) ์— NULL : ON DELETE SET NULL

EX) NUM NUMBER CONSTRAINT POINT_NUM_FK REFERENCES STUDENT(NUM) ON DELETE SET NULL,

 

3. ์ œ์•ฝ ์กฐ๊ฑด ์„ค์ • ๋ฐฉ์‹

  1) ์ œ์•ฝ ์กฐ๊ฑด ์ด๋ฆ„: ํ…Œ์ด๋ธ”๋ช…_์ปฌ๋Ÿผ๋ช…_์ œ์•ฝ์กฐ๊ฑด์˜ ์•ฝ์นญ 

  2) ์ œ์•ฝ ์กฐ๊ฑด ์•ฝ์นญ

    a. Primary key : PK (P)

    b. Foreign key : FK (R)

    c. Unique : U

    d. Not null : NN (C)

    e. Check : C


4. DB ๋ชจ๋ธ๋ง ์šฉ์–ด ์ •๋ฆฌ

  Table -> ๋ฆด๋ ˆ์ด์…˜ (Relation)

  Column -> ์†์„ฑ (Attribute)

  Row -> ํŠœํ”Œ (Tuple)

             ์ธ์Šคํ„ด์Šค (Instance) : Data ๋“ค์˜ ์ง‘ํ•ฉ

             ์Šคํ‚ค๋งˆ(Schema) : ๊ธฐ๋ณธ๊ตฌ์กฐ (๋ผˆ๋Œ€, ์ปฌ๋Ÿผ๋ช…), ์–ด๋–ค ์ปฌ๋Ÿผ(Attribute) ๋“ค๋กœ ๊ตฌ์„ฑ

             ๋„๋ฉ”์ธ(Domain) : ํ•œ ์ปฌ๋Ÿผ(Attribute) ์— ์žˆ๋Š” Data๋“ค์˜ ์ง‘ํ•ฉ

 

5. key์˜ ์ข…๋ฅ˜

 

  1) ํ›„๋ณดํ‚ค (Candidate Key)

   - ๋ฆด๋ ˆ์ด์…˜์„ ๊ตฌ์„ฑํ•˜๋Š” ์†์„ฑ๋“ค ์ค‘์—์„œ ํŠœํ”Œ์„ ์œ ์ผํ•˜๊ฒŒ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ๋“ค

   - ๋ชจ๋“  ๋ฆด๋ ˆ์ด์…˜์€ ํ•˜๋‚˜ ์ด์ƒ์˜ ํ›„๋ณดํ‚ค๊ฐ€ ์žˆ์–ด์•ผ ํ•จ

   - ์ค‘๋ณต์ด ์•ˆ๋˜๋Š” Data๊ฐ€ ์žˆ๋Š” ์†์„ฑ๋“ค (Attribute)

   - Primary key(๊ธฐ๋ณธํ‚ค)๊ฐ€ ๋  ์ˆ˜ ์žˆ๋Š” ์†์„ฑ๋“ค

  

  2) ๊ธฐ๋ณธํ‚ค (Primary Key)

   - ํ›„๋ณดํ‚ค ์ค‘์—์„œ ํ•˜๋‚˜๋ฅผ ์„ ํƒ

   - ๋ฆด๋ ˆ์ด์…˜์—์„œ ํ•˜๋‚˜์˜ tuple์„ ๊ตฌ๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ์†์„ฑ

 

  3) ๋Œ€์ฒดํ‚ค (Alternate key)

  - ํ›„๋ณดํ‚ค ์ค‘์—์„œ Primary key๋ฅผ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€

 

  4) ์Šˆํผํ‚ค (Super key)

  - ์œ ์ผ์„ฑ ๋งŒ์กฑ, ์ตœ์†Œ์„ฑ์€ ๋งŒ์กฑํ•˜์ง€ ์•Š์€ ๊ฒƒ

  - ๋‘๊ฐœ์˜ ์†์„ฑ(Attribute)์„ ๋ชจ์•„์„œ ํ•˜๋‚˜์˜ ํ‚ค๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ

 

  5) ์™ธ๋ž˜ํ‚ค (Foreign key)

  - ๋‹ค๋ฅธ ๋ฆด๋ ˆ์ด์…˜(Table)๊ณผ ์ฐธ์กฐ ๊ด€๊ณ„๋ฅผ ๋งบ์„ ๋•Œ ์‚ฌ์šฉ

  - ์™ธ๋ž˜ํ‚ค๋กœ ์ง€์ •๋˜๋ฉด Primary key์— ์—†๋Š” ๊ฐ’์€ ์ž…๋ ฅํ•  ์ˆ˜ ์—†์Œ

  - ์ฐธ์กฐ๋‹นํ•˜๋Š” Table(Parent, ๋ถ€๋ชจ) , ์ฐธ์กฐํ•˜๋Š” Table(Child, ์ž์‹)

  - ๋ถ€๋ชจ์˜ Tuple(Row) ๋ฅผ ์‚ญ์ œํ•˜๋ ค๋ฉด ์ฐธ์กฐํ•˜๋Š” ์ž์‹ Tuple(Row)๊ฐ€ ์—†์–ด์•ผ ํ•จ

  - Table ์ƒ์„ฑ์‹œ ๋ถ€๋ชจ์˜ Tuple(Row)๊ฐ€ ์‚ญ์ œ ๋  ๋•Œ ์ž๋™์œผ๋กœ ์ž์‹์˜ Tuple(Row)์„ ๋ณ€๊ฒฝํ•˜๋Š” ์˜ต์…˜

      a. ์ž์‹์˜ Tuple(Row)๋„ ๊ฐ™์ด ์‚ญ์ œ : ON DELETE CASCADE

      b. ์ž์‹์˜ Attribute(Column)์— NULL : ON DELETE SET NULL

     ex) CONSTRAINT POINT_NUM_FK REFERENCES STUDENT (NUM) ON DELETE SET NULL -- ON DELETE CASCADE


Table ์ƒ์„ฑ ์ˆ˜์ • ์‚ญ์ œ

1. Table ์ƒ์„ฑ

 Create Table ํ…Œ์ด๋ธ”๋ช…(

  ์ปฌ๋Ÿผ๋ช…1 ๋ฐ์ดํ„ฐํƒ€์ž…,

  ์ปฌ๋Ÿผ๋ช…2 ๋ฐ์ดํ„ฐํƒ€์ž…,

  ์ปฌ๋Ÿผ๋ช…3 ๋ฐ์ดํ„ฐํƒ€์ž…,

   ...

  ์ปฌ๋Ÿผ๋ช…4 ๋ฐ์ดํ„ฐํƒ€์ž…

   )

 

a. ์ปฌ๋Ÿผ๋ ˆ๋ฒจ ๋ฐฉ์‹

  CREATE TABLE ํ…Œ์ด๋ธ”๋ช…(

   ์ปฌ๋Ÿผ๋ช…1 ๋ฐ์ดํ„ฐํƒ€์ž… CONSTRAINT ์ œ์•ฝ์กฐ๊ฑด์ด๋ฆ„ ์ œ์•ฝ์กฐ๊ฑด,

   ์ปฌ๋Ÿผ๋ช…2 ๋ฐ์ดํ„ฐํƒ€์ž… CONSTRAINT ์ œ์•ฝ์กฐ๊ฑด์ด๋ฆ„ ์ œ์•ฝ์กฐ๊ฑด,

   ์ปฌ๋Ÿผ๋ช…3 ๋ฐ์ดํ„ฐํƒ€์ž… CONSTRAINT ์ œ์•ฝ์กฐ๊ฑด์ด๋ฆ„ REFERENCES ์ฐธ์กฐํ• ํ…Œ์ด๋ธ”๋ช… (์ฐธ์กฐํ• ์ปฌ๋Ÿผ๋ช…)

    -- ์ปฌ๋Ÿผ๋ช…๊ณผ ์ฐธ์กฐํ•  ์ปฌ๋Ÿผ๋ช…์ด ๊ฐ™๋‹ค๋ฉด (์ฐธ์กฐํ• ์ปฌ๋Ÿผ๋ช…) ์ƒ๋žต ๊ฐ€๋Šฅ

     ...

   )

 

b. ํ…Œ์ด๋ธ”๋ ˆ๋ฒจ ๋ฐฉ์‹

  CREATE TABLE ํ…Œ์ด๋ธ”๋ช…(

   ์ปฌ๋Ÿผ๋ช…1 ๋ฐ์ดํ„ฐํƒ€์ž…,

   ์ปฌ๋Ÿผ๋ช…2 ๋ฐ์ดํ„ฐํƒ€์ž…,

    ...

   CONSTRAINT ์ œ์•ฝ์กฐ๊ฑด์ด๋ฆ„ ์ œ์•ฝ์กฐ๊ฑด (์ ์šฉํ•  ์ปฌ๋Ÿผ๋ช…),

   CONSTRAINT ์ œ์•ฝ์กฐ๊ฑด์ด๋ฆ„ ์ œ์•ฝ์กฐ๊ฑด (์ ์šฉํ•  ์ปฌ๋Ÿผ๋ช…),

   CONSTRAINT ์ œ์•ฝ์กฐ๊ฑด์ด๋ฆ„ FOREIGN KEY (์ง€์ •ํ• ์ปฌ๋Ÿผ๋ช…) REFERENCES ์ฐธ์กฐํ• ํ…Œ์ด๋ธ”๋ช… (์ฐธ์กฐํ• ์ปฌ๋Ÿผ๋ช…)

   -- ์ง€์ •ํ• ์ปฌ๋Ÿผ๋ช… ์ฐธ์กฐํ• ์ปฌ๋Ÿผ๋ช…์ด ๊ฐ™์„ ๊ฒฝ์šฐ (์ฐธ์กฐํ• ์ปฌ๋Ÿผ๋ช…)์€ ์ƒ๋žต ๊ฐ€๋Šฅ

 

...

)

 

c. ์ œ์•ฝ ์กฐ๊ฑด ์—†์ด ํ…Œ์ด๋ธ” ์ƒ์„ฑ ํ›„ ์ œ์•ฝ ์กฐ๊ฑด ์ถ”๊ฐ€

- NOT NULL ๊ณผ DEFAULT๋Š” ์ปฌ๋Ÿผ ๋ ˆ๋ฒจ ๋ฐฉ์‹์—์„œ๋งŒ ๊ฐ€๋Šฅ

- ์ปฌ๋Ÿผ ๋ ˆ๋ฒจ ๋ฐฉ์‹๊ณผ ํ…Œ์ด๋ธ” ๋ ˆ๋ฒจ ๋ฐฉ์‹์€ ํ˜ผ์šฉ์ด ๊ฐ€๋Šฅ

 

 

2. TABLE ์‚ญ์ œ

 

1) DROP

 - TABLE ์ž์ฒด๋ฅผ ์‚ญ์ œ

 - DROP TABLE ํ…Œ์ด๋ธ”๋ช…

2) TRUNCATE

 -TABLE ์„ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋ชจ๋“  ROW(TUPLE) ์„ ์‚ญ์ œ

 -TABLE ๊ตฌ์กฐ๋ฅผ ์œ ์ง€

 -TRUNCATE TABLE ํ…Œ์ด๋ธ”๋ช…

 

3) DML์˜ DELETE

 - WHERE ์—†์ด ์‚ฌ์šฉํ•˜๋ฉด ๋ชจ๋“  ROW๊ฐ€ ์‚ญ์ œ 

 

EX) TEST TABLE์— 3๊ฐœ์˜ DATA๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ

 - DROP : ๊ตฌ์กฐ์™€ DATA๊ฐ€ ์‚ญ์ œ

 - TRUNCATE : ๊ตฌ์กฐ์œ ์ง€, ๋ฐ์ดํ„ฐ ์‚ญ์ œ

 - DELETE : ๊ตฌ์กฐ ์œ ์ง€, ๋ฐ์ดํ„ฐ ์‚ญ์ œ , ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋˜ 3์ค„๋„ ์œ ์ง€(๋ˆˆ์— ๋ณด์ด์ง€ ์•Š์ง€๋งŒ)

 

4) RECYCLTBIN(ํœด์ง€ํ†ต)

 - DB์—์„œ ์‚ญ์ œ๋œ TABLE์€ ํœด์ง€ํ†ต์œผ๋กœ ์ด๋™

 - SELECT * FROM RECYCLEBIN : ํœด์ง€ํ†ต ์กฐํšŒ

 - PURGE RECYCLEBIN : ํœด์ง€ํ†ต ๋น„์šฐ๊ธฐ, ๋ณต์› X

 - DROP TABLE ํ…Œ์ด๋ธ”๋ช… PURGE : ํœด์ง€ํ†ต์— ์ €์žฅํ•˜์ง€ ์•Š๊ณ  ๋ฐ”๋กœ ์‚ญ์ œ, ๋ณต์› X

 - FLASHBACK TABLE ํ…Œ์ด๋ธ”๋ช… TO BEFORE DROP : ํœด์ง€ํ†ต์—์„œ ๋ณต์›

 

 

3. TABLE ์ˆ˜์ •

  1) ์ปฌ๋Ÿผ(Column)์ถ”๊ฐ€ 

    ์‚ฌ์šฉ๋ฒ•

      ALTER TABLE ํ…Œ์ด๋ธ”๋ช… ADD (์ปฌ๋Ÿผ๋ช… DATATYPE)

  2) ์ปฌ๋Ÿผ(Column)์‚ญ์ œ

    ์‚ฌ์šฉ๋ฒ•

      ALTER TABLE ํ…Œ์ด๋ธ”๋ช… DROP COLUMN ์ปฌ๋Ÿผ๋ช…

     

  3) ์ปฌ๋Ÿผ(Column)์ด๋ฆ„ ๋ณ€๊ฒฝ

    ์‚ฌ์šฉ๋ฒ•

      ALTER TABLE ํ…Œ์ด๋ธ”๋ช… RENAME COLUMN ๊ธฐ์กด์ปฌ๋Ÿผ๋ช… TO ์ƒˆ๋กœ์šด์ปฌ๋Ÿผ๋ช…

 

  4) Column DataType ๋ณ€๊ฒฝ

   ์‚ฌ์šฉ๋ฒ•

      ALTER TABLE ํ…Œ์ด๋ธ”๋ช… MODIFY (COLUMN ๋ช… DataType ) 

      - ๋ณ€๊ฒฝ ์ „์—๋Š” ํ•ด๋‹น ์ปฌ๋Ÿผ์˜ ๋ฐ์ดํ„ฐ๋ฅผ NULL๋กœ ์ˆ˜์ •(UPDATE)

      - ๊ฐ™์€ DataType์œผ๋กœ ๋ณ€๊ฒฝํ•  ๊ฒฝ์šฐ๋Š” ๋ฐ”๋กœ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ

      - ๊ฐ™์€ DataType ์ด๋ผ๋„ Size ๊ฐ€ ๋งž์ง€ ์•Š์œผ๋ฉด ๋ฐ”๋กœ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅ

 

5) Table์˜ ์ด๋ฆ„์„ ๋ณ€๊ฒฝ 

    RENAME ๋ณ€๊ฒฝ์ „ํ…Œ์ด๋ธ”๋ช… TO ์ƒˆ๋กœ์šดํ…Œ์ด๋ธ”๋ช… 

- ๋ถ€๋ชจํ…Œ์ด๋ธ”์ด๋ผ ํ•˜๋”๋ผ๋„ ์ž์‹ํ…Œ์ด๋ธ”๊ณผ ์ƒ๊ด€์—†์ด ๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅํ•˜๋‹ค( ์ฐธ์กฐํ•œ ๊ฒƒ ์ž๋™์œผ๋กœ ๋ณ€๊ฒฝ)

 

 

4. CONSTRAINT (์ œ์•ฝ์กฐ๊ฑด) ์ˆ˜์ •

- ๋งŒ๋“ค์–ด์ง„ ์ œ์•ฝ ์กฐ๊ฑด์€ ์ˆ˜์ •์ด ๋ถˆ๊ฐ€๋Šฅ ํ•จ 

->์‚ญ์ œํ•˜๊ณ  ์ƒˆ๋กœ ์ถ”๊ฐ€

1) ์ƒˆ๋กœ์šด ์ œ์•ฝ์กฐ๊ฑด ์ถ”๊ฐ€ 

ALTER TABLE ํ…Œ์ด๋ธ”๋ช… ADD CONSTRAINT ์ œ์•ฝ์กฐ๊ฑด์ด๋ฆ„ ์ œ์•ฝ์กฐ๊ฑด (์ถ”๊ฐ€ํ•  ์ปฌ๋Ÿผ๋ช…)

 

-> ์ œ์•ฝ์กฐ๊ฑด์ด๋ฆ„์€ POINT_NO_PK์ด๋Ÿฐ๊ฑธ ๋งํ•˜๋Š”๋ฐ ๊ฐœ๋ฐœ์ž๊ฐ€ ์„ค์ •ํ•ด์ฃผ๋Š” ๊ฒƒ

 

2) ์ œ์•ฝ ์กฐ๊ฑด ์‚ญ์ œ

ALTER TABLE ํ…Œ์ด๋ธ”๋ช… DROP CONSTRAINT ์ œ์•ฝ์กฐ๊ฑด์ด๋ฆ„ 

EX)

ALTER TABLE BOARD DROP CONSTRAINT PK;

ALTER TABLE BOARD DROP CONSTRAINT BOARD_NAME_FK;

 

 

์ด๋ ‡๊ฒŒ๋„ ์“ธ ์ˆ˜ ์žˆ๊ธดํ•จ 

ALTER TABLE ํ…Œ์ด๋ธ”๋ช… DROP CONSTRAINT ์ œ์•ฝ์กฐ๊ฑด๋ช… 

EX) ALTER TABLE BOARD DROP CONSTRAINT PRIMARY KEY; 

 

 

 

 

 

 

 

'23. Back-end > 23. DATABASE' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

DDL SEQUENCE, ORCL SID ํ™•์ธ๋ฐฉ๋ฒ•  (0) 2022.02.02
DML (INSERT, UPDATE, DELETE) ์ •๋ฆฌ  (0) 2022.01.26
JOIN!  (0) 2022.01.26
๊ทธ๋ฃนํ•จ์ˆ˜, SUBQUERY, HAVING , ORDER BY  (0) 2022.01.22
SQL, DB BASIC DML  (0) 2022.01.21