티스토리 뷰
DROP vs DELETE 차이점
– 혼동은 왜 생기고, 어디서부터 갈리는가?
🔷 1. 왜 헷갈릴까?
DROP과 DELETE는 모두 데이터베이스에서 ‘삭제’라는 기능을 수행합니다.
DELETE는 데이터를 지우고, DROP은 테이블을 지운다는 설명은 익숙합니다.
그래서 많은 사람들이 이렇게 생각합니다:
“DELETE로 테이블 안에 있는 모든 데이터를 지우면, 결국 테이블은 비게 되잖아?
그럼 DROP이랑 뭐가 다르지?”
“DROP도 어차피 삭제 명령인데, DELETE처럼 나중에 취소할 수 있으면 안 될까?”
이 질문들은 단순한 혼동이 아닙니다.
둘 다 같은 '삭제'라는 단어를 쓰면서, 실제로는 전혀 다른 작동 원리, 철학, 복구 가능성을 갖고 있기 때문입니다.
이 글은 그 혼동을 해결하기 위해 다음 세 가지를 집중적으로 설명합니다.
- DELETE와 DROP은 왜 이름이 비슷한가?
- 실제로 그 작동 방식은 어떻게 다른가?
- 그 작동 방식을 서로에게 적용할 수는 없는가?
🔷 2. 무엇이 다를까? – DELETE와 DROP의 목적
✅ DELETE의 목적: 데이터 정제
DELETE는 테이블은 유지한 채, 그 안의 데이터를 제거합니다.
목표는 테이블이라는 틀은 그대로 두고, 그 안의 내용물만 교체하거나 정리하는 것입니다.
→ "책장은 그대로 두고, 책만 치우는 것"
❌ DROP의 목적: 구조 제거
DROP은 테이블 자체를 없애는 명령어입니다.
데이터뿐 아니라 테이블의 형태, 정의, 컬럼 정보, 인덱스, 제약조건까지 모두 사라집니다.
→ "책장 자체를 통째로 버리는 것"
🔷 3. DELETE로 DROP을 흉내내면 어떤 일이 벌어질까?
🔸 예제: 테이블 생성과 데이터 삽입
CREATE TABLE students ( id INTEGER PRIMARY KEY, name TEXT, grade TEXT ); INSERT INTO students VALUES (1, 'Alice', 'A'), (2, 'Bob', 'B'), (3, 'Charlie', 'F');
현재 테이블 상태:
id | name | grade |
---|---|---|
1 | Alice | A |
2 | Bob | B |
3 | Charlie | F |
🔹 DELETE로 모든 데이터를 지워보자
DELETE FROM students;
SELECT * FROM students;
결과:
id | name | grade |
---|---|---|
→ 테이블은 존재합니다.
→ 단지 모든 행(row)이 사라졌을 뿐입니다.
→ 다시 데이터를 추가하는 것도 가능합니다:
INSERT INTO students VALUES (4, 'David', 'C');
추가 후 상태:
id | name | grade |
---|---|---|
4 | David | C |
📌 즉, DELETE는 데이터를 지우되 테이블 구조를 남겨둡니다.
🔷 4. DROP을 실행하면 어떤 일이 벌어질까?
DROP TABLE students;
SELECT * FROM students;
결과:
ERROR: no such table: students
→ 테이블이 존재하지 않으므로 SELECT는 불가능합니다.
→ INSERT도 당연히 불가능합니다.
→ 다시 사용하려면 CREATE TABLE부터 처음부터 다시 해야 합니다.
🔷 5. DELETE의 원리를 DROP에 적용할 수 있을까?
“DROP도 ROLLBACK이 가능했으면 좋겠는데?
DELETE처럼 테이블을 논리적으로만 제거하고, 나중에 되돌릴 수 없을까?”
❌ DROP이 복구 불가능한 이유
- 설계 철학 자체가 다릅니다. – DROP은 구조 자체를 완전히 제거하는 것이 전제입니다.
- UNDO 로그가 없습니다. – DELETE는 트랜잭션이지만, DROP은 그렇지 않습니다.
- 성능 최적화를 위해 즉시 삭제됩니다. – 로그를 남기면 오히려 성능 저하가 발생합니다.
🔷 6. 혼동은 왜 생기고, 어떻게 해결할 수 있을까?
DELETE와 DROP 모두 '지운다'는 뜻을 갖고 있습니다.
하지만, 지우는 대상의 층위(level)가 다릅니다.
- DELETE는 데이터 레벨에서의 삭제
- DROP은 구조 레벨에서의 삭제
적용 방향 | 가능한가? | 이유 |
---|---|---|
DELETE처럼 DROP을 롤백 | ❌ 불가능 | 구조 자체가 사라지기 때문 |
DROP처럼 DELETE로 구조 제거 | ❌ 불가능 | 구조는 남기도록 설계되었기 때문 |
→ 이 둘은 기능적으로도, 설계적으로도 서로 전이될 수 없는 개념입니다.
🔷 7. 정리 – DELETE는 정리이고, DROP은 제거다
비교 항목 | DELETE | DROP |
---|---|---|
삭제 대상 | 데이터(row) | 테이블 구조 전체 |
테이블 구조 유지 | ✅ 유지 | ❌ 완전 삭제 |
복구 가능성 | ✅ ROLLBACK 가능 | ❌ 복구 불가 |
속도 | 느림 (행별 조건 검사) | 빠름 (즉시 제거) |
사용 목적 | 데이터 정리 | 구조 제거 |
DROP과 DELETE는 단순히 이름이 비슷해서 헷갈리는 것이 아닙니다.
실제로는 전혀 다른 상황에서 쓰여야 하며,
전혀 다른 결과를 낳는 명령어입니다.
DELETE는 데이터를 정리하기 위한 가역적인 선택이고,
DROP은 구조를 없애버리는 비가역적 결정입니다.
이제 이 둘을 구분할 수 있어야 진짜로 데이터베이스를 이해한 것입니다.
헷갈리지 마세요.
DELETE는 청소고, DROP은 철거입니다.
'자격증 > 정보처리기사' 카테고리의 다른 글
쉘(Shell)이란? – 리눅스에서 명령어 치는 그곳, 그 정체는? (0) | 2025.05.03 |
---|---|
IPv4와 IPv6 총정리 (0) | 2025.04.30 |
소프트웨어 품질을 어떻게 평가할까? – ISO/IEC 25000 (0) | 2025.04.30 |
인터페이스 데이터 포맷 완전 정리 (0) | 2025.04.30 |
대칭 vs 비대칭 암호 알고리즘 (0) | 2025.04.29 |
- Total
- Today
- Yesterday
- 행동주의
- C
- 학습이론
- 데이터분석
- 일본어
- 물류관리사
- 코딩테스트
- 티스토리챌린지
- c++
- 회계
- 행동심리학
- K-MOOC
- 학습심리학
- 류근관
- 파이썬
- 통계학
- 열혈프로그래밍
- 백준
- 정보처리기사
- 오블완
- 인지부조화
- 강화학습
- 일본어문법무작정따라하기
- 조건형성
- 통계
- Python
- 윤성우
- 일문따
- 보세사
- 심리학
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |