SQL 명령어 반대쌍과 삭제 3형제
SQL 명령어는 대부분 짝으로 외우면 절반이 공짜다. 하는 일이 정반대인 명령어를 붙여서 묶고, 그 다음에 진짜 헷갈리는 “삭제” 세 개만 따로 떼어 보면 정리가 된다.
1. 명령어 반대쌍
| 쌍 | 분류 | 의미 |
|---|---|---|
CREATE ↔ DROP | DDL | 객체를 만든다 ↔ 객체를 통째로 없앤다 |
INSERT ↔ DELETE | DML | 행을 넣는다 ↔ 행을 뺀다 |
GRANT ↔ REVOKE | DCL | 권한을 준다(TO) ↔ 권한을 뺏는다(FROM) |
COMMIT ↔ ROLLBACK | TCL | 작업을 확정한다 ↔ 작업 전으로 되돌린다 |
ADD ↔ DROP | DDL (ALTER 안에서) | 컬럼을 추가 ↔ 컬럼을 삭제 |
GRANT는 TO, REVOKE는 FROM. 방향이 전치사에 그대로 드러난다.
2. 헷갈리는 “삭제” 3형제
이게 시험에 나온다.
| 명령어 | 분류 | 지우는 대상 | 되돌리기 |
|---|---|---|---|
DELETE | DML | 행(데이터)만, 조건 지정 가능 | ROLLBACK 가능 |
TRUNCATE | DDL | 모든 행, 구조는 남음 | 불가 |
DROP | DDL | 테이블 구조까지 통째로 | 불가 |
책장에 비유하면 이렇다.
DELETE: 책 몇 권 빼기TRUNCATE: 책 전부 비우기 (책장은 남음)DROP: 책장 자체를 부수기
포인트는 분류가 곧 되돌리기 여부라는 것. DELETE만 DML이라 트랜잭션에 묶여 ROLLBACK으로 살릴 수 있고, DDL인 TRUNCATE와 DROP은 실행 즉시 확정이라 되돌릴 수 없다.