DDL(CREATE,ALTER,DROP)

๋‚˜์ฐฌ์›…ยท2024๋…„ 10์›” 18์ผ

DB

๋ชฉ๋ก ๋ณด๊ธฐ
8/10

๐Ÿš€ DDL ์ด๋ž€?

  • ๋ฐ์ดํ„ฐ ์ •์˜ ์–ธ์–ด๋กœ ๊ฐ์ฒด(OBJECT)๋ฅผ ๋งŒ๋“ค๊ณ (CREATE), ์ˆ˜์ •ํ•˜๊ณ (ALTER), ์‚ญ์ œ(DROP)ํ•˜๋Š” ๊ตฌ๋ฌธ์„ ๋งํ•จ

  • ๋ฐ์ดํ„ฐ์˜ ์ „์ฒด ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•˜๋Š” ์–ธ์–ด๋กœ ์ฃผ๋กœ DB๊ด€๋ฆฌ์ž, ์„ค๊ณ„์ž๊ฐ€ ์‚ฌ์šฉํ•จ.

-- ๊ฐ์ฒด : ํ…Œ์ด๋ธ”(TABLE), ๋ทฐ(VIEW), ์‹œํ€€์Šค(SEQUENCE),
-- ์ธ๋ฑ์Šค(INDEX), ์‚ฌ์šฉ์ž(USER),
-- ํŒจํ‚ค์ง€(PACKAGE), ํŠธ๋ฆฌ๊ฑฐ(TRIGGER)
-- ํ”„๋กœ์‹œ์ ธ(PROCEDURE), ํ•จ์ˆ˜(FUNCTION)
-- ๋™์˜์–ด(SYNONYM)..


โ–ถ CREATE

ํ…Œ์ด๋ธ”์ด๋‚˜ ์ธ๋ฑ์Šค, ๋ทฐ ๋“ฑ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ตฌ๋ฌธ

-- ํ…Œ์ด๋ธ”๋กœ ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋Š” DROP ๊ตฌ๋ฌธ์„ ํ†ตํ•ด ์ œ๊ฑฐ ํ•  ์ˆ˜ ์žˆ์Œ
-- DROP TABLE MEMBER;

์ž๋ฃŒํ˜•

NUMBER : ์ˆซ์žํ˜•(์ •์ˆ˜, ์‹ค์ˆ˜)

CHAR(ํฌ๊ธฐ) : ๊ณ ์ •๊ธธ์ด ๋ฌธ์žํ˜• (2000 BYTE) : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ธฐ๋ณธ ๋ฌธ์ž ์„ธํŠธ(UTF-8)๋กœ ์ธ์ฝ”๋”ฉ
--> ๋ฐ”์ดํŠธ ์ˆ˜ ๊ธฐ์ค€.
--> ์˜์–ด/์ˆซ์ž/๊ธฐํ˜ธ 1BYTE, ํ•œ๊ธ€ 3BYTE
--> CHAR(10) ์ปฌ๋Ÿผ์— 'ABC' 3BYTE ๋ฌธ์ž์—ด๋งŒ ์ €์žฅํ•ด๋„ 10BYTE ์ €์žฅ๊ณต๊ฐ„ ๋ชจ๋‘ ์‚ฌ์šฉ(๋‚จ์€ ๊ณต๊ฐ„ ๊ณต๋ฐฑ์œผ๋กœ ์ฑ„์›€ -> ๋‚ญ๋น„)

VARCHAR2(ํฌ๊ธฐ) : ๊ฐ€๋ณ€๊ธธ์ด ๋ฌธ์žํ˜• (์ตœ๋Œ€ 4000 BYTE) : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ธฐ๋ณธ ๋ฌธ์ž ์„ธํŠธ(UTF-8)๋กœ ์ธ์ฝ”๋”ฉ
--> ๋ฐ”์ดํŠธ ์ˆ˜ ๊ธฐ์ค€.
--> ์˜์–ด/์ˆซ์ž/๊ธฐํ˜ธ 1BYTE, ํ•œ๊ธ€ 3BYTE
--> VARCHAR2(10) ์ปฌ๋Ÿผ์— 'ABC' 3BYTE ๋ฌธ์ž์—ด๋งŒ ์ €์žฅํ•˜๋ฉด ๋‚˜๋จธ์ง€ 7BYTE ๋‚จ์€ ๊ณต๊ฐ„ ๋ฐ˜ํ™˜

