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

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

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

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

DML λͺ…λ Ήμ–΄λŠ” λ°μ΄ν„°λ² μ΄μŠ€ ν…Œμ΄λΈ”μ— 데이터λ₯Ό μ‚½μž…, μˆ˜μ •, μ‚­μ œ, μ‘°νšŒν•˜λŠ” μž‘μ—…μ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€.

DML은 주둜 ν…Œμ΄λΈ” λ‚΄μ˜ 데이터λ₯Ό λ‹€λ£¨λŠ” 데 μ‚¬μš©λ˜λ©°, λ°μ΄ν„°λ² μ΄μŠ€μ˜ ꡬ쑰(예: ν…Œμ΄λΈ” 생성 λ˜λŠ” μ‚­μ œ)λ₯Ό λ³€κ²½ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

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

1. SELECT

  • λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ 데이터λ₯Ό μ‘°νšŒν•˜λŠ” λͺ…λ Ήμ–΄μž…λ‹ˆλ‹€.
  • ν…Œμ΄λΈ”μ— μ €μž₯된 데이터λ₯Ό μ„ νƒμ μœΌλ‘œ κ°€μ Έμ˜€κ±°λ‚˜ νŠΉμ • 쑰건에 λ§žλŠ” 데이터λ₯Ό 검색할 수 μžˆμŠ΅λ‹ˆλ‹€.

μ˜ˆμ‹œ: 데이터 쑰회

SELECT * FROM User WHERE age > 25;
  • Users ν…Œμ΄λΈ”μ—μ„œ ageκ°€ 25보닀 큰 λͺ¨λ“  행을 μ‘°νšŒν•©λ‹ˆλ‹€.

2. INSERT

  • ν…Œμ΄λΈ”μ— 데이터λ₯Ό μ‚½μž…ν•˜λŠ” λͺ…λ Ήμ–΄μž…λ‹ˆλ‹€.
  • ν…Œμ΄λΈ”μ˜ 각 μ—΄(Column)에 λ§žλŠ” 데이터λ₯Ό μƒˆ ν–‰(Row)으둜 μΆ”κ°€ν•©λ‹ˆλ‹€.

μ˜ˆμ‹œ: 데이터 μ‚½μž…

INSERT INTO Users (name, email, age) VALUES ('Kobe', 'kobe@example.com', 30);
  • Users ν…Œμ΄λΈ”μ— μƒˆλ‘œμš΄ μ‚¬μš©μžμ˜ 데이터λ₯Ό μ‚½μž…ν•©λ‹ˆλ‹€.

3. UPDATE

  • ν…Œμ΄λΈ”μ˜ κΈ°μ‘΄ 데이터λ₯Ό μˆ˜μ •ν•˜λŠ” λͺ…λ Ήμ–΄μž…λ‹ˆλ‹€.
  • νŠΉμ • 쑰건을 λ§Œμ‘±ν•˜λŠ” 데이터λ₯Ό μ°Ύμ•„ μˆ˜μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ˜ˆμ‹œ: 데이터 μˆ˜μ •

UPDATE Users SET age = 31 WHRER name = 'Kobe';
  • Users ν…Œμ΄λΈ”μ—μ„œ 이름이 'Kobe'인 μ‚¬μš©μžμ˜ λ‚˜μ΄λ₯Ό 31둜 μˆ˜μ •ν•©λ‹ˆλ‹€.

4. DELETE

  • ν…Œμ΄λΈ”μ—μ„œ 데이터λ₯Ό μ‚­μ œν•˜λŠ” λͺ…λ Ήμ–΄μž…λ‹ˆλ‹€.
  • νŠΉμ • 쑰건을 λ§Œμ‘±ν•˜λŠ” 데이터λ₯Ό μ‚­μ œν•˜κ±°λ‚˜, λͺ¨λ“  데이터λ₯Ό μ‚­μ œν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ˜ˆμ‹œ: 데이터 μ‚­μ œ

