MySQL Consulta DELETE: Como excluir uma linha da tabela

⚡ Resumo Inteligente

MySQL A consulta DELETE remove linhas desnecessárias de uma tabela e retorna o número de linhas afetadas. Este recurso explica a sintaxe do DELETE, a filtragem com WHERE, a exclusão de várias linhas com IN e as alternativas mais seguras TRUNCATE e DROP.

  • 🗑️ Declaração fundamental: DELETE FROM `nome_da_tabela` [WHERE condição] remove linhas inteiras e retorna a contagem de linhas excluídas.
  • ⚠️ Omitido ONDE: Omitir a cláusula WHERE exclui todas as linhas da tabela, portanto, sempre filtre antes de executar.
  • 🎯 TargetRemoção de ed: WHERE `movie_id` = 18 remove um registro, enquanto WHERE `movie_id` IN (20,21) remove vários em uma única instrução.
  • 🔁 Ação irreversível: Os dados apagados não podem ser recuperados sem um backup; portanto, faça um backup do banco de dados antes de executar o comando DELETE.
  • 📊 Escopo em nível de linha: O comando DELETE remove apenas linhas inteiras; para limpar o valor de uma única coluna, é necessário usar o comando UPDATE com NULL.
  • ⚖️ DELETE vs TRUNCATE vs DROP: DELETE filtra linhas, TRUNCATE esvazia uma tabela instantaneamente e DROP remove a própria estrutura da tabela.

O que é a consulta DELETE?

O MySQL EXCLUIR A instrução DELETE é usada para remover linhas desnecessárias de uma tabela de banco de dados. Ela exclui a linha inteira da tabela e retorna a quantidade de linhas excluídas. A instrução DELETE é útil quando você precisa limpar dados temporários ou obsoletos do seu banco de dados.

A consulta DELETE em MySQL É possível remover mais de uma linha de uma tabela em uma única execução. Isso se mostra vantajoso quando se está removendo um grande número de linhas de uma tabela de banco de dados.

Uma vez que uma linha tenha sido excluída, ela não poderá ser recuperada. Sempre faça um backup do banco de dados antes de excluir dados, para que o banco de dados possa ser restaurado e revisado posteriormente, se necessário.

Como excluir uma linha em MySQL

Com o propósito da declaração claro, o próximo passo é a sintaxe. Para excluir uma linha em MySQL, a instrução DELETE FROM é usada:

DELETE FROM `table_name` [WHERE condition];

AQUI:

  • EXCLUIR DA `nome_da_tabela` diz o MySQL servidor para remover linhas da tabela especificada.
  • [ONDE condição] É opcional e serve para aplicar um filtro que restringe o número de linhas afetadas pela consulta DELETE.

Se o Cláusula WHERE não é usado no MySQL Consulta DELETE, então todos os As linhas de uma determinada tabela serão excluídas.

⚠️ Aviso: Execute o filtro como um SELECT primeiro. Se ele retornar exatamente as linhas que você pretende remover, o DELETE correspondente é seguro. A sintaxe completa está documentada em MySQL Manual de instruções DELETE.

Exemplo de MySQL Apagar Consulta

A próxima seção cria um pequeno conjunto de dados e, em seguida, exclui elementos dele.

Passo 1: Inserir dados de exemplo

Antes de entrarmos em uma discussão mais detalhada sobre a instrução SQL DELETE, vamos inserir alguns dados de exemplo na tabela de filmes para trabalharmos com eles.

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);

A execução do script acima adiciona três (3) filmes à tabela de filmes. Antes de prosseguirmos, vamos listar todos os filmes em nossa tabela.

SELECT * FROM `movies`;

A execução do script acima nos dá os seguintes resultados. As três linhas recém-inseridas estão destacadas.

id_do_filme título diretor ano_de lançamento Categoria ID
1 Piratas do Caribe 4 Rob Marshall 2011 1
2 Esquecendo Sarah Marshal Nicholas Stoller 2008 2
3 X-Men NULL 2008 NULL
4 Code Nome Black Edgar Jimz 2010 NULL
5 As filhinhas do papai NULL 2007 8
6 Anjos e Demonios NULL 2007 6
7 Da Vinci Code NULL 2007 6
9 Honey mooners John Schultz 2005 8
16 67% culpado NULL 2012 NULL
18 O Grande Ditador Charlie Chaplin 1940 7
19 filme de exemplo Anônimo NULL 8
20 filme 3 John Brown 1920 8

Passo 2: Exclua uma única linha

