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: