
데이터베이스에서 데이터를 다루다 보면 단순히 조회만 하는 것이 아니라, 새로운 데이터를 추가하거나, 기존 데이터를 수정하거나, 불필요한 데이터를 삭제해야 하는 순간이 많다. 이러한 작업을 담당하는 것이 바로 DML(Data Manipulation Language, 데이터 조작 언어)이다.
DML은 이미 만들어져 있는 테이블을 대상으로 레코드를 추가(INSERT), 변경(UPDATE), 삭제(DELETE), 병합(MERGE) 하는 SQL 명령어들의 집합이다. 앞서 다룬 SELECT 문이 데이터를 읽는(Read) 역할이라면, DML은 데이터를 직접 다루는 쓰기(Write) 역할이라고 할 수 있다.
DML과 트랜잭션
DML을 사용할 때 꼭 알아야 할 중요한 특징이 있다.
바로 자동 커밋(AUTOCOMMIT)이 적용되지 않는다는 점이다.
즉, INSERT, UPDATE, DELETE, MERGE 같은 DML 문을 실행했다고 해서 바로 데이터베이스에 영구 반영되는 것은 아니다.
- COMMIT을 실행해야 변경 사항이 확정된다.
- ROLLBACK을 실행하면 실행했던 DML 문을 취소할 수 있다.
또한, COMMIT 전까지는 다른 사용자가 변경된 데이터를 조회할 수 없다. 이 덕분에 데이터 무결성과 안정성이 보장된다.
5.1.1 INSERT – 데이터 추가
INSERT 문은 새로운 레코드를 테이블에 추가할 때 사용한다.
INSERT INTO 테이블명 (칼럼1, 칼럼2, ...)
VALUES (값1, 값2, ...);
칼럼명을 생략하면 모든 칼럼 순서에 맞춰 값을 넣어야 하며, 특정 칼럼만 지정할 수도 있다.
5.1.2 UPDATE – 데이터 수정
UPDATE 문은 기존 데이터를 수정할 때 사용한다. 반드시 WHERE 절을 통해 수정할 대상을 특정하는 것이 중요하다. 그렇지 않으면 테이블의 모든 레코드가 수정될 수 있다.
UPDATE MEMBER
SET PHONE = '010-1234-5678'
WHERE MEMBER_ID = 1008;
5.1.3 DELETE – 데이터 삭제
DELETE 문은 기존 데이터를 삭제한다. 마찬가지로 WHERE 절을 지정하지 않으면 테이블의 모든 데이터가 삭제되므로 주의해야 한다.
DELETE FROM 테이블명
WHERE 조건식;
5.1.4 MERGE – 데이터 병합
MERGE 문은 조건에 따라 데이터를 갱신(UPDATE) 하거나 삽입(INSERT) 할 수 있는 명령어다.
두 테이블을 비교하여 일치하는 레코드는 수정하고, 일치하지 않는 레코드는 새로 삽입하는 방식이다.
이 기능은 다음과 같은 상황에서 특히 유용하다.
- 운영 환경에 새로운 데이터를 반영해야 할 때
- 변경된 내용을 백업 테이블과 동기화할 때
MERGE INTO 대상테이블 A
USING 소스테이블 B
ON (A.KEY = B.KEY)
WHEN MATCHED THEN
UPDATE SET A.COL = B.COL
WHEN NOT MATCHED THEN
INSERT (COL1, COL2) VALUES (B.COL1, B.COL2);
마무리
DML은 데이터베이스 실무에서 가장 많이 활용되는 부분이다.
- INSERT로 데이터 추가
- UPDATE로 데이터 수정
- DELETE로 데이터 삭제
- MERGE로 데이터 병합
여기에 COMMIT과 ROLLBACK을 통한 트랜잭션 관리까지 더하면, 안전하게 데이터를 다룰 수 있다.
데이터를 단순히 조회하는 단계를 넘어서 직접 다루는 단계로 넘어가는 순간, SQL의 진짜 힘을 경험할 수 있다.
📮 BeanSight | 해피빈(HappyBin)
'IT 공부 > SQL' 카테고리의 다른 글
| 🟢 MongoDB를 활용한 벡터 검색 완전 정복 (0) | 2025.12.07 |
|---|---|
| SQL(21) - PIVOT절과 UNPIVOT절과 정규표현식 (3) | 2025.08.18 |
| SQL(20) - Top N 쿼리 & 셀프 조인 (6) | 2025.08.17 |
| SQL(19) - 윈도우 함수 (2) | 2025.08.13 |
| SQL - (18) 집합연산자와 그룹함수 (2) | 2025.08.11 |