MySQL – DELETE e TRUNCATE TABLE – Excluir registros de uma tabela – 16
Excluir Registros de uma Tabela no MySQL com DELETE e TRUNCATE TABLE
Uma das tarefas mais comuns na manutenção de tabelas de bancos de dados é a exclusão de registros (linhas). É muito comum, por exemplo, excluir um produto de uma tabela que não é mais ofertado por uma loja, ou um cliente que se descadastrou de um sistema.
Além disso, em algumas situações muito especiais, pode ser necessário excluir todos os registros de uma tabela – ou seja, limpar a tabela.
Podemos excluir registros de uma tabela com SQL por meio de duas declarações: DELETE FROM e TRUNCATE TABLE.
Excluir um ou mais registros especificados – Cláusula DELETE
Com a cláusula DELETE podemos excluir registros específicos, indicados (filtrados) por meio de uma condição na cláusula WHERE
Sintaxe:
DELETE FROM tabela WHERE coluna = valor;
Exemplo – vamos excluir o autor da tabela de autores cujo id de autor é igual a 2:
DELETE FROM tbl_autores
WHERE ID_Autor = 2;
Obs.: Sempre use a cláusula WHERE para evitar a perda de dados da tabela, caso contrário todos os registros serão excluídos, uma a um!
TRUNCATE TABLE
O comando TRUNCATE TABLE permite remover todas as linhas de uma tabela em uma única operação, sem registrar as exclusões de linhas individuais.
O TRUNCATE TABLE equivale a executar a instrução DELETE, porém sem usar a cláusula WHERE. Portanto, é usada para apagar completamente o conteúdo de uma tabela no MySQL.
Entretanto, a cláusula TRUNCATE TABLE é mais rápida e utiliza menos recursos de sistema e log de transações durante sua execução.
Exemplo
Exemplo: Vamos excluir todos os registros presentes na tabela tbl_teste_incremento:
TRUNCATE TABLE tbl_teste_incremento;
O vídeo a seguir mostra o uso das cláusulas apresentadas nesta lição, para realizar a exclusão de registros em tabelas no MySQL:
gostei valeu!!!
excelente dica… excelente professor
Valeu Rodolfo!
Amigo, preciso excluir somente os registros da tabela pai que não tem nenhum registro na tabela filho e vice e versa. Como fazer?
Nilton, dê uma olhada nestas lições:
http://www.bosontreinamentos.com.br/mysql/mysql-left-e-right-join-consultar-dados-em-duas-ou-mais-tabelas-30/
http://www.bosontreinamentos.com.br/sql-com-sql-server/24-t-sql-full-outer-join-selecionar-dados-de-varias-tabelas-sql-server/
Talvez resolvam seu problema.
Abraço!
E como faço para excluir não um Registro (Linha) inteiro, mas apenas o conteúdo de um Atributo (Coluna)? Como ficaria esse comando?
Neste caso você deve usar a declaração UPDATE, que permite alterar valores de dados individuais em uma coluna: http://www.bosontreinamentos.com.br/mysql/mysql-update-modificar-registros-em-tabelas-20/
Basta atribuir o valor NULL para que um atributo de um registro fique “vazio”.
Note que isso só funcionará se a coluna não tiver sido definida como NOT NULL quando a tabela foi criada, caso contrário será impossível excluir o valor.
Caro Sr Fábio,,,,eu queria excluir todos os registros ,,,,mas queria deixaer apenas 01 registro,,,,como faço
Olá Renio!
Você quer deixar um registro específico, ou um registro qualquer aleatório?