Categorias
dicas sql server

Dicas de Instru????es SQL para facilitar o uso no dia-a-dia

Bom, abaixo separei algumas instru????es SQL que muitos programadores tem d??vidas de como us??-las e que facilitam muitas tarefas.

1) INSERT de SELECT: Fazer inser????es em uma tabela puxando dados de outra(s)

Bem parecido com o SELECT INTO por??m voc?? pode fazer v??rias manipula????es conforme desejar usando um simples SELECT. No caso vou mostrar um exemplo bem f??cil: irei adicionar v??rios Alunos numa tabela sendo que os dados est??o em outra tabela (Cadastros), logo minha instru????o ficaria assim:

INSERT INTO Alunos (nome, email) SELECT nome, email FROM Cadastros

O nome dos campos n??o precisam serem iguais, basta estar na mesma ordem e respeitar o tipo de dados (tamanho tamb??m).

2) UPDATE relacionado com outra tabela

Nessa situa????o o que desejamos ?? fazer um UPDATE na tabela sendo que ?? preciso fazer um JOIN com outra tabela. No nosso exemplo: desejamos alterar o preco de um produto sendo que o valor do mesmo est?? relacionado com seu tipo e ele est?? armazenado em outra tabela. Logo podemos usar a seguinte instru????o:

UPDATE Produto SET preco = T.preco FROM Produto AS P, Tipo AS T WHERE P.Id_Tipo = T.Id

Meio complicado quando se v??, n??? Mas se voc?? reparar detalhadamente ver?? que a atualiza????o do pre??o ?? feita, para cada produto, quando o Id_Tipo (da tabela Produto) for igual ao Id (da tabela Tipo) obtendo assim o preco (da tabela Tipo).

3) Remover registros duplicados deixando apenas um

A explica????o desse objetivo ?? bem ??bvia: remover registros duplicados em uma determinada tabela sob,algum crit??rio. Por??m, sua sintaxe ?? mais complicada, mas vamos l??… Para nosso exemplo iremos remover os registros duplicados (ou mais que um) de e-mails deixando apenas um na tabela Mailing:

;WITH Listagem(email, ranking)
AS
(
SELECT email
,ranking = DENSE_RANK() OVER(PARTITION BY email ORDER BY NEWID() ASC)
FROM Mailing WITH (NOLOCK) WHERE email IS NOT NULL 
)
DELETE Listagem WHERE ranking > 1

Esse emaranhado de instru????es se resume em gerar um ranking indicando quantas vezes o registro se repete. Esse ranking ?? armazenado em uma tabela “tempor??ria” (tabela Listagem) com refer??ncia ?? original (tabela Mailing)… Logo que ?? gerado o ranking, ?? feita a exclus??o dos registros que possuem ranking maior que 1, ou seja, apaga todos aqueles que est??o se repetindo deixando apenas um deles.

Bem, ?? isso! Espero ter ajudado… Lembrando que os exemplos acima foram os mais simples e voc??s podem encontrar situa????es semelhantes ou piores mas que, usando-os, podem ajudar a chegar na resolu????o.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *