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.

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.