Suponha que a biblioteca de vídeos Myflix não queira mais alugar "O Grande Ditador" e queira removê-lo do banco de dados. O ID do filme é 18, então o script abaixo exclui essa linha.

DELETE FROM `movies` WHERE `movie_id` = 18;

Executando o script acima em MySQL Bancada de Trabalho A consulta ao banco de dados do Myflix exclui o filme com ID 18 da tabela.

Vamos agora verificar o estado atual da tabela de filmes.

SELECT * FROM `movies`;
id_do_filme título diretor ano_de lançamento Categoria ID
1 Piratas do Caribe 4 Rob Marshall 2011 1
2 Esquecendo Sarah Marshal Nicholas Stoller 2008 2
3 X-Men NULL 2008 NULL
4 Code Nome Black Edgar Jimz 2010 NULL
5 As filhinhas do papai NULL 2007 8
6 Anjos e Demonios NULL 2007 6
7 Da Vinci Code NULL 2007 6
9 Honey mooners John Schultz 2005 8
16 67% culpado NULL 2012 NULL
19 filme de exemplo Anônimo NULL 8
20 filme 3 John Brown 1920 8

OBSERVAÇÃO:

  • O filme com o ID 18 não é mais retornado no conjunto de resultados da consulta.
  • Não é possível excluir uma única coluna de uma tabela com o comando DELETE. A instrução remove uma linha inteira. Para limpar um campo, use um operador de exclusão (``). ATUALIZAR consulta Isso define a coluna como NULL.

Etapa 3: Exclua várias linhas com IN

Digamos que temos uma lista de filmes que queremos excluir. Em vez de executar uma instrução para cada linha, podemos combinar a cláusula WHERE com o operador IN.

DELETE FROM `movies` WHERE `movie_id` IN (20,21);

A execução do script acima exclui os filmes com IDs 20 e 21 da nossa tabela de filmes em uma única passagem.

DELETE vs TRUNCATE vs DROP in MySQL

DELETE não é a única maneira de remover dados de MySQL. Iniciantes costumam recorrer a ele quando um comando mais rápido seria mais adequado, então a tabela abaixo compara os três comandos de remoção.

Característica EXCLUIR TRUNCAR GOTA
Tipo de comando DML DDL DDL
Cláusula WHERE Suportado Não suportado Não suportado
O que foi removido? Linhas selecionadas Todas as linhas Estrutura de linhas e tabelas
Rollback Possível dentro de uma transação Não é possível (commit implícito) Não é possível (commit implícito)
INCREMENTO AUTOMÁTICO O contador é mantido. O contador é reiniciado para o valor inicial. O balcão é removido juntamente com a mesa.
Velocidade em mesas grandes Lento (linha por linha) Muito rápido Muito rápido

Use DELETE quando precisar de um filtro ou da possibilidade de reverter a ação. TABELA TRUNCAR Use DROP quando quiser esvaziar uma tabela rapidamente e redefinir seu contador AUTO_INCREMENT. Use DROP somente quando a própria tabela não for mais necessária, pois ele remove a definição juntamente com os dados.

Perguntas Frequentes

Somente dentro de uma transação aberta. Execute START TRANSACTION, execute o DELETE e, em seguida, ROLLBACK para desfazer a operação. Após o COMMIT ou com o autocommit ativado, as linhas são excluídas e somente um backup pode restaurá-las.

Use um comando DELETE para múltiplas tabelas com um Cadastre-se, nomeando ambas as tabelas antes da palavra-chave FROM. Alternativamente, defina a chave estrangeira com ON DELETE CASCADE para que as linhas filhas sejam removidas automaticamente quando a linha pai for excluída.

O Modo de Atualização Segura está ativado por padrão em MySQL WorkbenchEssa opção rejeita qualquer comando DELETE cuja cláusula WHERE não utilize uma coluna chave, evitando exclusões acidentais de tabelas inteiras. Desative-a em Editar > Preferências > Editor SQL.

Sim. Os assistentes de IA traduzem uma solicitação em linguagem natural para a sintaxe DELETE e podem explicar a cláusula WHERE. Sempre verifique primeiro se o filtro gerado corresponde a um SELECT, pois um modelo de IA não tem acesso aos seus dados em tempo real.

Não. Deixe a IA elaborar a declaração, mas execute-a você mesmo em uma cópia de segurança ou de teste primeiro. Uma cláusula WHERE ausente exclui todas as linhas, e nenhuma ferramenta de IA pode reverter isso depois que a transação for confirmada.

Resuma esta postagem com: