Declaración de actualización de SQL: consultas de ejemplo para actualizar valores de tabla

SQL (pronunciado Seequel) son las siglas de Structured Query Language. Es un lenguaje de consulta estático y fuertemente tipado (los tipos se verifican antes del tiempo de ejecución) que apareció por primera vez en 1974 (¡vaya, 46 años!), Pero que no se lanzó inicialmente hasta 1986.  

Puede que esté pensando para sí mismo que una herramienta tan "antigua" tiene sus mejores días detrás, pero estaría lejos de ser correcto. En 2019, a través de la encuesta Scale Grid DeveloperWeek, SQL fue utilizado por el 60,5% de los encuestados, mientras que NoSQL fue utilizado por solo el 39,5% de los encuestados.

Para ser claros, la categoría SQL se dividió en varias subcategorías que incluían MySQL, PostgreSQL, SQL Server, etc., mientras que la categoría NoSQL se dividió en subcategorías que contenían MongoDB, Cassandra, etc.

Incluso en 2017, según la Encuesta para desarrolladores de Stack Overflow, el segundo lenguaje más utilizado fue SQL (justo detrás de JavaScript) y el 50% de los 64.000 encuestados dijeron que todavía usan SQL de alguna forma.

Su popularidad se debe, al menos en parte, a la simplicidad del lenguaje, al hecho de que se creó teniendo en cuenta los datos relacionales y a que ha demostrado ser confiable para buscar, unir y filtrar datos.

Baste decir que SQL no solo está vivo y coleando, sino que prospera entre la comunidad de desarrollo actual.

¡Ahora veamos por qué!

Las partes divertidas

SQL Server es el tipo preferido de SQL que utilizo en mis actividades diarias en el trabajo, por lo que los ejemplos a continuación se ajustarán a esos estándares.  

Una cosa que me encuentro haciendo mucho es actualizar varios registros dentro de una tabla. Ahora podría hacer este registro de uno en uno, pero SQL nos da la capacidad de actualizar múltiples registros (miles y miles si es necesario) a la vez a través de la UPDATEdeclaración.

La UPDATEdeclaración se puede utilizar para actualizar una sola columna, un conjunto más grande de registros (mediante el uso de condiciones) y / o toda la tabla en una base de datos. Las condiciones pueden ser un booleano, una verificación de cadena o una secuencia matemática que se resuelve en un booleano (mayor que, menor que, etc.).

Si bien puede variar ligeramente de un sabor a otro, la sintaxis general es la siguiente:

UPDATEtable-name

SETcolumn-name = value[, column-name=value]

[WHEREcondition]

Los corchetes ([]) de arriba indican adiciones opcionales a la consulta.  

*** Es muy importante tener en cuenta que, sin una WHEREcondición, TODOS los registros de la tabla se actualizarán tan pronto como ejecute la consulta. ***

Consultas de ejemplo

Como nuestro conjunto de datos, usaré esta tabla llamada Work_Tickets :

SalesOrderNumWorkTicketNumCódigo de clienteContacto con el clienteUnitCostFacturadoParentLineKeyQty_OrderedCantidad_enviada
000613560009311250[email protected]0,00Falso07977712,00
000613570009321251[email protected]0,00Falso085695196,50
000613580009331252[email protected]0,00Falso08556917,50

Consulta simple sin condiciones

Aquí hay una consulta de actualización muy simple que cambiará todos los UnitCostcampos al número 131.6152:

UPDATE Work_Tickets

SET UnitCost = 131.6152

Tenga en cuenta que no hay una WHEREcláusula, por lo que todas las líneas de la tabla se actualizarán y nuestro conjunto de datos se verá así:

SalesOrderNumWorkTicketNumCódigo de clienteContacto con el clienteUnitCostFacturadoParentLineKeyQty_OrderedCantidad_enviada
000613560009311250[email protected]131.6152Falso07977712,00
000613570009321251[email protected]131.6152Falso085695196,50
000613580009331252[email protected]131.6152Falso08556917,50

Consultas simples con condición (s)

Aquí hay una consulta simple con una declaración de condición:

UPDATE Work_Tickets

SET Billed = true

WHERE UnitCost 0.00

Esta consulta actualizará el Billedcampo para que sea verdadero en cada línea que coincida con la condición del 0 UnitCostno igual. Después de ejecutar nuestra consulta, el conjunto de datos se verá así:

SalesOrderNumWorkTicketNumCódigo de clienteContacto con el clienteUnitCostFacturadoParentLineKeyQty_OrderedCantidad_enviada
000613560009311250[email protected]131.6152Cierto07977712,00
000613570009321251[email protected]131.6152Cierto085695196,50
000613580009331252[email protected]131.6152Cierto08556917,50

A continuación se muestra una consulta en la que cambiamos ParentLineKeya la cadena 000134en SalesOrderNumla que WorkTicketNumambos coinciden con las cadenas dadas.

