MySQL DELETE 쿼리: 테이블에서 행을 삭제하는 방법

⚡ 스마트 요약

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

  • 🗑️ 핵심 주장: `table_name` 테이블에서 [WHERE 조건]을 삭제하면 전체 행이 삭제되고 삭제된 행의 개수가 반환됩니다.
  • ⚠️ 생략된 위치: WHERE 절을 생략하면 테이블의 모든 행이 삭제되므로 실행하기 전에 항상 필터링해야 합니다.
  • 🎯 Targeted 제거: `movie_id` = 18인 경우 하나의 레코드가 제거되는 반면 `movie_id` IN (20,21)인 경우 단일 명령으로 여러 레코드가 제거됩니다.
  • 🔁 되돌릴 수 없는 작업: 삭제된 데이터는 백업 없이는 복구할 수 없으므로, 삭제 명령을 실행하기 전에 데이터베이스를 백업하십시오.
  • 📊 행 수준 범위: DELETE 문은 행 전체를 삭제하는 기능이며, 특정 열의 값만 삭제하려면 NULL 값을 포함하는 UPDATE 문을 사용해야 합니다.
  • ⚖️ 삭제 vs. 잘라내기 vs. 드롭: DELETE는 행을 필터링하고, 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 문은 데이터와 함께 테이블 정의도 삭제하기 때문입니다.

자주 묻는 질문

진행 중인 트랜잭션 내에서만 가능합니다. START TRANSACTION을 실행하고 DELETE를 실행한 다음 ROLLBACK을 실행하여 취소하십시오. COMMIT 후 또는 자동 커밋이 활성화된 경우, 해당 행은 삭제되며 백업을 통해서만 복원할 수 있습니다.

여러 테이블을 사용하는 DELETE 작업을 수행합니다. JOINFROM 키워드 앞에 두 테이블의 이름을 모두 지정하십시오. 또는 외래 키를 ON DELETE CASCADE로 정의하여 부모 행이 삭제될 때 자식 행이 자동으로 삭제되도록 할 수 있습니다.

안전 업데이트 모드는 기본적으로 활성화되어 있습니다. MySQL 워크 벤치이 기능은 WHERE 절에 키 열이 사용되지 않는 모든 DELETE 문을 거부하여 실수로 테이블 전체가 삭제되는 것을 방지합니다. 이 기능을 비활성화하려면 편집 > 기본 설정 > SQL 편집기로 이동하십시오.

네. AI 비서는 일반 영어 요청을 삭제 구문으로 변환하고 WHERE 절을 설명해 줄 수 있습니다. 하지만 AI 모델은 실제 데이터를 볼 수 없으므로 생성된 필터를 SELECT 문과 비교하여 항상 검토해야 합니다.

아니요. AI가 쿼리문을 작성하도록 하되, 백업 또는 스테이징 복사본에서 먼저 직접 실행하세요. WHERE 절이 누락되면 모든 행이 삭제되며, 트랜잭션이 커밋된 후에는 어떤 AI 도구도 이를 되돌릴 수 없습니다.

이 게시물을 요약하면 다음과 같습니다.