반응형
mysql 8 기준, 데이터 삭제와 관련된 명령어들 정리한다.
1. DROP
- 설명: DROP은 데이터베이스 객체 자체를 삭제하는 명령어이다. 주로 테이블, 데이터베이스, 뷰, 인덱스 등과 같은 객체를 완전히 제거하는 데 사용된다.
- 특징:
- 테이블 자체가 삭제
- 테이블의 구조(Schema)와 데이터가 모두 삭제되며, 복구불가
- 삭제된 테이블에 대한 모든 참조(인덱스, 트리거, 외래 키 등)가 함께 삭제됨
- 롤백 불가: DROP은 트랜잭션 관리와 상관없이 즉시 반영되며, 복구불가
- 테이블 삭제 후에 해당 테이블에 대한 쿼리를 실행할 수 없음
- DROP권한 필요
DROP TABLE employees;
DROP DATABASE my_database;
2. TRUNCATE
- 설명: TRUNCATE는 테이블의 모든 데이터를 삭제하지만, 테이블의 구조는 유지하는 명령어. 즉, 테이블은 그대로 남아있고 데이터만 삭제됨.
- 특징:
- 테이블의 모든 데이터가 삭제되지만, 테이블의 구조와 관련된 인덱스 및 제약 조건은 유지됨.
- 롤백 불가: 기본적으로 TRUNCATE는 트랜잭션으로 처리되지 않으며, 실행 후 롤백할 수 없음.
- 성능이 매우 빠름. DELETE보다 빠르게 데이터 삭제가 가능하며, 일반적으로 전체 데이터를 삭제하는 상황에서 더 효율적.
- 테이블에서 자동 증가(AUTO_INCREMENT) 값이 초기화됨
- 테이블에서 데이터만 삭제하므로 테이블을 계속 사용할 계획이 있을 때 사용.
- MySQL에서 TRUNCATE는 사실상 DROP + CREATE와 유사하게 동작하므로, DROP 권한이 있어야 한다!
TRUNCATE TABLE employees;
3. DELETE
- 설명: DELETE는 테이블에서 특정 조건에 맞는 데이터를 삭제하는 명령어. 특정 조건을 사용하여 테이블의 일부 또는 전체 데이터를 삭제.
- 특징:
- WHERE 절을 통해 특정 행을 선택적으로 삭제.
- 트랜잭션이 가능하며, 롤백가능
- 데이터가 삭제되더라도 테이블의 구조는 그대로 유지
- 인덱스가 많은 테이블에서는 느릴 수 있음
- 조건 없이 DELETE 명령어를 사용하면 테이블의 모든 데이터가 삭제되지만, 이는 TRUNCATE보다 느릴 수 있음.
- DELETE 권한 필요
DELETE FROM employees WHERE employee_id = 1;
DELETE FROM employees; -- 모든 데이터 삭제
사용할 때 실행하고자하는 계정의 권한도 함께 확인해야한다!
728x90
반응형
'개발 > sql' 카테고리의 다른 글
[분산] mysql 네임드락 (0) | 2024.11.01 |
---|---|
[p6spy] 설정 방법 (0) | 2024.10.21 |
[mysql] basic functions (0) | 2024.09.09 |
[mysql] collation이란 (0) | 2024.06.10 |
DB isolation level (0) | 2024.05.22 |