Para ser claro, a categoria SQL foi dividida em várias subcategorias que incluíam MySQL, PostgreSQL, servidor SQL, etc. enquanto a categoria NoSQL foi dividida em subcategorias que continham MongoDB, Cassandraetc.

Mesmo em 2017, de acordo com o Pesquisa do desenvolvedor do Stack Overflow, a segunda linguagem mais popular usada foi o SQL (logo atrás do JavaScript), com 50% dos 64.000 participantes dizendo que ainda usam o SQL de alguma forma.

Sua popularidade se deve, pelo menos em parte, à simplicidade do idioma, ao fato de ter sido construído com dados relacionais em mente, e provou ser confiável para pesquisar, juntar e filtrar dados.

Basta dizer que o SQL não está apenas vivo e emocionante, mas prosperando na comunidade de desenvolvimento de hoje.

Agora vamos ver o porquê!

The Fun Parts

O SQL Server é o sabor preferido do SQL que eu uso nas minhas atividades diárias no trabalho, de modo que os exemplos abaixo estejam em conformidade com esses padrões.

Uma coisa que me faz bastante é atualizar vários registros em uma tabela. Agora eu poderia fazer esse registro de cada vez, mas o SQL nos permite atualizar vários registros (milhares e milhares, se necessário) de uma só vez através do diretório UPDATE declaração.

o UPDATE A instrução pode ser usada para atualizar uma única coluna, um conjunto maior de registros (através do uso de condições) e / ou a tabela inteira em um banco de dados. A (s) condição (ões) podem ser um valor booleano, uma verificação de cadeia de caracteres ou uma sequência matemática que resolve para um valor booleano (maior que, menor que etc.).

Embora possa variar um pouco de sabor para sabor, a sintaxe geral é a seguinte:

UPDATE table-name
SET column-name = value[, column-name=value]
[WHERE condition]

Os colchetes ( [] ) acima denotam adições opcionais à consulta.

*** É muito importante notar que sem um WHERE condição, TODOS os registros da tabela serão atualizados assim que você executar a consulta. ***

Consultas de exemplo

Como nosso conjunto de dados, usarei esta tabela chamada Work_Tickets:

SalesOrderNumWorkTicketNumCódigo do ConsumidorContato do clienteCusto unitárioFaturadoParentLineKeyQty_OrderedQty_Shipped
000613560009311250[email protected]0,00Falso07977712,00 0
000613570009321251[email protected]0,00Falso085695196,50 0
000613580009331252[email protected]0,00Falso08556917,50 0

Consulta simples sem condições

Aqui está uma consulta de atualização muito simples que altera todas as UnitCost campos para o número 131.6152 :

UPDATE Work_Tickets
SET UnitCost = 131.6152

Note que não há WHERE para que todas as linhas da tabela sejam atualizadas e nosso conjunto de dados fique assim:

SalesOrderNumWorkTicketNumCódigo do ConsumidorContato do clienteCusto unitárioFaturadoParentLineKeyQty_OrderedQty_Shipped
000613560009311250[email protected]131.6152Falso07977712,00 0
000613570009321251[email protected]131.6152Falso085695196,50 0
000613580009331252[email protected]131.6152Falso08556917,50 0

Consultas simples com condição (s)

Aqui está uma consulta simples com uma declaração de condição:

UPDATE Work_Tickets
SET Billed = true
WHERE UnitCost 0.00

Esta consulta atualizará o Billed campo a ser verdade em todas as linhas que correspondem à condição do UnitCost não igual a 0. Depois de executar nossa consulta, o conjunto de dados ficará assim:

SalesOrderNumWorkTicketNumCódigo do ConsumidorContato do clienteCusto unitárioFaturadoParentLineKeyQty_OrderedQty_Shipped
000613560009311250[email protected]131.6152Verdade07977712,00 0
000613570009321251[email protected]131.6152Verdade085695196,50 0
000613580009331252[email protected]131.6152Verdade08556917,50 0

Abaixo está uma consulta em que alteramos o ParentLineKey para a corda 000134 onde o SalesOrderNum e a WorkTicketNum ambos correspondem às seqüências de caracteres fornecidas.

UPDATE Work_Tickets
SET ParentLineKey = 000134
WHERE SalesOrderNum = 00061358 and WorkTicketNumber = 000933

Então, o 085569 no ParentLineKey campo será substituído por 000134 e nosso conjunto de dados agora fica assim:

SalesOrderNumWorkTicketNumCódigo do ConsumidorContato do clienteCusto unitárioFaturadoParentLineKeyQty_OrderedQty_Shipped
000613560009311250[email protected]131.6152Verdade07977712,00 0
000613570009321251[email protected]131.6152Verdade085695196,50 0
000613580009331252[email protected]131.6152Verdade00013417,50 0