DELETE FROM Users WHERE age < 18;
  • Users ν…Œμ΄λΈ”μ—μ„œ λ‚˜μ΄κ°€ 18 미만인 λͺ¨λ“  ν–‰(Row)을 μ‚­μ œν•©λ‹ˆλ‹€.

2️⃣ DML의 νŠΉμ§•.

1. 데이터 μ‘°μž‘.

  • DML은 λ°μ΄ν„°λ² μ΄μŠ€ λ‚΄μ—μ„œ 데이터λ₯Ό μ§μ ‘μ μœΌλ‘œ μ‘°μž‘ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€.
  • 데이터λ₯Ό μΆ”κ°€ν•˜κ±°λ‚˜ μ‚­μ œν•˜κ³ , κΈ°μ‘΄ 데이터λ₯Ό μ‘°νšŒν•˜κ±°λ‚˜ μˆ˜μ •ν•˜λŠ” λ“±μ˜ μž‘μ—…μ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€.

2. νŠΈλžœμž­μ…˜κ³Ό μ—°κ΄€.

  • DML λͺ…λ Ήμ–΄λŠ” νŠΈλžœμž­μ…˜ 관리와 λ°€μ ‘ν•œ 관련이 μžˆμŠ΅λ‹ˆλ‹€.
  • DML λͺ…λ Ήμ–΄λ‘œ 데이터λ₯Ό λ³€κ²½ν•˜λŠ” μž‘μ—…μ€ νŠΈλžœμž­μ…˜ λ‚΄μ—μ„œ μˆ˜ν–‰λ  수 있으며, νŠΈλžœμž­μ…˜μ˜ 컀밋(COMMIT) λ˜λŠ” λ‘€λ°±(ROLLBACK) 을 톡해 λ°μ΄ν„°μ˜ 일관성과 무결성을 보μž₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

3. νŠΈλžœμž­μ…˜ ν•„μš”.

  • DML μž‘μ—…μ€ λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ μ‹€μ œ 데이터λ₯Ό λ³€κ²½ν•˜λŠ” μž‘μ—…μ΄λ―€λ‘œ νŠΈλžœμž­μ…˜μ΄ ν•„μš”ν•©λ‹ˆλ‹€.
  • 데이터 λ³€κ²½ μž‘μ—…μ΄ μ™„λ£Œλ˜λ©΄ COMMIT을 톡해 μ €μž₯ν•˜κ³ , 였λ₯˜κ°€ λ°œμƒν•˜λ©΄ ROLLBACK을 톡해 λ³€κ²½ μž‘μ—…μ„ μ·¨μ†Œν•  수 μžˆμŠ΅λ‹ˆλ‹€.

4. 데이터 ꡬ쑰 λ³€κ²½ μ—†μŒ

  • DML은 데이터λ₯Ό λ‹€λ£¨λŠ” 데 μ΄ˆμ μ„ λ§žμΆ”λ©°, ν…Œμ΄λΈ”μ΄λ‚˜ λ°μ΄ν„°λ² μ΄μŠ€ ꡬ쑰 자체λ₯Ό λ³€κ²½ν•˜μ§€λŠ” μ•ŠμŠ΅λ‹ˆλ‹€.
  • ꡬ쑰 변경은 DDL(Data Definition Language)의 μ—­ν• μž…λ‹ˆλ‹€.

3️⃣ DML μ‚¬μš© μ˜ˆμ‹œ

1. 데이터 쑰회(SELECT)

SELECT name, email FROM Users WHERE age > 25;
  • Users ν…Œμ΄λΈ”μ—μ„œ λ‚˜μ΄κ°€ 25 이상인 μ‚¬μš©μžλ“€μ˜ 이름과 이메일을 μ‘°νšŒν•©λ‹ˆλ‹€.

2. 데이터 μ‚½μž…(INSERT)

