Home > SQL > 2024 > πŸ’‰[SQL] DDLμ΄λž€?

πŸ’‰[SQL] DDLμ΄λž€?
SQL

πŸ’‰[SQL] DDLμ΄λž€?

DDL(Data Definition Language) 은 λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ 데이터 ꡬ쑰λ₯Ό μ •μ˜ν•˜κ³  κ΄€λ¦¬ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” SQL의 ν•˜μœ„ μ–Έμ–΄ μž…λ‹ˆλ‹€.

DDL λͺ…λ Ήμ–΄λŠ” λ°μ΄ν„°λ² μ΄μŠ€μ˜ ν…Œμ΄λΈ”, 인덳, μŠ€ν‚€λ§ˆ, λ·° λ“±κ³Ό 같은 객체듀을 생성, μˆ˜μ •, μ‚­μ œν•˜λŠ” μž‘μ—…μ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€.

λ°μ΄ν„°λ² μ΄μŠ€ λ‚΄μ—μ„œ 데이터λ₯Ό μ €μž₯ν•  ꡬ쑰λ₯Ό μ„€μ •ν•˜κ³ , κ·Έ ꡬ쑰λ₯Ό λ³€κ²½ν•˜κ±°λ‚˜ μ‚­μ œν•˜λŠ” 역할을 ν•©λ‹ˆλ‹€.

1️⃣ DDL의 μ£Όμš” λͺ…λ Ήμ–΄.

1. CREATE

  • λ°μ΄ν„°λ² μ΄μŠ€ 객체(ν…Œμ΄λΈ”, 인덱슀, μŠ€ν‚€λ§ˆ, λ·° λ“±) λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.
  • 예λ₯Ό λ“€μ–΄, ν…Œμ΄λΈ”μ„ 생성할 λ•Œ CREATE TABLE λͺ…λ Ήμ–΄λ₯Ό μ‚¬μš©ν•˜μ—¬ ν…Œμ΄λΈ”μ˜ ꡬ쑰λ₯Ό μ •μ˜ν•©λ‹ˆλ‹€.

μ˜ˆμ‹œ: ν…Œμ΄λΈ” 생성.

CREATE TABLE Users (
    id INT PRIMARY KEY,
    name VARCHAR(100),
    email VARCHAR(100)
);

2. ALTER

  • 기쑴에 μƒμ„±λœ λ°μ΄ν„°λ² μ΄μŠ€ 객체의 ꡬ쑰λ₯Ό μˆ˜μ •ν•˜λŠ”λ° μ‚¬μš©λ©λ‹ˆλ‹€.
  • ν…Œμ΄λΈ”μ— μƒˆλ‘œμš΄ 열을 μΆ”κ°€ν•˜κ±°λ‚˜, μ—΄μ˜ 데이터 νƒ€μž…μ„ λ³€κ²½ν•˜λŠ” λ“±μ˜ μž‘μ—…μ„ μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ˜ˆμ‹œ: ν…Œμ΄λΈ” μ—΄ μΆ”κ°€

ALTER TABLE Users
ADD COLUMN age INT;

3. DROP

  • λ°μ΄ν„°λ² μ΄μŠ€ 객체λ₯Ό μ‚­μ œν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€.
  • ν…Œμ΄λΈ”, 인덱슀, λ·° λ“±μ˜ 객체λ₯Ό μ‚­μ œν•  λ•Œ μ‚¬μš©ν•©λ‹ˆλ‹€.
  • DROP λͺ…λ Ήμ–΄λŠ” 맀우 κ°•λ ₯ν•˜λ©°, ν•œλ²ˆ 객체가 μ‚­μ œλ˜λ©΄ κ·Έ μ•ˆμ˜ λͺ¨λ“  데이터도 ν•¨κ»˜ 사라지기 λ•Œλ¬Έμ— μ£Όμ˜κ°€ ν•„μš”ν•©λ‹ˆλ‹€.

μ˜ˆμ‹œ: ν…Œμ΄λΈ” μ‚­μ œ

DROP TABLE Users;

4. TRUNCATE

  • ν…Œμ΄λΈ”μ˜ λͺ¨λ“  데이터λ₯Ό μ‚­μ œ ν•˜μ§€λ§Œ, ν…Œμ΄λΈ”μ˜ κ΅¬μ‘°λŠ” μœ μ§€ν•©λ‹ˆλ‹€.
    • λ°μ΄ν„°λ§Œ μ‚­μ œλ˜κ³ , ν…Œμ΄λΈ” μžμ²΄λŠ” 남아 μžˆμœΌλ―€λ‘œ ν…Œμ΄λΈ”μ„ λ‹€μ‹œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • DELETE λͺ…λ Ήμ–΄μ™€λŠ” 달리, κ°œλ³„ νŠΈλžœμž­μ…˜μ„ κΈ°λ‘ν•˜μ§€ μ•Šκ³  데이터λ₯Ό μΌκ΄„μ μœΌλ‘œ μ‚­μ œν•˜λ―€λ‘œ 더 λΉ λ₯΄κ²Œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

μ˜ˆμ‹œ: ν…Œμ΄λΈ” 데이터 λͺ¨λ‘ μ‚­μ œ.

