phpMyAdmin에서 MYSQL 테이블의 모든 레코드 삭제


122

나는 wampserver 2.2를 사용합니다. phpMyAdmin (모두 선택)에서 테이블의 모든 레코드를 삭제하려면 모든 레코드가 아닌 하나의 레코드 만 삭제합니다. 모든 레코드를 삭제하지 않는 이유는 무엇입니까?


3
쿼리에 따라 다릅니다. 이렇게 실행 했습니까? DELETE FROM tableName
John Woo

테이블 이름을 강조 표시하고 누르십시오SHIFT-DEL
DevlshOne 2013-08-16

답변:


130

db-> 구조로 이동하여 필요한 테이블을 비 웁니다. 여기를 보아라:

이 스크린 샷


167

당신은 두 가지 옵션이 있습니다 deletetruncate:

  1. delete from mytable

    자동 증분 ID를 재설정하지 않고 테이블의 모든 내용을 삭제합니다.이 프로세스는 매우 느립니다. 특정 레코드를 삭제하려면 끝에 where 절을 추가하십시오.

  2. truncate myTable

    이렇게하면 테이블이 재설정됩니다. 즉 모든 자동 증분 필드가 재설정됩니다. 그것의 DDL과 그것의 매우 빠릅니다. 를 통해 특정 레코드를 삭제할 수 없습니다 truncate.



27

이 쿼리를 사용하십시오.

DELETE FROM tableName;

참고 : 일부 특정 레코드를 삭제하려면 쿼리의 where 절에 조건을 지정할 수도 있습니다.

또는이 쿼리를 사용할 수도 있습니다.

truncate tableName;

또한 다른 테이블과 관계가 없어야 함을 기억하십시오. 테이블에 외래 키 제약이있는 경우 해당 레코드는 삭제되지 않고 오류가 발생합니다.


19

이 명령을 사용하여 모든 행을 삭제할 수 있지만, 일단 truncate 명령을 실행하면 롤백 할 수 없다는 점을 기억하십시오.

  truncate tableName;

11

'Truncate tableName'은 키 제약 조건이 정의 된 테이블에서 실패 합니다. 또한 테이블 AUTO_INCREMENT값을 다시 색인화하지 않습니다 . 대신 다음 SQL 구문을 사용하여 모든 테이블 항목을 삭제하고 인덱싱을 다시 1로 재설정하십시오.

DELETE FROM tableName;
ALTER TABLE tableName AUTO_INCREMENT = 1

4

흥미로운 사실입니다.

TRUNCATE가 항상 더 잘 수행 될 것이라고 확신했지만 제 경우에는 외래 키가있는 약 30 개의 테이블이 있고 단 몇 개의 행으로 채워진 db의 경우 수백 밀리 초가 아니라 모든 테이블을 TRUNCATE하는 데 약 12 ​​초가 걸렸습니다. 행을 삭제합니다. 자동 증분을 설정하면 총 약 1 초가 추가되지만 여전히 훨씬 좋습니다.

그래서 나는 둘 다 시도해보고 어떤 것이 귀하의 경우에 더 빨리 작동하는지 확인하는 것이 좋습니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.