NVARCHAR2(๋ฌธ์ž์ˆ˜) : ๊ฐ€๋ณ€๊ธธ์ด ๋ฌธ์žํ˜• (์ตœ๋Œ€ 4000 BYTE -> 2000๊ธ€์ž) : UTF-16๋กœ ์ธ์ฝ”๋”ฉ
--> ๋ฌธ์ž๊ธธ์ด ์ˆ˜ ๊ธฐ์ค€.
--> ๋ชจ๋“ ๋ฌธ์ž 2BYTE
--> NVARCHAR2(10) ์ปฌ๋Ÿผ์— 10 ๊ธ€์ž๊ธธ์ด ์•„๋ฌด๊ธ€์ž(์˜์–ด,์ˆซ์ž,ํ•œ๊ธ€ ๋“ฑ) ๊ฐ€๋Šฅ
--> NVARCHAR2(10) ์ปฌ๋Ÿผ์— '์•ˆ๋…•'๊ณผ ๊ฐ™์€ 2๊ธ€์ž(์œ ๋‹ˆ์ฝ”๋“œ ๋ฌธ์ž)๋ฅผ ์ž…๋ ฅํ–ˆ์„ ๋•Œ,
๋‚˜๋จธ์ง€ 8๊ฐœ์˜ ๋ฌธ์ž ๋‚จ์€ ๊ณต๊ฐ„ ๋ฐ˜ํ™˜

DATE : ๋‚ ์งœ ํƒ€์ž…
BLOB : ๋Œ€์šฉ๋Ÿ‰ ์ด์ง„ ๋ฐ์ดํ„ฐ (4GB)
CLOB : ๋Œ€์šฉ๋Ÿ‰ ๋ฌธ์ž ๋ฐ์ดํ„ฐ (4GB)

โœ”๏ธ ์ œ์•ฝ ์กฐ๊ฑด(CONSTRAINTS)

์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ์กฐ๊ฑด์˜ ๋ฐ์ดํ„ฐ๋งŒ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ ํŠน์ • ์ปฌ๋Ÿผ์— ์„ค์ •ํ•˜๋Š” ์ œ์•ฝ.
๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ๋ณด์žฅ์„ ๋ชฉ์ ์œผ๋กœ ํ•จ.
-> ์ค‘๋ณต ๋ฐ์ดํ„ฐ X

  • ์ž…๋ ฅ ๋ฐ์ดํ„ฐ์— ๋ฌธ์ œ๊ฐ€ ์—†๋Š”์ง€ ์ž๋™์œผ๋กœ ๊ฒ€์‚ฌํ•˜๋Š” ๋ชฉ์ 

  • ๋ฐ์ดํ„ฐ์˜ ์ˆ˜์ •/์‚ญ์ œ ๊ฐ€๋Šฅ ์—ฌ๋ถ€ ๊ฒ€์‚ฌ๋“ฑ์„ ๋ชฉ์ ์œผ๋กœ ํ•จ.
    --> ์ œ์•ฝ์กฐ๊ฑด์„ ์œ„๋ฐฐํ•˜๋Š” DML ๊ตฌ๋ฌธ์€ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†๋‹ค.

    ์ œ์•ฝ์กฐ๊ฑด ์ข…๋ฅ˜
    PRIMARY KEY, NOT NULL, UNIQUE, CHECK, FOREIGN KEY.