TRUNCATE TABLE Users;

2️⃣ DDL의 μ£Όμš” νŠΉμ§•.

데이터 ꡬ쑰 μ •μ˜.

  • DDL λͺ…λ Ήμ–΄λŠ” 데이터λ₯Ό μ €μž₯ν•  ν…Œμ΄λΈ”κ³Ό 같은 ꡬ쑰λ₯Ό μ •μ˜ν•˜λŠ” 역할을 ν•©λ‹ˆλ‹€.
  • ν…Œμ΄λΈ” 생성, μˆ˜μ •, μ‚­μ œ 같은 μž‘μ—…μ΄ 여기에 ν¬ν•¨λ©λ‹ˆλ‹€.

μžλ™ 컀밋.

  • DDL λͺ…λ Ήμ–΄λŠ” μ‹€ν–‰ μ¦‰μ‹œ μžλ™μœΌλ‘œ 컀밋(Commit) λ©λ‹ˆλ‹€.
  • 즉, CREATE, ALTER, DROP 같은 λͺ…λ Ήμ–΄λŠ” νŠΈλžœμž­μ…˜μœΌλ‘œ 묢이지 μ•Šκ³ , μ‹€ν–‰κ³Ό λ™μ‹œμ— μ¦‰μ‹œ λ°μ΄ν„°λ² μ΄μŠ€μ— λ°˜μ˜λ©λ‹ˆλ‹€.

비ꡐ적 λ‹¨μˆœν•œ μž‘μ—….

  • DDL λͺ…λ Ήμ–΄λŠ” 데이터λ₯Ό 직접 μ‘°μž‘ν•˜μ§€ μ•Šκ³ , 데이터λ₯Ό μ €μž₯ν•  ꡬ쑰λ₯Ό λ‹€λ£¨λŠ” 데 μ΄ˆμ μ„ 맞μΆ₯λ‹ˆλ‹€.

3️⃣ DDLκ³Ό DML의 차이점.

DDL(Data Definition Language)

  • λ°μ΄ν„°λ² μ΄μŠ€μ˜ ꡬ쑰λ₯Ό μ •μ˜ν•˜λŠ” μ–Έμ–΄μž…λ‹ˆλ‹€.
    • 주둜 ν…Œμ΄λΈ” 인덱슀 λ“±μ˜ 데이터 ꡬ쑰λ₯Ό 생성, λ³€κ²½, μ‚­μ œν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€.

DML(Data Manipulation Language)

  • λ°μ΄ν„°λ² μ΄μŠ€ λ‚΄μ˜ 데이터λ₯Ό μ‘°μž‘ν•˜λŠ” μ–Έμ–΄μž…λ‹ˆλ‹€.
    • 데이터λ₯Ό μ‚½μž…(INSERT), 쑰회(SELECT), μˆ˜μ •(UPDATE), μ‚­μ œ(DELETE)ν•˜λŠ” μž‘μ—…μ΄ DML에 ν•΄λ‹Ήν•©λ‹ˆλ‹€.

4️⃣ DDL μ‚¬μš© μ˜ˆμ‹œ.

-- ν…Œμ΄λΈ” 생성
CREATE TABLE Employees (
    emp_id INT PRIMARY KEY,
    emp_name VARCHAR(100),
    emp_salary DECIMAL(10, 2)
);

-- ν…Œμ΄λΈ” μˆ˜μ • (μƒˆλ‘œμš΄ μ—΄ μΆ”κ°€)
ALTER TABLE Employees
ADD COLUMN emp_department VARCHAR(50);

-- ν…Œμ΄λΈ” 데이터 일괄 μ‚­μ œ (ν…Œμ΄λΈ” κ΅¬μ‘°λŠ” μœ μ§€)
TRUNCATE TABLE Employees;

-- ν…Œμ΄λΈ” μ‚­μ œ
DROP TABLE Employees;

5️⃣ μš”μ•½.

DDL(Data Definition Language)은 λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ ν…Œμ΄λΈ”, 인덱슀, μŠ€ν‚€λ§ˆμ™€ 같은 데이터 ꡬ쑰λ₯Ό μƒμ„±ν•˜κ³  κ΄€λ¦¬ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” SQL μ–Έμ–΄μž…λ‹ˆλ‹€.

DDL은 λ°μ΄ν„°μ˜ μ €μž₯ ꡬ쑰λ₯Ό μ •μ˜ν•˜λ©°, μ£Όμš” λͺ…λ Ήμ–΄λ‘œλŠ” CREATE, ALTER, DROP, TRUNCATEκ°€ μžˆμŠ΅λ‹ˆλ‹€.

DDL λͺ…λ Ήμ–΄λŠ” λ°μ΄ν„°λ² μ΄μŠ€μ˜ ꡬ쑰λ₯Ό λ³€κ²½ν•  λ•Œ μ‚¬μš©λ˜λ©°, 데이터 자체λ₯Ό 닀루지 μ•Šκ³ , ν…Œμ΄λΈ”κ³Ό 같은 데이터 μ €μž₯μ†Œμ˜ ν˜•μ‹μ„ μ •μ˜ν•˜λŠ” 데 쀑점을 λ‘‘λ‹ˆλ‹€.