Update com select e ordem delete

Passamos a explicar como fazer uma atualização a partir de um select e como podemos apagar registros de nossa base de dados.

Por Sara Alvarez Langa


Publicado em: 26/9/12
Valorize este artigo:
Update com select

Muito frequentemente temos a necessidade de atualizar certos campos que requerem uma consulta previa, para estes casos podemos realizar tudo em uma mesma sentença.

Para realizar tal sentença utilizaremos um update e dentro do where ou o set colocaremos o select com a consulta que necessitemos.

Temos que ter em conta que quando a consulta faz parte do set devemos selecionar uma única fila e o mesmo número de colunas que há entre parênteses ao lado do set.

A sintaxe é a seguinte:

update <nome tabela>
set coluna1=valor1, coluna1=valor2, ..
where coluna3=(select ...);


Se utilizamos o set seria esta outra:

update <nome tabela>
set (coluna1,coluna2, ?)=(select col1, col2,..)
where condição;


E poderíamos misturar os dois casos sem nenhum tipo de problema.

Deixo um exemplo para que vocês vejam como funciona:

Temos que mudar o salário pela metade e colocar a comissão a 0 para todos os empregados que pertençam ao departamento com maior número de empregados.

Update empregado set salario=salario/2, comissao=0 where departamento=(select departamento from empregado group by departamento having count(*)=(select max(count(*)) from empregado group by departamento));

Como vocês observaram a sentença pode assustar um pouco mas é simples de compreender. Atualizamos os dados que nos pedem e fazemos no where a busca daqueles empregados que cumprem esses critérios.

Delete

Esta ordem nos permite apagar uma ou varias filas de uma tabela. Nesta ordem a cláusula where é essencial já que se não a colocarmos adequadamente corremos o risco de eliminar registros não desejados. Se não colocarmos um where na sentença, esta nos apagará todos os registros da tabela.

Há que recordar que igual ao update esta sentença também pode levar uma subconsulta acrescentada.

A sintaxe geral é bastante simples:

delete from nometabela where condição;

Ponho dois exemplos de utilização da ordem delete:

Apaga os empregados do departamento 20

delete from empregado where departamento=20;

Apaga os departamentos com menos de quatro empregados

delete from depart where departamento in (select departamento from empregado group by departamento having count(*)<4);
Referencia: Temos um tutorial de SQL para aprender a utilizar o padrão utilizado para a consulta de bases de dados.





Comentários do artigo
Foi enviado 1 comentário ao artigo
1 comentário não revisado
0 comentários revisados

Usuários :    login / registro

Manuais relacionados
Categorias relacionadas
O autor

Home | Sobre nós | Copyright | Anuncie | Entrar em contato