UPDATE Work_Tickets

SET ParentLineKey = 000134

WHERE SalesOrderNum = 00061358 and WorkTicketNumber = 000933

Entonces, el 085569 en el ParentLineKeycampo será reemplazado por 000134y nuestro conjunto de datos ahora se ve así:

SalesOrderNumWorkTicketNumCódigo de clienteContacto con el clienteUnitCostFacturadoParentLineKeyQty_OrderedCantidad_enviada
000613560009311250[email protected]131.6152Cierto07977712,00
000613570009321251[email protected]131.6152Cierto085695196,50
000613580009331252[email protected]131.6152Cierto00013417,50

Actualización de varios campos

Supongamos que tiene un conjunto de datos mucho más grande que el que estamos usando actualmente y tiene varios campos para actualizar.  

Sería tedioso y abrumador actualizarlos con diferentes declaraciones de actualización. Afortunadamente para nosotros, también es posible actualizar varios campos a la vez con una declaración de actualización, siempre que separemos los nombres de las columnas con una coma:

UPDATE Work_Tickets

SET UnitCost = 129.8511, Qty_Ordered = 72, Qty_Shipped = 72

WHERE SalesOrderNum = 00061358

Y aquí está el resultado con los campos actualizados después de ejecutar la consulta:

SalesOrderNumWorkTicketNumCódigo de clienteContacto con el clienteUnitCostFacturadoParentLineKeyQty_OrderedCantidad_enviada
000613560009311250[email protected]131.6152Cierto07977712,00
000613570009321251[email protected]131.6152Cierto085695196,50
000613580009331252[email protected]129.8511Cierto0001347272

Usar la actualización en una subconsulta

Los ejemplos anteriores son perfectos si está trabajando con una fuente de datos. Sin embargo, la mayoría de sus datos no se almacenarán en una sola tabla. Ahí es donde resulta útil utilizar UPDATE con múltiples fuentes de datos.

La sintaxis para actualizar una columna / tabla cambia un poco si queremos traer datos de otra tabla:

UPDATEtable-name

SETcolumn-name = (SELECT column name(s)

FROM table2-name

WHERE condition(s))

[WHEREcondition]

Y aquí están las dos tablas que usaremos para esta consulta: la tabla Work_Tickets:

SalesOrderNumWorkTicketNumCódigo de clienteContacto con el clienteUnitCostFacturadoParentLineKeyQty_OrderedCantidad_enviada
000613560009311250[email protected]131.6152Cierto07977712,00
000613570009321251[email protected]131.6152Cierto085695196,50
000613580009331252[email protected]129.8511Cierto0001347272

y la tabla Customer_Info:

NombreIndustriaCódigoHabla aCiudadDescuentoNúmero de teléfonoEmail
Empresas WayneDefensa, armamento, aeroespacial, ingenieríaNULO1631 Camino del Caballero OscuroGotham19,755556614000[email protected]
Industrias StarkDefensa, armamento, protección12515641 Hierro DrNo revelado19,739993126156[email protected]
Acme CorpComedia, risa, animación125224569 Smiling StToon Town17.533216549877[email protected]

La UPDATEdeclaración con una subconsulta se ve así:

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 ejemplo actualizará el campo Código en la tabla Customer_Info donde la dirección de correo electrónico coincide con ambas tablas. Y así es como se ve ahora nuestra tabla Customer_Info :

NombreIndustriaCódigoHabla aCiudadDescuentoNúmero de teléfonoEmail
Empresas WayneDefensa, armamento, aeroespacial, ingeniería12501631 Camino del Caballero OscuroGotham19,755556614000[email protected]
Industrias StarkDefensa, armamento, protección12515641 Hierro DrNo revelado19,739993126156[email protected]
Acme CorpComedia, risa, animación125224569 Smiling StToon Town17.533216549877[email protected]

Terminando

Espero que este artículo le haya sido útil para comprender cómo funciona la instrucción UPDATE en SQL.

¡Ahora está listo para escribir sus propias declaraciones SQL UPDATE como un campeón! Después de que lo hagas, ¡me encantaría que las compartieras conmigo en las redes sociales!

No olvide consultar mi blog, donde publico con frecuencia artículos sobre desarrollo web.

Mientras estás allí, ¿por qué no te suscribes a mi boletín? Puede hacerlo en la parte superior derecha de la página principal del blog. Me gusta enviar artículos interesantes (míos y otros), recursos y herramientas para desarrolladores de vez en cuando.

Si tiene preguntas sobre este artículo o simplemente, en general, mis DM están abiertos, venga a saludar en Twitter o en cualquiera de mis otras cuentas de redes sociales que puede encontrar debajo del boletín de noticias, regístrese en la página principal de mi blog o en mi perfil aquí. en fCC :)

¡Que tengas un día increíble y feliz codificación, amigo!