1️⃣ DELETE
DELETE FROM 테이블명 (WHERE 조건);
: 조건이 있으면 조건에 맞는 행만 삭제 / 조건이 없으면 모든 행이 삭제됨, 테이블은 남아있음
2️⃣ DROP
DROP TABLE 테이블명;
: 테이블을 통째로 삭제
3️⃣ TRUNCATE
TRUNCATE 테이블명;
: 모든 행이 삭제됨, 테이블은 남아있음
1. Safe Update Mode
사용자가 실수로 여러 데이터를 삭제하는 일 방지위해 Safe mode가 디폴트로 설정되어있습니다.
그래서 WHERE문 없이 DELETE문을 쓰면,
Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect.
이러한 오류가 발생합니다. 이 설정을 해제하기 위해
SET SQL_SAFE_UPDATES = 0;
2. FOREIGN_KEY_CHECKS
기본으로 다른 테이블이 이 테이블을 참조하고 있을 때 TRUNCATE를 못합니다.
DELETE는 행 단위 삭제여서 괜찮지만, TRUNCATE는 테이블 초기화기 때문에 더 엄격하게 확인을 하여야되는 겁니다.
자식 테이블을 먼저 TRUNCATE로 비우는 것이 정상적인 방법이지만,
Error Code: 1701. Cannot truncate a table referenced in a foreign key constraint (`BookShop`.`orderedBook`, CONSTRAINT `fk_orderedBook_orders_id` FOREIGN KEY (`order_id`) REFERENCES `BookShop`.`orders` (`id`))
외래키 검사를 off해서 MySQL이 이 관계를 무시하고 삭제하도록 할 수 있습니다.
SET FOREIGN_KEY_CHECKS = 0;