본문 바로가기
SQL Professional

[독학! SQLP] DCL? DDL? DML? TCL?

by 개발자의 2025. 8. 19.

DCL (데이터 제어어, Data Control Language)

  • 권한 제어 (사용자 접근 권한, 보안 관련)
  • 자동 COMMIT (취소 불가)
  • 주요 명령어
    • GRANT : 권한 부여
      • WITH GRANT OPTION : 권한을 받은 사용자가 다른 사용자에게 권한을 다시 부여할 수 있음.
    • REVOKE : 권한 취소
      • CASACASE : 권한을 회수하면, 그 권한을 통해 다른 사용자에게 전파된 권한도 같이 회수
      • RESTRICT : 권한을 회수할 때, 그 권한을 기반으로 다른 사용자에게 부여된 권한이 있으면 REVOKE 불가

DDL (데이터 정의어, Data Definition Language)

  • 데이터 구조 정의/변경/삭제 언어
  • 실행 즉시 자동 COMMIT → 취소 불가
  • 주요 명령어
    • CREATE, ALERT, DROP, RENAME, TRUNCATE
  • 제약조건 지정
    • PK, FK, UNIQUE, NOT NULL, CHECK, DEFAULT
    • 외래키(FK) 제약조건 
      • ON DELETE CASCADE : 부모가 삭제되면 자식도 같이 삭제됨.
      • ON DELETE SET NULL : 부모가 삭제되면 자식 FK가 NULL값이 됨.
      • ON DELETE SET DEFAULT : 부모가 삭제되면 가식 FK가 기본값이 됨.
      • ON DELETE RESTRICT :  자식이 존재하면 부모 삭제 불가
      • ON DELETE NO ACTION : FK 위배 시 삭제 거부 (RESTRICT 옵션과 유사)

DML (데이터 조작어, Data Manipulation Language)

  • 데이터를 조회/조작하는 언어
  • 트랜잭션 단위로 실행 → COMMIT/ROLLBACK 필요
  • 주요 명령어 
    • SELECT, INSERT, UPDATE, DELETE
    • SELECT 문장 실행순서
      • FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY

TCL (트랜잭션 제어어, Transaction Control Language)

  • 트랜잭션 제어 언어 (DML 제어용) 
  • 주요 명령어 
    • COMMIT, ROLLBACK, SAVEPOINT
※ 참고 : DELETE vs TRUNCATE vs DROP

구분 DELETE TRUNCATE DROP
분류 DML DDL DDL
삭제 대상 조건에 맞는 데이터 행(Row) 테이블 전체 데이터 테이블 자체
(구조+데이터+제약조건)
조건 사용 WHERE 사용 가능 WHERE 불가 해당 없음
트랜잭션 제어 ROLLBACK 가능
(수동 COMMIT 필요)
자동 COMMIT
→ 
ROLLBACK 불가
자동 COMMIT
→ 
ROLLBACK 불가
속도 느림 (한 행씩 로그 기록) 빠름 (페이지 단위 초기화) 가장 빠름 (오브젝트 자체 제거)
테이블 구조 유지 여부 유지 유지 삭제
제약조건 / 인덱스 유지 유지 삭제
자동 증가 값
(Identity)
유지 초기화 됨(DBMS에 따라 다를 수 있음.) 해당 없음