Delete, Truncate, Drop
SQL에서 DELETE, TRUNCATE, DROP은 각각 다른 목적과 동작을 가지고 있습니다.
아래는 각각에 대한 설명과 차이점입니다.
1. DELETE
- 목적: 테이블에서 특정 행(레코드) 또는 조건을 만족하는 행을 삭제하는 명령입니다.
- 동작: DELETE 문을 사용하면 테이블에서 행이 삭제되지만, 테이블 구조는 유지됩니다.
- 주의사항: DELETE 문을 실행하면 롤백이 가능하며, 조건을 지정하지 않는 경우 테이블의 전체 행 삭제
# Employee 테이블
+----+-------------+--------+
| ID | Name | Salary |
+----+-------------+--------+
| 1 | John Doe | 50000 |
| 2 | Jane Smith | 60000 |
| 3 | Bob Johnson | 75000 |
+----+-------------+--------+
# DELETE 문 실행
DELETE FROM Employee WHERE ID = 2;
# DELETE문 실행 결과
+----+-------------+--------+
| ID | Name | Salary |
+----+-------------+--------+
| 1 | John Doe | 50000 |
| 3 | Bob Johnson | 75000 |
+----+-------------+--------+
2. TRUNCATE
- 목적: 테이블의 모든 행을 한 번에 제거하여 테이블을 비우는 명령입니다.
- 동작: TRUNCATE 문을 사용하면 테이블에서 모든 행이 삭제되지만, 테이블 구조는 그대로 유지됩니다.
- 주의사항: TRUNCATE 문은 롤백할 수 없으며, 빠르게 테이블을 비우는 데 사용됩니다.
# Employee 테이블
+----+-------------+--------+
| ID | Name | Salary |
+----+-------------+--------+
| 1 | John Doe | 50000 |
| 2 | Jane Smith | 60000 |
| 3 | Bob Johnson | 75000 |
+----+-------------+--------+
# TRUNCATE 문 실행
TRUNCATE TABLE Employee;
# TRUNCATE 문 실행 결과
+----+-------------+--------+
| ID | Name | Salary |
+----+-------------+--------+
3. DROP
- 목적: 데이터베이스 객체(테이블, 뷰, 인덱스 등) 자체를 삭제하는 명령입니다.
- 동작: DROP 문을 사용하면 테이블 또는 객체가 완전히 제거되어 테이블 구조까지 사라집니다.
- 주의사항: DROP 문을 실행하면 해당 객체를 복구할 수 없습니다. 모든 데이터와 구조가 삭제됩니다.
# Employee 테이블
+----+-------------+--------+
| ID | Name | Salary |
+----+-------------+--------+
| 1 | John Doe | 50000 |
| 2 | Jane Smith | 60000 |
| 3 | Bob Johnson | 75000 |
+----+-------------+--------+
# DROP 문 실행
DROP TABLE Employee;
# DROP 문 실행 후 데이터 확인 (실행 시 오류 발생)
SELECT * FROM Employee
# 오류 메세지
SELECT * FROM 회원테이블 LIMIT 0, 1000
Error Code: 1146. Table 'DB.회원테이블' doesn't exist 0.000 sec
요약하면,
- DELETE는 행을 삭제하고 테이블 구조를 유지하며 롤백 가능하며,
- TRUNCATE는 모든 행을 한 번에 삭제하고 테이블 구조를 유지하며 롤백 불가능하며,
- DROP은 테이블 자체를 삭제하여 데이터와 구조를 모두 제거합니다.
본 게시글은 ChatGPT의 도움을 받아 작성하였습니다.
'Language > MySQL' 카테고리의 다른 글
SQL 숫자형 함수 (0) | 2024.01.19 |
---|---|
DML이란? (0) | 2024.01.11 |
SQL 기본 명령어 (0) | 2024.01.08 |
가상 테이블 생성 (0) | 2024.01.07 |
SQL 윈도우 함수 (0) | 2024.01.06 |