본문 바로가기
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에 따라 다를 수 있음.) 해당 없음