반응형

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

+ Recent posts