gyumin.log

SQL 명령어 반대쌍과 삭제 3형제

SQL 명령어는 대부분 으로 외우면 절반이 공짜다. 하는 일이 정반대인 명령어를 붙여서 묶고, 그 다음에 진짜 헷갈리는 “삭제” 세 개만 따로 떼어 보면 정리가 된다.

1. 명령어 반대쌍

분류의미
CREATEDROPDDL객체를 만든다 ↔ 객체를 통째로 없앤다
INSERTDELETEDML행을 넣는다 ↔ 행을 뺀다
GRANTREVOKEDCL권한을 준다(TO) ↔ 권한을 뺏는다(FROM)
COMMITROLLBACKTCL작업을 확정한다 ↔ 작업 전으로 되돌린다
ADDDROPDDL (ALTER 안에서)컬럼을 추가 ↔ 컬럼을 삭제

GRANTTO, REVOKEFROM. 방향이 전치사에 그대로 드러난다.

2. 헷갈리는 “삭제” 3형제

이게 시험에 나온다.

명령어분류지우는 대상되돌리기
DELETEDML행(데이터)만, 조건 지정 가능ROLLBACK 가능
TRUNCATEDDL모든 행, 구조는 남음불가
DROPDDL테이블 구조까지 통째로불가

책장에 비유하면 이렇다.

  • DELETE: 책 몇 권 빼기
  • TRUNCATE: 책 전부 비우기 (책장은 남음)
  • DROP: 책장 자체를 부수기

포인트는 분류가 곧 되돌리기 여부라는 것. DELETE만 DML이라 트랜잭션에 묶여 ROLLBACK으로 살릴 수 있고, DDL인 TRUNCATEDROP은 실행 즉시 확정이라 되돌릴 수 없다.