MySQL DELETE 쿼리: 테이블에서 행을 삭제하는 방법
⚡ 스마트 요약
MySQL DELETE 쿼리는 테이블에서 더 이상 필요하지 않은 행을 제거하고 영향을 받은 행 수를 반환합니다. 이 자료에서는 DELETE 구문, WHERE 절 필터링, IN 절을 사용한 여러 행 삭제, 그리고 더 안전한 대안인 TRUNCATE 및 DROP에 대해 설명합니다.

DELETE 쿼리란 무엇입니까?
The MySQL 삭제 DELETE 문은 데이터베이스 테이블에서 더 이상 필요하지 않은 행을 삭제하는 데 사용됩니다. 이 문은 테이블에서 해당 행 전체를 삭제하고 삭제된 행의 수를 반환합니다. DELETE 문은 데이터베이스에서 임시 데이터나 더 이상 필요하지 않은 데이터를 제거해야 할 때 유용합니다.
DELETE 쿼리 MySQL 한 번의 실행으로 테이블에서 여러 행을 삭제할 수 있습니다. 이는 데이터베이스 테이블에서 많은 수의 행을 삭제할 때 유용합니다.
한 번 삭제된 행은 복구할 수 없습니다. 따라서 데이터를 삭제하기 전에 항상 데이터베이스 백업을 생성하여 필요에 따라 나중에 데이터베이스를 복원하고 검토할 수 있도록 하십시오.
행을 삭제하는 방법 MySQL
문장의 목적이 명확해졌으므로 다음 단계는 구문입니다. 행을 삭제하려면 다음과 같이 합니다. MySQL, DELETE FROM 문이 사용됩니다.
DELETE FROM `table_name` [WHERE condition];
여기 :
- `table_name`에서 삭제 그에게 말하다. MySQL 지정된 테이블에서 행을 제거하는 서버입니다.
- [WHERE 조건] 이 옵션은 선택 사항이며, DELETE 쿼리의 영향을 받는 행 수를 제한하는 필터를 적용하는 데 사용됩니다.
경우 WHERE 절 에서는 사용되지 않습니다. MySQL 삭제 쿼리를 실행한 다음 모든 주어진 테이블의 해당 행들이 삭제됩니다.
⚠️ 경고: 먼저 필터를 SELECT 문으로 실행해 보세요. 제거하려는 행들이 정확히 반환되면, 일치하는 행을 삭제하는 DELETE 문을 실행해도 안전합니다. 전체 구문은 문서에 설명되어 있습니다. MySQL 삭제문서 매뉴얼.
예 MySQL 쿼리 삭제
다음 섹션에서는 작은 데이터 세트를 구축한 다음 거기에서 데이터를 삭제합니다.
1단계: 샘플 데이터 삽입
SQL DELETE 문에 대해 자세히 알아보기 전에, 먼저 movies 테이블에 샘플 데이터를 넣어 보겠습니다.
INSERT INTO `movies` (`title`, `director`, `year_released`, `category_id`) VALUES ('The Great Dictator', 'Charlie Chaplin', 1940, 7); INSERT INTO `movies` (`title`, `director`, `category_id`) VALUES ('sample movie', 'Anonymous', 8); INSERT INTO `movies` (`title`, `director`, `year_released`, `category_id`) VALUES ('movie 3', 'John Brown', 1920, 8);
위 스크립트를 실행하면 영화 테이블에 3개의 영화가 추가됩니다. 더 진행하기 전에 테이블에 있는 모든 영화를 나열해 보겠습니다.
SELECT * FROM `movies`;
위 스크립트를 실행하면 다음과 같은 결과가 나타납니다. 새로 삽입된 세 행이 강조 표시됩니다.
| 영화_ID | 제목 | 이사 | 연도_출시 | 카테고리_ID |
|---|---|---|---|---|
| 1 | 캐리비안의 해적 4 | 롭 마샬 | 2011 | 1 |
| 2 | 사라 마샬을 잊어버림 | 니콜라스 스톨 러 | 2008 | 2 |
| 3 | 엑스 맨 | NULL | 2008 | NULL |
| 4 | Code 이름 블랙 | 에드가 짐즈 | 2010 | NULL |
| 5 | 아빠의 어린 소녀들 | NULL | 2007 | 8 |
| 6 | 천사와 악마 | NULL | 2007 | 6 |
| 7 | 다 빈치 Code | NULL | 2007 | 6 |
| 9 | Honey moon | 존 슐츠 | 2005 | 8 |
| 16 | 67% 유죄 | NULL | 2012 | NULL |
| 18 | 위대한 독재자 | 찰리 채플린 | 1940 | 7 |
| 19 | 샘플 영화 | 익명 | NULL | 8 |
| 20 | 영화 3 | 존 브라운 | 1920 | 8 |
2단계: 단일 행 삭제
Myflix 비디오 라이브러리에서 더 이상 "위대한 독재자"를 대여하지 않고 데이터베이스에서 삭제하고 싶다고 가정해 보겠습니다. 해당 영화의 ID는 18이므로 아래 스크립트는 해당 행을 삭제합니다.
DELETE FROM `movies` WHERE `movie_id` = 18;
위 스크립트를 실행하면 MySQL 작업대 Myflix 데이터베이스를 대상으로 검색을 수행하면 해당 테이블에서 ID가 18인 영화가 삭제됩니다.
이제 영화 목록 테이블의 현재 상태를 확인해 보겠습니다.
SELECT * FROM `movies`;
| 영화_ID | 제목 | 이사 | 연도_출시 | 카테고리_ID |
|---|---|---|---|---|
| 1 | 캐리비안의 해적 4 | 롭 마샬 | 2011 | 1 |
| 2 | 사라 마샬을 잊어버림 | 니콜라스 스톨 러 | 2008 | 2 |
| 3 | 엑스 맨 | NULL | 2008 | NULL |
| 4 | Code 이름 블랙 | 에드가 짐즈 | 2010 | NULL |
| 5 | 아빠의 어린 소녀들 | NULL | 2007 | 8 |
| 6 | 천사와 악마 | NULL | 2007 | 6 |
| 7 | 다 빈치 Code | NULL | 2007 | 6 |
| 9 | Honey moon | 존 슐츠 | 2005 | 8 |
| 16 | 67% 유죄 | NULL | 2012 | NULL |
| 19 | 샘플 영화 | 익명 | NULL | 8 |
| 20 | 영화 3 | 존 브라운 | 1920 | 8 |
알림:
- ID가 18인 영화는 더 이상 검색 결과에 포함되지 않습니다.
- DELETE 문으로는 테이블에서 단일 열을 삭제할 수 없습니다. 이 문은 전체 행을 삭제합니다. 특정 필드 하나만 삭제하려면 다른 방법을 사용해야 합니다. 업데이트 쿼리 해당 열을 NULL로 설정합니다.
3단계: IN을 사용하여 여러 행 삭제
삭제하고 싶은 영화 목록이 있다고 가정해 보겠습니다. 각 행마다 별도의 쿼리문을 실행하는 대신, WHERE 절과 IN 연산자를 결합하여 사용할 수 있습니다.
DELETE FROM `movies` WHERE `movie_id` IN (20,21);
위 스크립트를 실행하면 영화 ID가 20과 21인 영화들이 한 번에 영화 테이블에서 삭제됩니다.
삭제 vs 잘라내기 vs 드롭인 MySQL
삭제(DELETE)는 데이터를 제거하는 유일한 방법이 아닙니다. MySQL초보자들은 더 빠른 명령어가 더 적합할 때에도 종종 이 명령어를 사용하는데, 아래 표는 세 가지 제거 명령어를 비교합니다.
| 제품 특장점 | 삭제 | 자르기 | DROP |
|---|---|---|---|
| 명령 유형 | DML | DDL | DDL |
| WHERE 절 | 지원 | 지원되지 않음 | 지원되지 않음 |
| 제거되는 것은 무엇입니까? | 선택된 행 | 모든 행 | 행과 테이블 구조 |
| 되돌리기 | 거래 내에서 가능합니다 | 불가능합니다(암시적 커밋). | 불가능합니다(암시적 커밋). |
| 자동 증가 | 카운터는 유지됩니다. | 카운터가 시작 값으로 재설정됩니다. | 카운터는 테이블과 함께 제거됩니다. |
| 대형 테이블에서의 속도 | 천천히 (한 줄씩) | 매우 빠른 | 매우 빠른 |
필터가 필요하거나 되돌리기 기능이 필요할 때 삭제(DELETE) 키를 사용하세요. 테이블 자르기 테이블을 빠르게 비우고 AUTO_INCREMENT 카운터를 재설정하려는 경우에 사용합니다. DROP 문은 테이블 자체가 더 이상 필요하지 않을 때만 사용해야 합니다. DROP 문은 데이터와 함께 테이블 정의도 삭제하기 때문입니다.
