SQL DROP 문과 TRUNCATE 데이터베이스 및 테이블 삭제 방법
DROP 문은 데이터베이스와 테이블을 삭제할 때 사용하는 SQL 명령어입니다. 삭제 작업은 영구적이며, 복구가 불가능하기 때문에 신중한 사용이 필요합니다. 이번 글에서는 DROP DATABASE, DROP TABLE, 그리고 TRUNCATE TABLE의 사용법과 주요 차이점까지 초보자도 쉽게 이해할 수 있도록 정리했습니다.
1. 데이터베이스 삭제하기 (DROP DATABASE)
DROP DATABASE는 데이터베이스 전체와 그 안의 모든 테이블, 데이터를 완전히 삭제합니다. 데이터베이스 삭제 후 복구는 불가능하므로 반드시 신중하게 사용해야 합니다.
DROP DATABASE 문법과 예제
기본 문법
DROP DATABASE 데이터베이스이름;
예제
DROP DATABASE Hotel;
이 명령어 실행 시 Hotel 데이터베이스와 그 안의 모든 데이터가 삭제됩니다.
IF EXISTS 옵션으로 에러 방지하기
존재하지 않는 데이터베이스를 삭제하면 에러가 발생합니다. 이를 방지하기 위해 IF EXISTS를 사용할 수 있습니다.
문법 예시
DROP DATABASE IF EXISTS 데이터베이스이름;
예제
DROP DATABASE IF EXISTS Hotel;
2. 테이블 삭제하기 (DROP TABLE)
DROP TABLE 명령어는 데이터베이스 내 특정 테이블과 그 안의 모든 데이터를 삭제할 때 사용합니다.
DROP TABLE 문법과 예제
기본 문법
DROP TABLE 테이블이름;
예제
DROP TABLE Reservation;
이 명령어로 Reservation 테이블과 그 안의 모든 데이터가 삭제됩니다.
IF EXISTS 옵션으로 에러 방지하기
존재하지 않는 테이블 삭제 시 에러가 발생할 수 있으므로 IF EXISTS를 활용해 에러를 방지합니다.
문법 예시
DROP TABLE IF EXISTS 테이블이름;
예제
DROP TABLE IF EXISTS Reservation;
3. 테이블 데이터만 삭제하기 (TRUNCATE TABLE)
테이블의 구조는 유지한 채, 데이터만 삭제하고 싶을 때 사용하는 명령어가 바로 TRUNCATE TABLE입니다.
TRUNCATE TABLE 문법과 예제
기본 문법
TRUNCATE TABLE 테이블이름;
예제
TRUNCATE TABLE Reservation;
- 테이블 구조는 유지, 모든 데이터가 즉시 삭제됩니다.
- 데이터 초기화 용도로 자주 사용됩니다.
4. DROP vs. TRUNCATE 차이점 명확히 이해하기
| 구분 | DROP TABLE | TRUNCATE TABLE |
|---|---|---|
| 영향 범위 | 테이블과 데이터 모두 삭제 | 데이터만 삭제 (테이블 구조 유지) |
| 구조 유지 | X (구조 삭제) | O (구조 유지) |
| 복구 가능 여부 | 복구 불가능 | 복구 불가능 |
| 속도 | 테이블 삭제 및 데이터 삭제 속도 빠름 | 데이터 삭제 속도가 매우 빠름 |
- 테이블 자체를 완전히 삭제할 때는
DROP TABLE을 사용합니다. - 테이블 구조는 유지하면서 데이터만 삭제할 때는
TRUNCATE TABLE을 사용합니다.
DROP과 TRUNCATE 활용 실습 예제 (완성본)
다음은 데이터베이스 및 테이블 삭제를 명확하게 보여주는 실습 예제입니다.
-- 데이터베이스 선택
USE Hotel;
-- 테이블의 데이터만 삭제 (구조 유지)
TRUNCATE TABLE Reservation;
-- 테이블 완전 삭제 (구조까지 삭제)
DROP TABLE IF EXISTS Reservation;
-- 데이터베이스 완전 삭제
DROP DATABASE IF EXISTS Hotel;
요약 정리
| 기능 | SQL 명령어 | 주의사항 |
|---|---|---|
| 데이터베이스 삭제 | DROP DATABASE DB이름 |
데이터베이스 전체 삭제 (복구 불가능), IF EXISTS로 에러 방지 |
| 테이블 삭제 | DROP TABLE 테이블이름 |
테이블 구조·데이터 삭제 (복구 불가능), IF EXISTS 사용 추천 |
| 테이블 데이터만 삭제 | TRUNCATE TABLE 테이블이름 |
테이블 구조는 유지, 데이터만 삭제 |
질문 정리
- DROP과 DELETE의 차이는 무엇인가요?
DROP은 테이블 자체를 삭제합니다.DELETE는 조건을 지정하여 특정 데이터만 삭제합니다. (예:DELETE FROM Table WHERE 조건;)
- TRUNCATE 사용 후 데이터 복구가 가능한가요?
- 일반적으로 불가능합니다. 사용 전 반드시 데이터를 백업해 두세요.
- 테이블 삭제 시 연관된 외래 키(Foreign Key)가 있으면 어떻게 하나요?
- 외래 키 제약 조건을 우선 제거하거나
CASCADE옵션을 사용하여 관련 데이터를 함께 삭제할 수 있습니다.
- 외래 키 제약 조건을 우선 제거하거나
- DROP DATABASE 시 데이터베이스 내의 모든 테이블이 자동 삭제되나요?
- 네, 데이터베이스 삭제 시 내부의 모든 테이블과 데이터가 함께 삭제됩니다.
- 존재하지 않는 테이블 삭제 시 발생하는 에러를 방지하려면?
- 반드시
DROP TABLE IF EXISTS옵션을 사용하여 에러 발생을 예방하세요.
- 반드시
댓글남기기