IT이야기/데이터베이스

DML(데이터 조작 언어): 데이터베이스에서 데이터를 효율적으로 관리하는 핵심 SQL 명령어

Chiba-in 2025. 2. 28. 06:00

🔹 DML(데이터 조작 언어)란?

1. DML의 정의

DML(Data Manipulation Language, 데이터 조작 언어)은 데이터베이스에 저장된 데이터를 삽입(INSERT), 조회(SELECT), 수정(UPDATE) 및 삭제(DELETE)하는 SQL 명령어 집합입니다.
DML은 사용자가 데이터를 동적으로 관리하고 조작할 수 있도록 하며, 애플리케이션과 데이터베이스 간의 데이터 처리 작업을 수행하는 핵심 역할을 합니다.

DML의 주요 기능:

  • 데이터를 테이블에 삽입(INSERT)하여 추가 가능
  • 데이터를 조회(SELECT)하여 검색 가능
  • 데이터를 수정(UPDATE)하여 변경 가능
  • 데이터를 삭제(DELETE)하여 제거 가능
  • 트랜잭션과 함께 사용하여 데이터의 무결성과 안정성을 유지

📌 DML은 데이터베이스 애플리케이션, 데이터 분석, 웹 서비스 및 백엔드 개발에서 필수적으로 사용됨


🔹 DML의 주요 명령어

DML에는 데이터를 삽입, 조회, 수정 및 삭제하는 기능이 포함됩니다.


1. INSERT – 데이터 삽입

  • 새로운 데이터를 테이블에 추가하는 명령어
  • 기본 키와 제약 조건을 준수해야 함

✔️ 기본 INSERT 예제:

INSERT INTO Customers (CustomerID, Name, Email, Phone)
VALUES (1, 'John Doe', 'john@example.com', '123-456-7890');

✔️ 특정 컬럼에만 데이터 삽입:

INSERT INTO Customers (Name, Email)
VALUES ('Jane Doe', 'jane@example.com');

✔️ 여러 개의 데이터 한 번에 삽입:

INSERT INTO Customers (CustomerID, Name, Email, Phone)
VALUES
    (2, 'Alice Smith', 'alice@example.com', '555-1234'),
    (3, 'Bob Johnson', 'bob@example.com', '777-5678');

📌 INSERT 문은 테이블에 데이터를 추가하며, 대량 삽입 시 성능 최적화를 위해 일괄 삽입(Bulk Insert) 기법을 사용할 수 있음


2. SELECT – 데이터 조회

  • 테이블에서 데이터를 검색하는 명령어
  • 조건을 사용하여 특정 데이터만 필터링 가능

✔️ 기본 SELECT 예제:

SELECT * FROM Customers;

✔️ 특정 컬럼만 조회:

SELECT Name, Email FROM Customers;

✔️ WHERE 조건을 사용하여 특정 데이터 검색:

SELECT * FROM Customers WHERE CustomerID = 1;

✔️ 정렬(ORDER BY)을 사용한 조회:

SELECT * FROM Customers ORDER BY Name ASC;

✔️ 데이터 그룹화(GROUP BY) 및 필터링(HAVING):

SELECT City, COUNT(*) AS CustomerCount
FROM Customers
GROUP BY City
HAVING COUNT(*) > 5;

📌 SELECT 문은 SQL에서 가장 많이 사용되며, 데이터 분석 및 보고서 작성에 필수적인 기능 제공


3. UPDATE – 데이터 수정

  • 기존 데이터를 변경하는 명령어
  • UPDATE 문 사용 시 WHERE 조건을 명확히 지정하지 않으면 모든 행이 수정될 수 있음(주의 필요!)

✔️ 기본 UPDATE 예제:

UPDATE Customers
SET Email = 'newemail@example.com'
WHERE CustomerID = 1;

✔️ 여러 개의 컬럼 수정:

UPDATE Customers
SET Email = 'alice_new@example.com', Phone = '999-888-7777'
WHERE CustomerID = 2;

✔️ 조건 없이 실행하면 테이블의 모든 데이터가 수정됨(위험!):

UPDATE Customers SET Email = 'default@example.com';  -- 모든 고객의 이메일이 변경됨

📌 UPDATE 문은 WHERE 절을 사용하여 특정 행만 수정하도록 주의해야 함


4. DELETE – 데이터 삭제

  • 테이블에서 데이터를 제거하는 명령어
  • DELETE 문 사용 시 WHERE 조건을 명확히 지정하지 않으면 모든 행이 삭제될 수 있음(주의 필요!)

✔️ 기본 DELETE 예제:

DELETE FROM Customers WHERE CustomerID = 1;

✔️ 특정 조건을 만족하는 데이터 삭제:

DELETE FROM Orders WHERE OrderDate < '2023-01-01';

✔️ 테이블의 모든 데이터 삭제(주의!):

DELETE FROM Customers;  -- 모든 고객 데이터 삭제

📌 DELETE 문은 데이터를 제거하지만, 테이블 구조는 유지되므로 필요 시 복구할 수 있도록 백업이 필요함


🔹 DML과 트랜잭션(Transaction) 관리

DML 명령어는 트랜잭션 제어 언어(TCL: Transaction Control Language)와 함께 사용하여 데이터 무결성을 유지할 수 있습니다.

트랜잭션을 활용한 DML 예제

✔️ 트랜잭션 시작 후, 여러 개의 DML 실행 후 COMMIT 또는 ROLLBACK 가능

BEGIN TRANSACTION;
UPDATE Accounts SET Balance = Balance - 500 WHERE AccountID = 1001;
UPDATE Accounts SET Balance = Balance + 500 WHERE AccountID = 2001;

-- 문제가 없으면 변경 사항 저장
COMMIT;

✔️ 오류 발생 시 롤백:

BEGIN TRANSACTION;
UPDATE Accounts SET Balance = Balance - 500 WHERE AccountID = 1001;
UPDATE Accounts SET Balance = Balance + 500 WHERE AccountID = 2001;

-- 오류 발생 시 변경 사항 취소
ROLLBACK;

📌 트랜잭션을 사용하면 여러 개의 DML 문을 하나의 논리적 작업 단위로 묶어 처리 가능하며, 데이터의 안정성을 보장할 수 있음


🔹 DML을 활용한 실무 사례

1. 전자상거래 시스템에서 고객 주문 관리

📌 활용:

  • 고객 주문 정보를 삽입, 조회, 수정 및 삭제하는 기능 제공

✔️ SQL 코드:

INSERT INTO Orders (OrderID, CustomerID, Product, Quantity, OrderDate)
VALUES (101, 1, 'Laptop', 1, '2024-02-20');

SELECT * FROM Orders WHERE CustomerID = 1;

UPDATE Orders SET Quantity = 2 WHERE OrderID = 101;

DELETE FROM Orders WHERE OrderID = 101;

📌 결론

DML(데이터 조작 언어)은 데이터베이스에서 데이터를 삽입, 조회, 수정 및 삭제하는 핵심 SQL 명령어 집합이다.
INSERT, SELECT, UPDATE, DELETE를 활용하여 데이터를 효과적으로 조작할 수 있다.
트랜잭션을 사용하면 데이터의 무결성과 안정성을 유지할 수 있다.
DML은 전자상거래, 금융 시스템, 데이터 분석 등 다양한 분야에서 필수적으로 사용된다.