fbpx

Como fazer UPDATE para atualizar TABELAS do SQL SERVER

By josue | SQL

Oi! Seja bem-vindo!

Hoje vamos aprender o comando UPDATE para atualizar tabelas do SQL SERVER. E mais, vou te mostrar como evitar o temido UPDATE SEM WHERE ūüôā

 

Como fazer UPDATE em TABELAS

Como de costume, vamos a prática e ver a coisa funcionando! Montei abaixo um script com exemplos das várias formas de fazer UPDATE. Apesar desse comando fácil há que se tomar MUITO CUIDADO ao executar UPDATES e DELETES, pois se você ESQUECER da cláusula WHERE pode acabar com um enorme problemão! Vejamos os exemplos:

P.S: Ah, se você ainda não tem o SQL instalado e está sem tempo de instalar, veja nesse artigo (http://dba-pro.com/como-executar-comandos-sql-na-internet/) como simular na internet os comandos abaixo.

 

-- Tabela para testes
create table colaboradores (
	id smallint,
	nm varchar(100),
	ds_cargo varchar(100),
	ic_casado bit,
	nm_conjuge varchar(100),
	vl_salario smallmoney,
	pc_comissao decimal(6, 2)
	)
insert into colaboradores values
	(1, 'Armeloque Araujo', 'Gerente de Vendas', 0, null, 20000, 0),
	(2, 'Colapso Cardiaco', 'Aspone Senior', 0, null, 15000, 10),
	(3, 'Defuntina da Cruz', 'Assistente de Vendas', 0, null, 7000, 10),
	(4, 'Jean Claude Van Dame Da Silva', 'Assistente de Vendas', 0, null, 8000, 10),
	(5, 'Mitiko Kudo Endo', 'Assistente de Vendas', 0, null, 9000, 10),
	(6, 'Amisvaldo Teixeira', 'Caixa', 0, null, 4000, 0)


-- Atualizar a comissão de TODOS os colaboradores para 10%. Veja que nesse caso NÃO USAMOS WHERE
update colaboradores set pc_comissao = 10
select * from colaboradores

-- Atualizar o conjuge do colaborador "Armeloque" que casou-se recentemente:
-- Nesse caso atualizamos 2 colunas, separando-as por v√≠rgula e usamos a CL√ĀUSULA WHERE.
-- Se esquecermos a CL√ĀUSULA WHERE todos os colaboradores aparecer√£o como casados com a mesma pessoa.
update colaboradores set nm_conjuge = 'Rapariga Siqueira', ic_casado = 1 WHERE ID = 1
select * from colaboradores where id = 1

-- Tarefa exemplo: implementar o plano de cargos e sal√°rios da empresa de acordo com o cargo
-- Para fazer isso usamos o comando CASE para definir o valor do sal√°rio de acordo com o cargo
update colaboradores set
	vl_salario = 
		case ds_cargo
			when 'Gerente de Vendas' then 25000
			when 'Aspone Senior' then 20000
			when 'Aspone Junior' then 18000
			when 'Assistente de Vendas' then 15000
			else 5000
		end
select * from colaboradores

-- Limpando testes
drop table colaboradores

 

Como EVITAR UPDATE SEM WHERE :$

Todos que j√° trabalharam tempo suficiente na √°rea de TI j√° fizeram ou viram outros fazer o temido UPDATE SEM WHERE… A muitos anos eu presenciei um profissional que ganhava 10 vezes mais do que eu na √©poca ter sua carreira terminada na empresa por conta de um UPDATE SEM WHERE. Fiquei t√£o apavorado na √©poca rsrsrsrsrs que criei uma receitinha de bolo para garantir que eu nunca passasse por isso, e recomendo que voc√™ que USE E ABUSE dessa dica sensacional! Como dizem por ai, o √ļnico jeito de aprender √© errando, mas ningu√©m disse que o erro precisa ser nosso, certo? kkkkk Segue a receitinha…

-- Tabela para testes
create table colaboradores (
	id smallint,
	nm varchar(100),
	ds_cargo varchar(100),
	ic_casado bit,
	nm_conjuge varchar(100),
	vl_salario smallmoney,
	pc_comissao decimal(6, 2)
	)
insert into colaboradores values
	(1, 'Armeloque Araujo', 'Gerente de Vendas', 0, null, 20000, 0),
	(2, 'Colapso Cardiaco', 'Aspone Senior', 0, null, 15000, 10),
	(3, 'Defuntina da Cruz', 'Assistente de Vendas', 0, null, 7000, 10),
	(4, 'Jean Claude Van Dame Da Silva', 'Assistente de Vendas', 0, null, 8000, 10),
	(5, 'Mitiko Kudo Endo', 'Assistente de Vendas', 0, null, 9000, 10),
	(6, 'Amisvaldo Teixeira', 'Caixa', 0, null, 4000, 0)



-- EVITANDO UPDATE SEM WHERE...
-- Tarefa: Aumentar o sal√°rio dos assistentes em 10% e mudar a comiss√£o para 20%.
-- Passo 1) Montar select simples filtrando os dados alvo
select * from colaboradores where ds_cargo = 'Assistente de Vendas'

