>  기사  >  데이터 베이스  >  mysql 고급(21) 테이블 데이터 삭제

mysql 고급(21) 테이블 데이터 삭제

黄舟
黄舟원래의
2017-02-11 10:45:251452검색

MySQL은 테이블 데이터를 삭제합니다

MySQL에서 데이터를 삭제하는 방법에는 DELETE 문과 TRUNCATE TABLE 문 두 가지 방법이 있습니다. DELETE 문은 WHERE를 통해 삭제할 레코드를 선택할 수 있습니다. TRUNCATE TABLE을 사용하면 테이블의 모든 레코드가 삭제됩니다. 따라서 DELETE 문이 더 유연합니다.

테이블의 모든 레코드를 지우려면 다음 두 가지 방법을 사용할 수 있습니다.

>

여기서 두 번째 레코드의 TABLE은 선택 사항입니다.

테이블의 일부 레코드를 삭제하려면 DELETE 문만 사용할 수 있습니다.

DELETE FROM table1
       TRUNCATE TABLE table1

DELETE가 WHERE 절을 추가하지 않는 경우 TRUNCATE TABLE과 동일하지만 한 가지 차이점이 있습니다. 즉, DELETE는 삭제된 레코드 수를 반환할 수 있고 TRUNCATE TABLE은 0을 반환합니다.

테이블에 자동 증가 필드가 있는 경우 WHERE 절 없이 TRUNCATE TABLE 및 DELETE를 사용하여 모든 레코드를 삭제한 후 자동 증가 필드는 시작 값을 1로 복원합니다. 이 작업을 원하지 않는 경우 DELETE 문에 WHERE 1 또는 WHERE true와 같은 영구 WHERE를 추가할 수 있습니다.

       DELETE FROM table1 WHERE ...;

위 명령문은 실행 시 각 레코드를 검색합니다. 그러나 WHERE 조건이 항상 true이기 때문에 비교하지 않습니다. 최대 자동 증가 값을 유지할 수 있지만 모든 레코드를 스캔하므로 WHERE 절이 없는 DELETE보다 실행 비용이 훨씬 더 많이 듭니다.


DELETE와 TRUNCATE TABLE의 가장 큰 차이점은 DELETE는 WHERE 문을 통해 삭제할 레코드를 선택할 수 있지만 실행 속도가 빠르지 않다는 점이다.

truncate를 삭제한 후에는 mysql 로그가 기록되지 않으며 데이터를 복원할 수 없습니다. 삭제의 효과는 삭제가 완료될 때까지 mysql 테이블의 모든 레코드를 하나씩 삭제하는 것과 비슷하지만, truncate는 mysql 테이블의 구조를 유지하고 테이블을 다시 생성하는 것과 같습니다. 새 테이블. 또한 삭제된 레코드 수를 반환할 수도 있습니다. TRUNCATE TABLE은 지정된 레코드를 삭제할 수 없으며 삭제된 레코드를 반환할 수 없습니다. 그러나 매우 빠르게 실행됩니다.


DELETE는 표준 SQL 문과 달리 ORDER BY 및 LIMIT 절을 지원하므로 삭제할 레코드를 더 잘 제어할 수 있습니다. 예를 들어 WHERE 절로 필터링된 레코드 중 일부만 삭제하려면 LIMIT를 사용하면 됩니다. 마지막 몇 개의 레코드를 삭제하려면 ORDER BY와 LIMIT를 함께 사용할 수 있습니다. 이름이 "Mike"인 사용자 테이블의 처음 6개 레코드를 삭제한다고 가정합니다. 다음 DELETE 문을 사용할 수 있습니다:

      DELETE FROM table1 WHERE 1;

일반적으로 MySQL은 어떤 6개의 레코드가 삭제되는지 확신하지 못합니다. 보다 안전하려면 ORDER BY를 사용하여 레코드를 정렬할 수 있습니다.

      DELETE FROM users WHERE name = 'Mike' LIMIT 6;

아름다운 글과 그림


위는 mysql Advanced(21) 테이블 데이터 삭제 내용입니다. 내용은 PHP 중국어 홈페이지(www.php.cn)를 주목해주세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.