9-4 DROP & DELETE & TRUNCATE

airbus·2025년 3월 20일

프로그래머스

목록 보기
41/93

9-4 DROP & DELETE & TRUNCATE

MySQL 에서의 삭제 방법

DROP

DROP TABLE 테이블명;
  • 테이블을 삭제합니다.
  • 테이블 구조 자체를 삭제합니다. (데이터, 제약조건 등 전부)

DELETE

DELETE FROM 테이블명;
  • 테이블의 데이터를 삭제합니다.
  • 테이블명 뒤에 WHERE 로 조건이 존재하면, 해당 조건에 맞는 행만 제거됩니다.
  • 테이블명 뒤에 WHERE 로 조건이 존재하지 않다면, !! 모든 행의 데이터가 제거됩니다. !!

TRUNCATE

TRUNCATE 테이블명;
or
TRUNCATE TABLE 테이블명;
  • 테이블의 모든 행을 삭제합니다.
  • 조건 유무 상관없이 항상 모든 데이터를 제거합니다. (= DELETE 보다 빠른 성능)

DELETE & TRUNCATE

  • 둘 다 데이터를 삭제하는 명령어 입니다.

그럼 무엇이 다른가? 차이점

  • DELETE는 조건에 따라 데이터를 삭제할 수 있지만, TRUNCATE는 항상 모든 데이터를 삭제합니다.
  • TRUNCATE의 경우 AI(AUTO_INCREMENT)값이 초기화 됩니다. (DELTE는 이전 값부터 계속 증가).
  • DELETE는 제약조건이 있어도 행을 삭제 할 수 있지만, TRUNCATE의 경우 오류가 발생합니다.
    (DELETE도 경우에 따라 오류발생 o)

제약조건이 걸려있는 행의 데이터를 삭제할 경우

error code 1701
Cannot truncate a table referenced in a foreignb key constraint (~~)

1701 오류가 발생하는데

SET FOREIGN_KEY_CHECKS = 0;
TRUNCATE 테이블명;

외래키 검사를 끄고 TRUNCATE를 실행하여 데이터를 제거 후

SET FOREIGN_KEY_CHECKS = 1;

하여 다시 설정합니다.

|기타|
MySQL Workbench 에서 SAFE MOD 사용 중이라는 메세지가 뜨면서 데이터 제거가 안되는 경우

error code 1175

SET SQL_SAFE_UPDATES = 0;

또는 

Edit > Preferences > SQL Editor > "Safe Updates" 의 체크박스를 해제합니다.

0개의 댓글