DDL이 구조를 정의한다면 DML은 저장된 행의 현재 상태를 다룹니다. 핵심은 “테이블 정의”가 아니라 “지금 들어 있는 데이터”입니다.
아래 네 명령은 모두 같은 행 집합을 기준으로 동작합니다. 따라서 DML은 운영 데이터의 현재 상태를 움직이는 언어로 이해하면 빠릅니다.
id 이름 상태 1 민수 ACTIVE 2 지연 PENDING
| 명령 | 저장된 상태 변화 | 왜 중요할까 |
|---|---|---|
|
SELECT
조회
|
ACTIVE 행만 반환
저장된 테이블은 그대로
|
읽기만 하므로 데이터를 바꾸지 않습니다. 그래서 DQL로 따로 분류하기도 합니다. |
|
INSERT
추가
|
+ 3 서연 ACTIVE
|
새 행이 생깁니다. 기본키, NOT NULL, 외래키 같은 제약을 만족해야 저장됩니다. |
|
UPDATE
수정
|
2 지연 PENDING
-> 지연 ACTIVE
|
행은 유지되지만 값이 바뀝니다. `WHERE` 조건이 넓으면 여러 행이 함께 변경될 수 있습니다. |
|
DELETE
삭제
|
- 1 민수 ACTIVE
|
행 자체가 사라집니다. 트랜잭션 안이라면 롤백으로 되돌릴 수 있습니다. |
정리하면 DML은 CRUD를 통해 테이블 안의 현재 데이터 상태를 다루며, 그래서 제약 조건·트랜잭션·동시성 영향과 함께 이해해야 합니다.