-- Passo 2) Simular a atualização usando alias
select 
	nome = nm,
	pc_comissao_antigo = pc_comissao,
	vl_salario_antigo = vl_salario,
	pc_comissao = 20.00,
	vl_salario = vl_salario * 1.10
from colaboradores where ds_cargo = 'Assistente de Vendas'

-- Passo 3)
-- Trocar "select" por "update nome_tabela_ou_alias set":
-- Retirar "from nome_tabela" (se n√£o houver "joins")
-- Retirar campos / alias de teste que n√£o ser√£o atualizados
update colaboradores set
	pc_comissao = 20.00,
	vl_salario = vl_salario * 1.10
where ds_cargo = 'Assistente de Vendas'

select * from colaboradores

-- Passo 4) Ficar feliz porque você não vai mais correr risco de fazer UPDATE SEM WHERE... rsrsrsrs


-- Limpando testes
drop table colaboradores

CONCLUSÃO

UPDATE √© f√°cil, o dif√≠cil √© sair invicto ao longo dos anos e n√£o fazer um deles SEM WHERE… Com essa receitinha simples de 3 passos te garanto que voc√™ n√£o corre mais esse risco! As vezes meus alunos falam que ficam confiantes e param de usar a receita porque ela acaba dando mais trabalho. Realmente com a receita d√° mais trabalho, s√≥ que como dizia meu av√ī, o seguro morreu de velho. Eu prefiro gastar 1 minuto a mais (como seguro) e evitar a calamidade de um UPDATE sem WHERE… E voc√™, o que acha? J√° tem algum “causo” para contar sobre UPDATE sem WHERE?

Abra√ßo do seu amigo Josu√© ūüôā

Faça parte da lista VIP de amigos!

Fique por dentro das novidades, abertura de turmas, tenha acesso a conte√ļdos exclusivos e promo√ß√Ķes! 

Follow

About the Author

Oi, aqui √© o Josu√©. Sou o criador do site dba-pro.com. Minha miss√£o √© ajudar pessoas a usarem o potencial do SQL Server em suas profiss√Ķes, para que trabalhem felizes e bem remuneradas. Sou consultor e empreendedor, atuando em empresas desde 2000 e dando aulas desde 2004. Adoro SQL, Excel, automatiza√ß√£o de processos, finan√ßas e Coaching. Quando n√£o estou trabalhando ou estudando, gosto de leitura, games para PC, filmes, s√©ries e conversas estimulantes.

AULA AO VIVO

‚Äč07/11/2019 - 20H

  • 5 estrat√©gias de pessoas comuns para faturar at√© R$ 15.470,00 por m√™s com SQL;
  • 3 estrat√©gias desconhecidas para conseguir as melhores vagas em desenvolvimento de software;
  • Como come√ßar em tecnologia com renda alta, mesmo que voc√™ esteja iniciando do zero (casos reais de alunos).
x