[DB] DDL, DML, DCL, TCL

Onam Kwon·2026년 3월 26일

DB

목록 보기
13/13

DDL, DML, DCL, TCL 개요

  • SQL 명령어는 역할에 따라 크게 세 가지로 분류된다 (DDL, DML, DCL).
  • TCL 은 문헌에 따라 DCL에 포함시키거나 독립 분류로 보기도 한다.
DDL (Data Definition Language):	데이터 구조(스키마) 정의
DML	(Data Manipulation Language): 데이터 조작 (CRUD)
DCL	(Data Control Language): 권한 및 접근 제어

DDL

  • 데이터베이스의 구조를 정의하거나 변경할 때 사용한다. 테이블, 인덱스, 뷰 등 객체의 생성/수정/삭제를 담당한다.
CREATE: 객체 생성
ALTER: 객체 구조 변경
DROP: 객체 삭제
TRUNCATE: 테이블 데이터 전체 삭제 (구조는 유지)

예시

-- 테이블 생성
CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);

-- 컬럼 추가
ALTER TABLE users ADD COLUMN phone VARCHAR(20);

-- 컬럼 수정
ALTER TABLE users MODIFY COLUMN name VARCHAR(100) NOT NULL;

-- 테이블 삭제
DROP TABLE users;

-- 데이터만 전체 삭제 (테이블 구조는 유지)
TRUNCATE TABLE users;
  • 참고: DDL은 실행 즉시 Auto Commit된다. ROLLBACK이 불가능하므로 운영 환경에서는 주의가 필요하다.

DML

  • 테이블의 데이터를 조회하거나 변경할 때 사용한다. 가장 자주 사용하는 SQL 명령어들이 여기에 속한다.
SELECT: 데이터 조회
INSERT: 데이터 삽입
UPDATE: 데이터 수정
DELETE: 데이터 삭제

예시

-- 조회
SELECT name, email FROM users WHERE id = 1;

-- 삽입
INSERT INTO users (name, email) VALUES ('홍길동', 'hong@example.com');

-- 수정
UPDATE users SET name = '김철수' WHERE id = 1;

-- 삭제
DELETE FROM users WHERE id = 1;
  • 참고: DML은 트랜잭션의 대상이다. COMMIT 전이라면 ROLLBACK으로 되돌릴 수 있다.

DCL

  • 데이터베이스에 대한 접근 권한을 제어할 때 사용한다.
GRANT: 권한 부여
REVOKE: 권한 회수

예시

-- 특정 사용자에게 SELECT, INSERT 권한 부여
GRANT SELECT, INSERT ON my_database.users TO 'dev_user'@'localhost';

-- 권한 회수
REVOKE INSERT ON my_database.users FROM 'dev_user'@'localhost';

TCL

  • 트랜잭션을 제어하는 COMMIT, ROLLBACK, SAVEPOINT를 별도로 TCL(Transaction Control Language)로 분류하기도 한다. 문헌에 따라 DCL에 포함시키거나 독립 분류로 보기도 한다.

예시

BEGIN;  -- 트랜잭션 시작

INSERT INTO users (name, email) VALUES ('이영희', 'lee@example.com');
SAVEPOINT sp1;

UPDATE users SET name = '박영희' WHERE email = 'lee@example.com';
ROLLBACK TO sp1;  -- UPDATE 취소, INSERT는 유지

COMMIT;  -- 최종 반영

정리

SQL 명령어
├── DDL (구조 정의)  →  CREATE, ALTER, DROP, TRUNCATE
├── DML (데이터 조작) →  SELECT, INSERT, UPDATE, DELETE
├── DCL (권한 제어)  →  GRANT, REVOKE
└── TCL (트랜잭션)   →  COMMIT, ROLLBACK, SAVEPOINT
profile
뜨거운 백엔드 개발자

0개의 댓글