NOT NULL

  • ํ•ด๋‹น ์ปฌ๋Ÿผ์— ๋ฐ˜๋“œ์‹œ ๊ฐ’์ด ๊ธฐ๋ก๋˜์–ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ
    ํŠน์ • ์ปฌ๋Ÿผ์— ๊ฐ’์„ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•  ๋•Œ NULL ๊ฐ’์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋„๋ก ์ปฌ๋Ÿผ ๋ ˆ๋ฒจ์—์„œ ์ œํ•œ
  • ์ปฌ๋Ÿผ ๋ ˆ๋ฒจ : ํ…Œ์ด๋ธ” ์ƒ์„ฑ์‹œ ์ปฌ๋Ÿผ์„ ์ •์˜ํ•˜๋Š” ๋ถ€๋ถ„์— ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ

UNIQUE

  • ์ปฌ๋Ÿผ ์ž…๋ ฅ ๊ฐ’์— ๋Œ€ํ•ด ์ค‘๋ณต์„ ์ œํ•œํ•˜๋Š” ์ œ์•ฝ์กฐ๊ฑด์œผ๋กœ ์ปฌ๋Ÿผ ๋ ˆ๋ฒจ๊ณผ ํ…Œ์ด๋ธ” ๋ ˆ๋ฒจ์— ์„ค์ • ๊ฐ€๋Šฅ
  • ์ œ์•ฝ์กฐ๊ฑด ์ง€์ • ๋ฐฉ๋ฒ•
    -- 1) ์ปฌ๋Ÿผ ๋ ˆ๋ฒจ : [CONSTRAINT ์ œ์•ฝ์กฐ๊ฑด๋ช…] ์ œ์•ฝ์กฐ๊ฑด
    -- 2) ํ…Œ์ด๋ธ” ๋ ˆ๋ฒจ : [CONSTRAINT ์ œ์•ฝ์กฐ๊ฑด๋ช…] ์ œ์•ฝ์กฐ๊ฑด(์ปฌ๋Ÿผ๋ช…)
  • UNIQUE ๋ณตํ•ฉํ‚ค
    -- ๋‘ ๊ฐœ ์ด์ƒ์˜ ์ปฌ๋Ÿผ์„ ๋ฌถ์–ด์„œ ํ•˜๋‚˜์˜ UNIQUE ์ œ์•ฝ์กฐ๊ฑด์„ ์„ค์ •ํ•จ
    -- ๋ณตํ•ฉํ‚ค ์ง€์ •์€ ํ…Œ์ด๋ธ” ๋ ˆ๋ฒจ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค.!
    -- ๋ณตํ•ฉํ‚ค๋Š” ์ง€์ •๋œ ๋ชจ๋“  ์ปฌ๋Ÿผ์˜ ๊ฐ’์ด ๊ฐ™์„ ๋•Œ ์œ„๋ฐฐ๋œ๋‹ค!

PRIMARY KEY

  • ํ…Œ์ด๋ธ”์—์„œ ํ•œ ํ–‰์˜ ์ •๋ณด๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•œ ๊ณ ์œ  ์‹๋ณ„์ž(Identifier)์—ญํ• 
    NOT NULL์˜ ์˜๋ฏธ์™€ UNIQUE์˜ ์˜๋ฏธ๋ฅผ ๋‘˜ ๋‹ค ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ ํ•œ ํ…Œ์ด๋ธ” ๋‹น ํ•˜๋‚˜๋งŒ ์„ค์ • ๊ฐ€๋Šฅ
    ์ปฌ๋Ÿผ ๋ ˆ๋ฒจ๊ณผ ํ…Œ์ด๋ธ” ๋ ˆ๋ฒจ ๋‘˜ ๋‹ค ์ง€์ • ๊ฐ€๋Šฅ

  • ํ•œ ๊ฐœ ์ปฌ๋Ÿผ์— ์„ค์ •ํ•  ์ˆ˜ ์žˆ๊ณ , ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ปฌ๋Ÿผ์„ ๋ฌถ์–ด์„œ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Œ(== PRIMARY ๋ณตํ•ฉํ‚ค )


