Update e Delete
Até aqui vimos como inserir dados em tabelas, que é o ponto de partida para criamos nosso bando de dados, mas podemos precisar atualizar os dados já existentes, ou até mesmo apaga-los. É para isso que servem os comandos UPDATE e DELETE, respectivamente. Suas sintaxes são semelhantes às do comando INSERT.
Vamos dar um SELECT, exibindo alguns dados na nossa tabela cliente.
SELECT nome AS Nome, idade AS Idade, email AS Email FROM cliente;
Vamos imaginar que precisamos alterar a idade da Lisa de 20 para 19 anos. Nosso comando ficará da seguinte forma:
UPDATE cliente SET idade = 19 WHERE nome like 'Lisa';
Vamos executa-lo:
Recebemos a mensagem de Query OK e a indicação de uma linha alterada.
Vamos repetir o SELECT na tabela e ver se a nova idade, de 19 anos para a cliente Lisa, está inserida.
Aí está a nova idade da cliente Lisa!
Então lembre-se de que a sintaxe do comando UPDATE é sempre:
UPDATE nome_da_tabela SET nome_da_coluna = novo_valor WHERE condição_que_identificará_a_linha_a_ser_alterada.
Muito Importante!
Você SEMPRE DEVE especificar a linha que desejar alterar (no nosso caso o cliente que deve ter os dados alterados) com o parâmetro WHERE, pois se não o fizer o SGBD atualizará TODOS os dados dos clientes. Vou demonstrar com o seguinte comando:
UPDATE cliente SET idade = 19;
Vejam que eu não especifiquei nenhuma linha para ser alterada, então já recebemos a mensagem de que 6 linhas foram alteradas. Isso NÃO é um bom sinal. Vamos dar um SELECT na tabela cliente novamente:
Vejam que todos os nossos clientes receberam a idade de 19 anos! Ou seja, tomem MUITO cuidado com o comando UPDATE e NUNCA esqueçam de definir, através do WHERE, exatamente em qual tupla o dado deve ser atualizado!
Comando DELETE
Esse comando permite a exclusão de uma ou mais tuplas da nossa tabela.
Aproveitando o SELECT acima, vamos apagar o cliente "Marcos" da nossa tabela. Para isso o comando a ser executado é:
DELETE FROM cliente WHERE nome like 'Marcos';
Recebemos a mensagem de que uma linha sofreu alteração. Agora damos outro SELECT na tabela:
O cliente Marcos já não faz parte da nossa tabela.
Aqui vale a mesma observação feita no UPDATE. Se você NÃO especificar, através do parâmetro WHERE, qual a tupla que deve ser removida, o SGBD apagará TODAS ELAS! Muito cuidado!
Prestem atenção a esse comando DELETE, que não possui especificação de tupla a ser removida:
DELETE FROM filme;
E agora um SELECT na tabela:
A instrução Empty set indica que a tabela está vazia. Portanto, lembre-se SEMPRE de utilizar o parâmetro WHERE junto dos comandos UPDATE e DELETE! Sempre!