SQL 명령어는 목적에 따라 크게 DDL, DML, DCL 이렇게 세 가지로 분류된다. 개인적으로 글자도 비슷비슷해서 공부하면서 헷갈렸다...그래서 정리하기 위한 글을 작성해보기로 했다! 각각의 역할과 차이를 명확하게 이해해보자.
DDL(Data Definition Language) - 데이터 정의어
DDL은 데이터베이스의 구조를 정의하고 변경하는 명령어이다. 즉 테이블을 만들고 수정하고 삭제하는 작업이라고 생각하면 된다.
-- 테이블 생성
CREATE TABLE users (
id INT PRIMARY KEY,
email VARCHAR(100) NOT NULL,
role VARCHAR(20)
);
-- 컬럼 추가
ALTER TABLE users ADD COLUMN created_at TIMESTAMP;
-- 테이블 삭제 (구조 + 데이터 모두)
DROP TABLE users;
-- 데이터만 전체 삭제 (구조 유지)
TRUNCATE TABLE users;
핵심 명령어
아래와 같은 명령어들이 포함된다.
CREATE → 생성
ALTER → 구조 변경
DROP → 삭제 (구조 + 데이터)
TRUNCATE → 데이터만 전체 삭제
RENAME → 이름 변경
이것들 중 CREATE, ALTER,DROP은 프로젝트에서 정말 많이 사용했던 거 같다.
중요한 특징으로는
- DDL은 Auto Commit 이므로 실행 즉시 반영되며 ROLLBACK이 불가능 하다는 것이다.
- 따라서 운영 DB에서 사용할 때 실수로 DROP하면 되돌릴수 없으니 주의가 필요하다.
DML(Data Manipulation Language) - 데이터 조작어
DML은 테이블 내의 데이터를 조회, 조작하는 명령어다. 실제로 데이터를 다룰 때 가장 자주 쓰이는 분류이기도 하다.
-- 조회
SELECT * FROM users WHERE role = 'ADMIN';
-- 삽입
INSERT INTO users (email, role)
VALUES ('test@test.com', 'USER');
-- 수정
UPDATE users
SET role = 'ADMIN'
WHERE id = 1;
-- 삭제
DELETE FROM users WHERE id = 1;
핵심 명령어
SELECT → 조회
INSERT → 삽입
UPDATE → 수정
DELETE → 삭제
DDL과의 차이는 트랜잭션 제어가 가능하다는 것이다. commit 전까지는 ROLLBACK으로 되돌릴 수 있다.
DCL( Data Control Language) - 데이터 제어어
DCL은 데이터 베이스 접근 권한을 제어하는 명령어다. 누가 어떤 데이터에 접근할 수 있는지를 관리한다.
-- 권한 부여
GRANT SELECT, INSERT ON users TO 'hong';
-- 권한 취소
REVOKE INSERT ON users FROM 'hong';
핵심 명령어
GRANT → 권한 부여
REVOKE → 권한 취소
실무에서는CS 담당자에게 조회를 위한 SELECT권한만 부여하거나 개발자에게 운영 DB의 쓰기 권한을 제한하는 식으로 활용한다고 한다.
'Programming > Database' 카테고리의 다른 글
| [DB] ACID 속성과 격리 수준에 따라 발생하는 문제점 (0) | 2025.07.21 |
|---|