Post

[SQL] DDL

πŸ“Œ λ“€μ–΄κ°€λ©°

이번 κΈ€μ—μ„œλŠ” DDL(Data Definition Language, 데이터 μ •μ˜μ–΄)을 μ •λ¦¬ν•œλ‹€. CREATE, ALTER, TRUNCATE, DROP λ“± ν…Œμ΄λΈ” ꡬ쑰λ₯Ό λ‹€λ£¨λŠ” λͺ…령어듀이닀.

⚠️ DDL은 λ”°λ‘œ μ»€λ°‹ν•˜μ§€ μ•Šμ•„λ„ μ¦‰μ‹œ 반영되고 둀백이 λΆˆκ°€λŠ₯ν•˜λ‹€. κ·Έλž˜μ„œ μ‚¬μš©ν•  λ•Œ 맀우 쑰심해야 ν•œλ‹€.


1. CREATE β€” ν…Œμ΄λΈ” 생성

1
2
3
4
5
6
7
8
CREATE TABLE PRODUCT(
    PRODUCT_ID   NUMBER,
    PRODUCT_NAME VARCHAR2(30),
    MANUDATE     DATE
);

INSERT INTO PRODUCT(PRODUCT_ID, PRODUCT_NAME, MANUDATE)
    VALUES(1, 'CELLPHONE', TO_DATE('YYMMDD'));

Desktop View

ν…Œμ΄λΈ”Β·μ—΄ 이름 κ·œμΉ™:

κ·œμΉ™μ„€λͺ…
쀑볡 λΆˆκ°€κ°™μ€ ν…Œμ΄λΈ”λͺ…·같은 μ—΄ 이름 λΆˆκ°€
μ˜ˆμ•½μ–΄ κΈˆμ§€SELECT, INSERT, FROM λ“± μ‚¬μš© λΆˆκ°€
문자둜 μ‹œμž‘ν•œκΈ€Β·νŠΉμˆ˜λ¬Έμž κ°€λŠ₯ν•˜λ‚˜ ꢌμž₯ μ•ˆ 함
μ λ‹Ήν•œ κΈΈμ΄λ„ˆλ¬΄ κΈ΄ 이름 μ§€μ–‘

2. ALTER β€” ν…Œμ΄λΈ” ꡬ쑰 λ³€κ²½

μ—΄ λ‹¨μœ„λ‘œ μΆ”κ°€Β·μˆ˜μ •Β·μ‚­μ œΒ·μ΄λ¦„ 변경을 ν•œλ‹€.

λͺ…λ Ήμ—­ν• 
ADD (μ—΄ νƒ€μž…)μ—΄ μΆ”κ°€
MODIFY (μ—΄ νƒ€μž…)μ—΄ νƒ€μž… λ³€κ²½
DROP COLUMN μ—΄μ—΄ μ‚­μ œ
RENAME COLUMN A TO Bμ—΄ 이름 λ³€κ²½
1
2
3
4
ALTER TABLE PRODUCT ADD (FACTORY VARCHAR2(10));               -- μΆ”κ°€
ALTER TABLE PRODUCT MODIFY (PRODUCT_NAME VARCHAR2(50));       -- νƒ€μž… λ³€κ²½
ALTER TABLE PRODUCT DROP COLUMN PRODUCT_NAME;                 -- μ‚­μ œ
ALTER TABLE PRODUCT RENAME COLUMN PRODUCT_NAME TO PRODUCT_NAMEE; -- 이름 λ³€κ²½

Desktop View Desktop View

⚠️ MODIFY둜 νƒ€μž…μ„ λ°”κΏ€ λ•Œ 기쑴보닀 μž‘μ€ ν˜•μœΌλ‘œλŠ” λ³€ν™˜ λΆˆκ°€ν•˜λ‹€. DROP COLUMN은 둀백이 μ•ˆ λ˜λ‹ˆ 특히 μ‘°μ‹¬ν•˜μž.


3. TRUNCATE vs DROP

1
2
TRUNCATE TABLE PRODUCT;   -- 틀은 남기고 'λ‚΄μš©λ§Œ' μ‚­μ œ
DROP TABLE PRODUCT;       -- ν…Œμ΄λΈ”μ„ 'μ•„μ˜ˆ' μ‚­μ œ
λͺ…λ Ήμ‚­μ œ λŒ€μƒ
TRUNCATE데이터(λ‚΄μš©)만, κ΅¬μ‘°λŠ” μœ μ§€
DROPν…Œμ΄λΈ” 자체 μ‚­μ œ

πŸ“ 정리

1
2
3
4
5
6
DDL (데이터 μ •μ˜μ–΄)
β”œβ”€ CREATE    ν…Œμ΄λΈ” 생성
β”œβ”€ ALTER     ADD/MODIFY/DROP COLUMN/RENAME (ꡬ쑰 λ³€κ²½)
β”œβ”€ TRUNCATE  λ‚΄μš©λ§Œ μ‚­μ œ (ꡬ쑰 μœ μ§€)
└─ DROP      ν…Œμ΄λΈ” 자체 μ‚­μ œ
⚠️ μ¦‰μ‹œ 반영 + λ‘€λ°± λΆˆκ°€ β†’ μ‹ μ€‘νžˆ!
κ°œλ…ν•œ 쀄 μ •μ˜
CREATEν…Œμ΄λΈ” 생성
ALTERμ—΄ λ‹¨μœ„ ꡬ쑰 λ³€κ²½
TRUNCATE vs DROPλ‚΄μš©λ§Œ μ‚­μ œ vs ν…Œμ΄λΈ” μ‚­μ œ

DDL은 ν…Œμ΄λΈ”μ˜ β€œκ΅¬μ‘°β€λ₯Ό λ‹€λ£¨λŠ” κ°•λ ₯ν•œ λͺ…λ Ήμ–΄λ‹€. 둀백이 λΆˆκ°€λŠ₯ν•˜λ‹€λŠ” 점이 DML과의 결정적 μ°¨μ΄μ΄λ‹ˆ, μ‹€ν–‰ 전에 항상 ν•œ 번 더 ν™•μΈν•˜λŠ” μŠ΅κ΄€μ„ λ“€μ΄μž.

This post is licensed under CC BY 4.0 by the author.

Comments powered by Disqus.