[SQL] DDL / DML / DCL / TCL 총정리 (Oracle 기준)
이 글은 Oracle DB 기준으로 SQL을 분류 체계(DDL, DML, DCL, TCL)에 따라 정리한 글이다. 단순 문법 나열이 아니라, 각 분류가 왜 필요한지와 언제 사용하는지를 함께 설명한다.
1. SQL 분류 개요
SQL은 역할에 따라 네 가지로 분류된다. 이 분류는 Oracle 시험, 실무, 면접에서 모두 기본 전제로 사용된다.
| 분류 | 이름 | 역할 |
|---|---|---|
| DDL | Data Definition Language | 데이터 구조 정의 |
| DML | Data Manipulation Language | 데이터 조회/조작 |
| DCL | Data Control Language | 권한 제어 |
| TCL | Transaction Control Language | 트랜잭션 제어 |
2. DDL (Data Definition Language)
2-1. DDL이란?
DDL은 데이터베이스의 구조 자체를 정의하는 SQL이다.
테이블, 컬럼, 제약조건 같은 뼈대를 만드는 역할을 하며, 데이터가 아니라 구조를 다룬다.
DDL은 실행 즉시 반영되며, ROLLBACK이 불가능하다는 특징이 있다.
2-2. 주요 DDL 문법
CREATE TABLE
CREATE TABLE USERS (
ID NUMBER PRIMARY KEY,
NAME VARCHAR2(50) NOT NULL,
EMAIL VARCHAR2(100) UNIQUE,
CREATED_AT DATE
);
ALTER TABLE
ALTER TABLE USERS
ADD PHONE VARCHAR2(30);
DROP TABLE
DROP TABLE USERS;
TRUNCATE TABLE
TRUNCATE TABLE USERS;
TRUNCATE는 테이블 구조는 유지하고 데이터만 즉시 삭제한다. DELETE와 달리 ROLLBACK이 불가능하다.
3. DML (Data Manipulation Language)
3-1. DML이란?
DML은 테이블에 저장된 데이터를 조회하거나 변경하는 SQL이다.
실제 서비스에서 가장 많이 사용되는 SQL이며, 트랜잭션의 영향을 받는다.
3-2. SELECT (조회)
SELECT ID, NAME, EMAIL
FROM USERS
WHERE EMAIL IS NOT NULL;
3-3. INSERT (삽입)
INSERT INTO USERS (ID, NAME, EMAIL, CREATED_AT)
VALUES (1, '홍길동', 'hong@test.com', SYSDATE);
3-4. UPDATE (수정)
UPDATE USERS
SET EMAIL = 'new@test.com'
WHERE ID = 1;
3-5. DELETE (삭제)
DELETE FROM USERS
WHERE ID = 1;
DML은 COMMIT을 해야 실제로 반영되며, ROLLBACK으로 취소할 수 있다.
4. TCL (Transaction Control Language)
4-1. TCL이란?
TCL은 트랜잭션의 흐름을 제어하는 SQL이다.
트랜잭션은 여러 DML 작업을 하나의 작업 단위로 묶는 개념이다.
4-2. 주요 TCL 문법
COMMIT
COMMIT;
현재 트랜잭션에서 수행한 모든 DML을 확정한다.
ROLLBACK
ROLLBACK;
마지막 COMMIT 이후의 모든 작업을 취소한다.
SAVEPOINT
SAVEPOINT A;
UPDATE USERS SET NAME = '임꺽정' WHERE ID = 1;
ROLLBACK TO A;
SAVEPOINT는 트랜잭션 중간 지점을 만들어 부분 롤백을 가능하게 한다.
5. DCL (Data Control Language)
5-1. DCL이란?
DCL은 사용자의 권한을 제어하는 SQL이다.
누가 어떤 테이블을 조회/수정할 수 있는지를 결정하며, 보안과 직결된다.
5-2. GRANT (권한 부여)
GRANT SELECT, INSERT
ON USERS
TO USER_A;
USER_A에게 USERS 테이블에 대한 조회와 삽입 권한을 부여한다.
5-3. REVOKE (권한 회수)
REVOKE INSERT
ON USERS
FROM USER_A;
부여했던 권한을 회수한다.
5-4. ROLE
CREATE ROLE READ_ONLY;
GRANT SELECT ON USERS TO READ_ONLY;
GRANT READ_ONLY TO USER_A;
ROLE은 여러 권한을 묶어 관리하기 위한 단위다.
6. DDL / DML / DCL / TCL 차이 정리
| 구분 | 대상 | ROLLBACK | 주 용도 |
|---|---|---|---|
| DDL | 구조 | 불가 | 테이블/스키마 정의 |
| DML | 데이터 | 가능 | 조회/삽입/수정/삭제 |
| TCL | 트랜잭션 | - | COMMIT/ROLLBACK |
| DCL | 권한 | 불가 | 보안/접근 제어 |
7. 마무리
SQL은 단순히 문법을 외우는 것이 아니라, 어떤 상황에서 어떤 분류의 SQL을 쓰는지를 이해하는 것이 중요하다.
Oracle 기준으로 DDL, DML, DCL, TCL을 구분해서 이해하면 실무와 시험 모두에서 혼동이 줄어든다.
'Computer Science > Database' 카테고리의 다른 글
| [SQL] SELECT 문법 총정리 (Oracle 기준) (0) | 2026.02.13 |
|---|---|
| [DB] 11. 데이터베이스 아키텍처 (0) | 2026.02.13 |
| [DB] 10. 인덱스(Index)와 성능 최적화 (0) | 2026.02.07 |
| [DB] 09. 동시성 문제와 격리 (0) | 2026.02.07 |
| [DB] 08. 트랜잭션(Transaction)과 ACID (0) | 2026.02.07 |