Atualizando vários campos

Digamos que você tenha um conjunto de dados muito maior que o que estamos usando no momento e que tenha vários campos para atualizar.

Seria entediante e entorpecedor atualizá-los com diferentes instruções de atualização. Felizmente para nós também é possível atualizar vários campos ao mesmo tempo com uma instrução de atualização, desde que separemos os nomes das colunas com vírgula:

UPDATE Work_Tickets
SET UnitCost = 129.8511, Qty_Ordered = 72, Qty_Shipped = 72
WHERE SalesOrderNum = 00061358

E aqui está o resultado com os campos atualizados após a execução da consulta:

SalesOrderNumWorkTicketNumCódigo do ConsumidorContato do clienteCusto unitárioFaturadoParentLineKeyQty_OrderedQty_Shipped
000613560009311250[email protected]131.6152Verdade07977712,00 0
000613570009321251[email protected]131.6152Verdade085695196,50 0
000613580009331252[email protected]129.8511Verdade0001347272

Usando atualização em uma subconsulta

Os exemplos acima são perfeitos se você estiver trabalhando com uma fonte de dados. No entanto, a maioria dos seus dados não será armazenada em uma única tabela. É aí que usar ATUALIZAR com várias fontes de dados é útil.

A sintaxe para atualizar uma coluna / tabela muda um pouco se quisermos trazer dados de outra tabela:

UPDATE table-name
SET column-name = (SELECT column name(s)
FROM table2-name
WHERE condition(s))

[WHERE condition]

E aqui estão as duas tabelas que usaremos para esta consulta – o Tabela Work_Tickets:

SalesOrderNumWorkTicketNumCódigo do ConsumidorContato do clienteCusto unitárioFaturadoParentLineKeyQty_OrderedQty_Shipped
000613560009311250[email protected]131.6152Verdade07977712,00 0
000613570009321251[email protected]131.6152Verdade085695196,50 0
000613580009331252[email protected]129.8511Verdade0001347272

e a Tabela Customer_Info:

NomeIndústriaCódigoEndereçoCidadeDescontoNúmero de telefoneO email
Wayne EnterprisesDefesa, armamento, aeroespacial, engenhariaNULOCaminho do Cavaleiro das Trevas 1631Gotham19,755556614000[email protected]
Indústrias StarkDefesa, armamento, proteção12515641 Iron DrNão divulgado19,739993126156[email protected]
Acme CorpComédia, riso, animação125224569 Smiling StToon Town17,533216549877[email protected]

o UPDATE declaração com um subconsulta se parece com isso:

UPDATE Customer_Info
SET Code = (SELECT Customer_Code
FROM Work_Tickets
WHERE Work_Tickets.Customer_Contact = Customer_Info.Email)
FROM Work_Tickets
WHERE Code IS NULL

Este exemplo atualizará o Código campo no Informação do Cliente tabela em que o endereço de email corresponde a ambas as tabelas. E é isso que nosso Informação do Cliente tabela parece agora:

NomeIndústriaCódigoEndereçoCidadeDescontoNúmero de telefoneO email
Wayne EnterprisesDefesa, armamento, aeroespacial, engenharia1250Caminho do Cavaleiro das Trevas 1631Gotham19,755556614000[email protected]
Indústrias StarkDefesa, armamento, proteção12515641 Iron DrNão divulgado19,739993126156[email protected]
Acme CorpComédia, riso, animação125224569 Smiling StToon Town17,533216549877[email protected]


Espero que este artigo tenha sido útil para você entender como o ATUALIZAR A instrução funciona em SQL.

Agora você está pronto para escrever seu próprio SQL ATUALIZAR declarações como um campeão! Depois de fazer isso, eu adoraria que você as compartilhasse comigo nas mídias sociais!

Não se esqueça de verificar o meu blogue onde eu frequentemente publico artigos sobre desenvolvimento web.

Enquanto você estiver lá, por que não se inscrever na minha newsletter? Você pode fazer isso no canto superior direito da página principal do blog. Eu gosto de enviar artigos interessantes (meus e outros), recursos e ferramentas para desenvolvedores de vez em quando.

Se você tiver dúvidas sobre este artigo ou, em geral, meus DMs estão abertos – venha dizer oi em Twitter ou qualquer uma das minhas outras contas de mídia social que você pode encontrar abaixo do boletim, inscreva-se na página principal do meu blog ou no meu perfil aqui na fCC 🙂

Tenha um dia maravilhoso e feliz codificação, amigo!