FOREIGN KEY

  • ์ฐธ์กฐ(REFERENCES)๋œ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ ์ปฌ๋Ÿผ์ด ์ œ๊ณตํ•˜๋Š” ๊ฐ’๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ
    -- FOREIGN KEY ์ œ์•ฝ์กฐ๊ฑด์— ์˜ํ•ด์„œ ํ…Œ์ด๋ธ”๊ฐ„์˜ ๊ด€๊ณ„๊ฐ€ ํ˜•์„ฑ๋จ
    -- ์ œ๊ณต๋˜๋Š” ๊ฐ’ ์™ธ์—๋Š” NULL์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ.
  • ์ปฌ๋Ÿผ๋ ˆ๋ฒจ์ผ ๊ฒฝ์šฐ
    -- ์ปฌ๋Ÿผ๋ช… ์ž๋ฃŒํ˜•(ํฌ๊ธฐ) [CONSTRAINT ์ด๋ฆ„] REFERENCES ์ฐธ์กฐํ• ํ…Œ์ด๋ธ”๋ช… [(์ฐธ์กฐํ• ์ปฌ๋Ÿผ)][์‚ญ์ œ๋ฃฐ]

  • ํ…Œ์ด๋ธ”๋ ˆ๋ฒจ์ผ ๊ฒฝ์šฐ
    -- [CONSTRAINT ์ด๋ฆ„] FOREIGN KEY (์ ์šฉํ• ์ปฌ๋Ÿผ๋ช…) REFERENCES ์ฐธ์กฐํ• ํ…Œ์ด๋ธ”๋ช… [(์ฐธ์กฐํ• ์ปฌ๋Ÿผ)][์‚ญ์ œ๋ฃฐ]

    -- ์ฐธ์กฐ๋  ์ˆ˜ ์žˆ๋Š” ์ปฌ๋Ÿผ์€ PRIMARY KEY์ปฌ๋Ÿผ๊ณผ, UNIQUE ์ง€์ •๋œ ์ปฌ๋Ÿผ๋งŒ ์™ธ๋ž˜ํ‚ค๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ.
    -- ์ฐธ์กฐํ•  ํ…Œ์ด๋ธ”์˜ ์ฐธ์กฐํ•  ์ปฌ๋Ÿผ๋ช…์ด ์ƒ๋žต๋˜๋ฉด, PRIMARY KEY๋กœ ์„ค์ •๋œ ์ปฌ๋Ÿผ์ด ์ž๋™ ์ฐธ์กฐํ•  ์ปฌ๋Ÿผ์ด ๋จ.

  • FOREIGN KEY ์‚ญ์ œ ์˜ต์…˜
    -- ๋ถ€๋ชจ ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ ์‚ญ์ œ ์‹œ ์ž์‹ ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ค ์‹์œผ๋กœ ์ฒ˜๋ฆฌํ• ์ง€์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

    -- 1) ON DELETE RESTRICTED(์‚ญ์ œ ์ œํ•œ)๋กœ ๊ธฐ๋ณธ ์ง€์ •๋˜์–ด ์žˆ์Œ
    -- FOREIGN KEY๋กœ ์ง€์ •๋œ ์ปฌ๋Ÿผ์—์„œ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š” ๊ฐ’์ผ ๊ฒฝ์šฐ
    -- ์ œ๊ณตํ•˜๋Š” ์ปฌ๋Ÿผ์˜ ๊ฐ‘์€ ์‚ญ์ œํ•˜์ง€ ๋ชปํ•จ

    -- 2) ON DELETE SET NULL : ๋ถ€๋ชจํ‚ค ์‚ญ์ œ ์‹œ ์ž์‹ํ‚ค๋ฅผ NULL๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ์˜ต์…˜

    -- 3) ON DELETE CASCADE : ๋ถ€๋ชจํ‚ค ์‚ญ์ œ์‹œ ์ž์‹ํ‚ค๋„ ํ•จ๊ป˜ ์‚ญ์ œ๋จ
    -- ๋ถ€๋ชจํ‚ค ์‚ญ์ œ ์‹œ ๊ฐ’์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋˜ ์ž์‹ ํ…Œ์ด๋ธ”์˜ ์ปฌ๋Ÿผ์— ํ•ด๋‹นํ•˜๋Š” ํ–‰์ด ์‚ญ์ œ๋จ

