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:
SalesOrderNum | WorkTicketNum | Código do Consumidor | Contato do cliente | Custo unitário | Faturado | ParentLineKey | Qty_Ordered | Qty_Shipped |
00061356 | 000931 | 1250 | [email protected] | 0,00 | Falso | 079777 | 12,0 | 0 0 |
00061357 | 000932 | 1251 | [email protected] | 0,00 | Falso | 085695 | 196,5 | 0 0 |
00061358 | 000933 | 1252 | [email protected] | 0,00 | Falso | 085569 | 17,5 | 0 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:
SalesOrderNum | WorkTicketNum | Código do Consumidor | Contato do cliente | Custo unitário | Faturado | ParentLineKey | Qty_Ordered | Qty_Shipped |
00061356 | 000931 | 1250 | [email protected] | 131.6152 | Falso | 079777 | 12,0 | 0 0 |
00061357 | 000932 | 1251 | [email protected] | 131.6152 | Falso | 085695 | 196,5 | 0 0 |
00061358 | 000933 | 1252 | [email protected] | 131.6152 | Falso | 085569 | 17,5 | 0 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:
SalesOrderNum | WorkTicketNum | Código do Consumidor | Contato do cliente | Custo unitário | Faturado | ParentLineKey | Qty_Ordered | Qty_Shipped |
00061356 | 000931 | 1250 | [email protected] | 131.6152 | Verdade | 079777 | 12,0 | 0 0 |
00061357 | 000932 | 1251 | [email protected] | 131.6152 | Verdade | 085695 | 196,5 | 0 0 |
00061358 | 000933 | 1252 | [email protected] | 131.6152 | Verdade | 085569 | 17,5 | 0 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:
SalesOrderNum | WorkTicketNum | Código do Consumidor | Contato do cliente | Custo unitário | Faturado | ParentLineKey | Qty_Ordered | Qty_Shipped |
00061356 | 000931 | 1250 | [email protected] | 131.6152 | Verdade | 079777 | 12,0 | 0 0 |
00061357 | 000932 | 1251 | [email protected] | 131.6152 | Verdade | 085695 | 196,5 | 0 0 |
00061358 | 000933 | 1252 | [email protected] | 131.6152 | Verdade | 000134 | 17,5 | 0 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:
SalesOrderNum | WorkTicketNum | Código do Consumidor | Contato do cliente | Custo unitário | Faturado | ParentLineKey | Qty_Ordered | Qty_Shipped |
00061356 | 000931 | 1250 | [email protected] | 131.6152 | Verdade | 079777 | 12,0 | 0 0 |
00061357 | 000932 | 1251 | [email protected] | 131.6152 | Verdade | 085695 | 196,5 | 0 0 |
00061358 | 000933 | 1252 | [email protected] | 129.8511 | Verdade | 000134 | 72 | 72 |
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:
SalesOrderNum | WorkTicketNum | Código do Consumidor | Contato do cliente | Custo unitário | Faturado | ParentLineKey | Qty_Ordered | Qty_Shipped |
00061356 | 000931 | 1250 | [email protected] | 131.6152 | Verdade | 079777 | 12,0 | 0 0 |
00061357 | 000932 | 1251 | [email protected] | 131.6152 | Verdade | 085695 | 196,5 | 0 0 |
00061358 | 000933 | 1252 | [email protected] | 129.8511 | Verdade | 000134 | 72 | 72 |
e a Tabela Customer_Info:
Nome | Indústria | Código | Endereço | Cidade | Desconto | Número de telefone | O email |
Wayne Enterprises | Defesa, armamento, aeroespacial, engenharia | NULO | Caminho do Cavaleiro das Trevas 1631 | Gotham | 19,75 | 5556614000 | [email protected] |
Indústrias Stark | Defesa, armamento, proteção | 1251 | 5641 Iron Dr | Não divulgado | 19,73 | 9993126156 | [email protected] |
Acme Corp | Comédia, riso, animação | 1252 | 24569 Smiling St | Toon Town | 17,53 | 3216549877 | [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:
Nome | Indústria | Código | Endereço | Cidade | Desconto | Número de telefone | O email |
Wayne Enterprises | Defesa, armamento, aeroespacial, engenharia | 1250 | Caminho do Cavaleiro das Trevas 1631 | Gotham | 19,75 | 5556614000 | [email protected] |
Indústrias Stark | Defesa, armamento, proteção | 1251 | 5641 Iron Dr | Não divulgado | 19,73 | 9993126156 | [email protected] |
Acme Corp | Comédia, riso, animação | 1252 | 24569 Smiling St | Toon Town | 17,53 | 3216549877 | [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!