INSERT INTO Users (name, email, age) VALUES ('Kobe', 'kobe@example.com', 28);
  • Users ν…Œμ΄λΈ”μ— μƒˆλ‘œμš΄ μ‚¬μš©μžμΈ Kobeλ₯Ό μΆ”κ°€ν•©λ‹ˆλ‹€.

3. 데이터 μˆ˜μ •(UPDATE)

UPDATE Users SET email = 'dev.kobe@example.com' WHERE name = 'Kobe';
  • Users ν…Œμ΄λΈ”μ—μ„œ 이름이 Kobe인 μ‚¬μš©μžμ˜ 이메일을 μˆ˜μ •ν•©λ‹ˆλ‹€.

4. 데이터 μ‚­μ œ(DELETE)

DELETE FROM Users WHERE id = 3;
  • Users ν…Œμ΄λΈ”μ—μ„œ idκ°€ 3인 μ‚¬μš©μžμ˜ 데이터λ₯Ό μ‚­μ œν•©λ‹ˆλ‹€.

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

  • DML(Data Manipulation Language)
    • DML은 데이터 자체λ₯Ό μ‘°μž‘ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€.
    • SELECT, INSERT, UPDATE, DELETE와 같은 λͺ…λ Ήμ–΄λ₯Ό 톡해 데이터λ₯Ό μ‚½μž…, 쑰회, μˆ˜μ •, μ‚­μ œν•  수 μžˆμŠ΅λ‹ˆλ‹€.
    • νŠΈλžœμž­μ…˜ 처리(컀밋, λ‘€λ°±)κ°€ ν•„μš”ν•˜λ©°, λ°μ΄ν„°λ² μ΄μŠ€ λ‚΄μ—μ„œ 데이터 μ‘°μž‘μ΄ μ€‘μ‹¬μž…λ‹ˆλ‹€.
  • DDL(Data Definition Language)
    • DDL은 λ°μ΄ν„°λ² μ΄μŠ€μ˜ ꡬ쑰λ₯Ό μ •μ˜ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€.
    • CREATE, ALTER, DROP λ“±μ˜ λͺ…λ Ήμ–΄λ₯Ό 톡해 ν…Œμ΄λΈ”κ³Ό 같은 λ°μ΄ν„°λ² μ΄μŠ€ 객체λ₯Ό 생성, μˆ˜μ •, μ‚­μ œν•  수 μžˆμŠ΅λ‹ˆλ‹€.
    • DDL은 일반적으둜 νŠΈλžœμž­μ…˜ 관리 없이 μžλ™ μ»€λ°‹λ˜λ©°, λ°μ΄ν„°λ² μ΄μŠ€μ˜ ꡬ쑰 관리가 μ€‘μ‹¬μž…λ‹ˆλ‹€.

5️⃣ μš”μ•½.

DML(Data Manipulation Language)은 λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ 데이터λ₯Ό μ‚½μž…, 쑰회, μˆ˜μ •, μ‚­μ œν•˜λŠ” μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” SQL μ–Έμ–΄μž…λ‹ˆλ‹€.
DML은 데이터 자체λ₯Ό μ§μ ‘μ μœΌλ‘œ μ‘°μž‘ν•˜λŠ” 데 μ‚¬μš©λ˜λ©°, νŠΈλžœμž­μ…˜κ³Ό 연관이 κΉŠμ–΄ μž‘μ—…μ˜ 무결성을 보μž₯ν•˜κΈ° μœ„ν•΄ COMMITμ΄λ‚˜ ROLLBACK을 톡해 μž‘μ—…μ˜ μ™„λ£Œ μ—¬λΆ€λ₯Ό 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.
DML은 데이터λ₯Ό 효율적으둜 닀루고 κ΄€λ¦¬ν•˜λŠ” 데 ν•„μˆ˜μ μΈ 역할을 ν•˜λ©°, μ‹€μ œ 데이터 μ‘°μž‘μ— μ§‘μ€‘ν•˜λŠ” μ–Έμ–΄μž…λ‹ˆλ‹€.