CHECK

  • CHECK ์ œ์•ฝ ์กฐ๊ฑด : ์ปฌ๋Ÿผ์— ๊ธฐ๋ก๋˜๋Š” ๊ฐ’์— ์กฐ๊ฑด ์„ค์ •์„ ํ•  ์ˆ˜ ์žˆ์Œ
    -- ์ด ๊ฐ’์ด๋ƒ ์ € ๊ฐ’์ด๋ƒ ์ฒดํฌ
    -- CHECK (์ปฌ๋Ÿผ๋ช… ๋น„๊ต์—ฐ์‚ฐ์ž ๋น„๊ต๊ฐ’)
    -- EX) GENDER -> CHECK( GENDER IN('๋‚จ', '์—ฌ') )
    -- -> CHECK (์ปฌ๋Ÿผ๋ช… IS NULL)

-> GENDER ์ปฌ๋Ÿผ์— CHECK ์ œ์•ฝ์กฐ๊ฑด์œผ๋กœ '๋‚จ' ๋˜๋Š” '์—ฌ' ๋งŒ ์‚ฝ์ž… ๊ฐ€๋Šฅํ•˜๋„๋ก ์„ค์ •ํ•ด๋‘ 
-> ์ด ์™ธ์˜ ๊ฐ’์ด ๋“ค์–ด์˜ค๋ฉด ์ฒดํฌ ์ œ์•ฝ์กฐ๊ฑด ์œ„๋ฐฐ๋˜์–ด ์—๋Ÿฌ ๋ฐœ์ƒ!!


โ–ถ ALTER

ALTER (๋ฐ”๊พธ๋‹ค, ์ˆ˜์ •ํ•˜๋‹ค, ๋ณ€์กฐํ•˜๋‹ค)
-- ํ…Œ์ด๋ธ”์—์„œ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ
1) ์ œ์•ฝ ์กฐ๊ฑด(์ถ”๊ฐ€/์‚ญ์ œ)
2) ์ปฌ๋Ÿผ(์ถ”๊ฐ€/์ˆ˜์ •/์‚ญ์ œ)
3) ์ด๋ฆ„๋ณ€๊ฒฝ (ํ…Œ์ด๋ธ”๋ช…, ์ปฌ๋Ÿผ๋ช…..)

โ–ถ DROP

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ์ฒด๋ฅผ ์‚ญ์ œํ•˜๋Š” ๊ตฌ๋ฌธ

  • DDL ์ฃผ์˜์‚ฌํ•ญ
    -- 1) DDL ์€ COMMIT/ROLLBACK ์ด ๋˜์ง€ ์•Š๋Š”๋‹ค.
    -- 2) DDL๊ณผ DML ๊ตฌ๋ฌธ ์„ž์–ด์„œ ์ˆ˜ํ–‰ํ•˜๋ฉด ์•ˆ๋œ๋‹ค!

    -- DDL(CREATE ALTER DROP : ๊ฐ์ฒด ์ƒ์„ฑ/์ˆ˜์ •/์‚ญ์ œ)
    -- DML(INSERT,UPDATE,DELETE : ๋ฐ์ดํ„ฐ(ํ–‰) ์ถ”๊ฐ€/๊ฐฑ์‹ /์‚ญ์ œ)

    --> DDL์€ ์ˆ˜ํ–‰ ์‹œ ์กด์žฌํ•˜๊ณ  ์žˆ๋Š” ํŠธ๋žœ์žญ์…˜์„ ๋ชจ๋‘ DB์— ๊ฐ•์ œ COMMIT ์‹œํ‚ด

-> DDL์ด ์ข…๋ฃŒ๋œ ํ›„ DML ๊ตฌ๋ฌธ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ถŒ์žฅ!

0๊ฐœ์˜ ๋Œ“๊ธ€