Maybaygiare.org

Blog Network

Apagar todos os dados numa tabela MySQL

MySQL é a base de dados de código aberto mais popular do mundo, reconhecida pela sua velocidade e fiabilidade. Este artigo analisa como eliminar todos os dados de uma tabela de banco de dados MySQL e como afecta os campos incrementais automáticos.

Delete e Trunce

Existem duas formas de apagar todos os dados numa tabela de base de dados MySQL.

TRUNCATE TABLE tablename; isto irá apagar todos os dados da tabela muito rapidamente. Em MySQL a tabela é realmente descartada e recriada, daí a velocidade da consulta. O número de linhas apagadas para as tabelas MyISAM devolvidas é zero; para o INNODB devolve o número real apagado.

DELETE FROM tablename; isto também apaga todos os dados da tabela, mas não é tão rápido quanto o método” TRUNCATE TABLE”. Em MySQL >= 4.0 o número de linhas suprimidas é devolvido; no MySQL 3.23 o número devolvido é sempre zero.

colunas de incremento automático para as tabelas MyISAM

Se tiver uma coluna de chave primária de incremento automático na sua tabela MyISAM, o resultado será ligeiramente diferente dependendo do método de remoção que usar. Ao utilizar o método “TRUNCATE TABLE”, o valor da semente de crescimento automático será reposto para 1. Ao usar o método” apagar de”, a semente de incremento automático será deixada como era antes (por exemplo, se o campo de incremento automático do último registro inserido foi 123 O próximo registro inserido será definido para 124).

Note que isto é verdadeiro para o MySQL >= 4.0; a partir de minha leitura da TRUNCAR a página de manual na versão 3.23 do MySQL TRUNCAR funciona como APAGAR o que significaria o auto incremento de sementes não é reposto. Não tenho actualmente uma base de dados 3.23 criada para o testar, pelo que não posso confirmar isso.

colunas de incremento automático para as tabelas INNODB

para as tabelas INNODB, quer use a “tabela truncada” ou a “eliminação de” métodos, o campo de incremento automático não será reiniciado. Se você inseriu 5 registros em uma nova tabela, então apagou todos os registros e inseriu outro registro, o campo teria um valor de 6, independentemente do método que você usou.

Update 17 Feb 2009: I originally wrote this post when MySQL 4.0 was the current version. Eu acabei de testar o acima agora em uma tabela INNODB usando MySQL 5.0 e usando TRUNCATE faz resetar o campo de incremento automático de volta para o padrão. Então, ou o comportamento mudou em algum momento ou eu estava errado ao fazer a declaração acima.

tem a certeza de que deseja apagar todos os dados?

antes de apagar todos os dados de uma base de dados, deve certificar-se de que pretende mesmo apagar todos os dados. Ele muitas vezes paga primeiro para “selecionar * do nome do tabuleiro” ou “selecionar contagem(*) do nome do tabuleiro” antes de fazer isso para verificar que é realmente seguro excluir todos os dados. Talvez você realmente queira fazer algo como” apagar do tablename onde foo = ‘bar’ ” em vez disso.

Deixe uma resposta

O seu endereço de email não será publicado.