MySQL Básico - O comando DELETE - Excluindo dados

19/07/2006 22:40:08

Autor: Rondinely S. de Almeida


Serviços para Webmasters

No último artigo, MySQL Básico - Atualizando dados , vimos como atualizar os dados já existentes em uma tabela MySQL, neste artigo aprenderemos como excluir, quando necessário, estes dados.

Primeiramente acesse o utilitário de linha de comando do MySQL, selecione a base de dados Locadora e verifique a existência da tabela filmes.

mysql> use locadora;
Database changed
mysql> show tables;
+--------------------+
| Tables_in_locadora |
+--------------------+
| filmes |
+--------------------+
1 row in set (0.05 sec)

O comando SQL que nos permite excluir dados no MySQL é o comando DELETE.

A sintaxe básica do comando DELETE é a seguinte:

DELETE FROM table_name [WHERE definição_where]

O comando DELETE é aplicado a uma tabela e pode ou não ter uma cláusula WHERE que restringe os registro nos quais ele atuará.

Este comando retorna o número de registros excluídos da tabela.

Se não for especificada uma cláusula WHERE o comando DELETE apagará todos os registros da tabela. Neste caso, no MySQL 3.23, o comando retorna zero.

A partir do MySQL 4.0.0 a exclusão em multi-tabelas é suportada.

Vamos para um exemplo prático. Primeiro visualizaremos que dados temos em nossa tabela filmes :

mysql> select * from filmes;
+----+---------------------------------+------+------------------+
| id | titulo | ano | diretor |
+----+---------------------------------+------+------------------+
| 1 | King Kong | 2006 | Peter Jackson |
| 2 | Guerra dos Mundos | 2005 | Steven Spielberg |
| 3 | Harry Potter e o Cálise de Fogo | 2006 | Mike Newell |
+----+---------------------------------+------+------------------+
3 rows in set (0.11 sec)

Como já haviamos visto em artigos anteriores o comando SELECT * FROM filmes retorna todos os registros da tabela filmes.

Neste caso temos três registros de filmes. Para ilustrar a utilização mais comum do comando DELETE vamos excluir um destes registros com o uso de algum critério. Poderíamos ter um critério único, que excluiria apenas um registro (por exemplo usando o campo id), ou um critério múltiplo, que poderia apagar mais de um registro (por exemplo, neste caso, usando o campo ano).

Vamos optar por usar o campo ano e excluir todos os filmes de anos anteriores a '2006', o comando seria o seguinte:

DELETE FROM filmes WHERE ano<2006;

mysql> DELETE FROM filmes WHERE ano<2006;
Query OK, 1 row affected (0.08 sec)

O comando DELETE foi executado com sucesso ("Query Ok") e afetou apenas uma linha (registro) da tabela, ou seja, existia apenas um filme na tabela com data anterior a '2006'.

Vamos ver como ficaram os registros:

Năo deixe de ver também:
mysql> select * from filmes;
+----+---------------------------------+------+------------------+
| id | titulo | ano | diretor |
+----+---------------------------------+------+------------------+
| 1 | King Kong | 2006 | Peter Jackson |
| 3 | Harry Potter e o Cálise de Fogo | 2006 | Mike Newell |
+----+---------------------------------+------+------------------+
2 rows in set (0.00 sec)

Fica claro que agora só temos filmes do ano de '2006' na tabela.

Vamos agora apagar um registro com base em um campo string. Executaremos o seguinte comando:

DELETE FROM filmes WHERE diretor LIKE '%Jackson'

mysql> DELETE FROM filmes WHERE diretor LIKE '%Jackson';
Query OK, 1 row affected (0.08 sec)

Neste caso o comando DELETE excluiria tudos os registros cujo campo diretor terminasse com o sobrenome 'Jackson' (todos os campos que se parecessem com isto).

Novamente o comando retornou sucesso e avisou que uma linha foi afetada, ou seja, tínhamos um registro que satisfazia a condição.

Vamos ver como ficaram os registros:

mysql> select * from filmes;
+----+---------------------------------+------+------------------+
| id | titulo | ano | diretor |
+----+---------------------------------+------+------------------+
| 3 | Harry Potter e o Cálise de Fogo | 2006 | Mike Newell |
+----+---------------------------------+------+------------------+
1 rows in set (0.00 sec)

Uma situação especial para o comando DELETE ocorre quando ele é aplicado sem nenhuma cláusula WHERE, neste caso todos os registros serão excluídos.

DELETE FROM filmes

mysql> DELETE FROM filmes;
Query OK, 1 row affected (0.00 sec)

Como só tínhamos um registro na tabela, somente uma linha foi afetada.

A tabela filmes agora se encontra vazia.

mysql> select * from filmes;
Empty set (0.00 sec)

Podemos facilmente restaurar os registros que existiam na tabela executando os três últimos comandos do anexo I.

mysql> INSERT INTO `filmes` VALUES (1, 'King Kong', 2006, 
	  '> 'Peter Jackson');
Query OK, 1 row affected (0.02 sec)
mysql> INSERT INTO `filmes` VALUES (2, 'Guerra dos Mundos',
	  '> 2005, 'Steven Spielberg');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO `filmes` VALUES (3, 'Harry Potter e o 
	  '>Cálise de Fogo', 2006,'Mike Newell');
Query OK, 1 row affected (0.00 sec)

A tabela filmes agora está como no começo deste artigo:

mysql> select * from filmes;
+----+---------------------------------+------+------------------+
| id | titulo | ano | diretor |
+----+---------------------------------+------+------------------+
| 1 | King Kong | 2006 | Peter Jackson |
| 2 | Guerra dos Mundos | 2005 | Steven Spielberg |
| 3 | Harry Potter e o Cálise de Fogo | 2006 | Mike Newell |
+----+---------------------------------+------+------------------+
3 rows in set (0.00 sec)

Artigos relacionados

MySQL Básico - O comando UPDATE - Atualizando dados : 15/05/2006
Neste artigo demonstraremos como atualizar dados em tabelas no banco de...

MySQL Básico - O comando SELECT - Realizando consultas : 20/04/2006
Neste artigo demonstraremos como realizar consultas em uma tabela no banco...

MySQL Básico - O comando INSERT - Inserindo dados : 19/04/2006
Neste artigo demonstraremos como inserir dados em uma tabela MySQL, veremos...

MySQL Básico - O comando CREATE TABLE - Criando tabelas : 29/03/2006
Estamos iniciando uma série de artigos sobre o básico que se deve saber...

>> Inicio <<
© Copyright hospedia.com.br - 2005
Todos os direitos reservados.
Seu Ponto de Partida na Internet
Receitas de Bolos
Lyrics
centro-top