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 UPDATE
declaración.
La UPDATE
declaració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-nameSETcolumn-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 WHERE
condició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 :
SalesOrderNum | WorkTicketNum | Código de cliente | Contacto con el cliente | UnitCost | Facturado | ParentLineKey | Qty_Ordered | Cantidad_enviada |
00061356 | 000931 | 1250 | [email protected] | 0,00 | Falso | 079777 | 12,0 | 0 |
00061357 | 000932 | 1251 | [email protected] | 0,00 | Falso | 085695 | 196,5 | 0 |
00061358 | 000933 | 1252 | [email protected] | 0,00 | Falso | 085569 | 17,5 | 0 |
Consulta simple sin condiciones
Aquí hay una consulta de actualización muy simple que cambiará todos los UnitCost
campos al número 131.6152
:
UPDATE Work_Tickets
SET UnitCost = 131.6152
Tenga en cuenta que no hay una WHERE
cláusula, por lo que todas las líneas de la tabla se actualizarán y nuestro conjunto de datos se verá así:
SalesOrderNum | WorkTicketNum | Código de cliente | Contacto con el cliente | UnitCost | Facturado | ParentLineKey | Qty_Ordered | Cantidad_enviada |
00061356 | 000931 | 1250 | [email protected] | 131.6152 | Falso | 079777 | 12,0 | 0 |
00061357 | 000932 | 1251 | [email protected] | 131.6152 | Falso | 085695 | 196,5 | 0 |
00061358 | 000933 | 1252 | [email protected] | 131.6152 | Falso | 085569 | 17,5 | 0 |
Consultas simples con condición (s)
Aquí hay una consulta simple con una declaración de condición:
UPDATE Work_TicketsSET Billed = true
WHERE UnitCost 0.00
Esta consulta actualizará el Billed
campo para que sea verdadero en cada línea que coincida con la condición del 0 UnitCost
no igual. Después de ejecutar nuestra consulta, el conjunto de datos se verá así:
SalesOrderNum | WorkTicketNum | Código de cliente | Contacto con el cliente | UnitCost | Facturado | ParentLineKey | Qty_Ordered | Cantidad_enviada |
00061356 | 000931 | 1250 | [email protected] | 131.6152 | Cierto | 079777 | 12,0 | 0 |
00061357 | 000932 | 1251 | [email protected] | 131.6152 | Cierto | 085695 | 196,5 | 0 |
00061358 | 000933 | 1252 | [email protected] | 131.6152 | Cierto | 085569 | 17,5 | 0 |
A continuación se muestra una consulta en la que cambiamos ParentLineKey
a la cadena 000134
en SalesOrderNum
la que WorkTicketNum
ambos coinciden con las cadenas dadas.
UPDATE Work_TicketsSET ParentLineKey = 000134
WHERE SalesOrderNum = 00061358 and WorkTicketNumber = 000933
Entonces, el 085569 en el ParentLineKey
campo será reemplazado por 000134
y nuestro conjunto de datos ahora se ve así:
SalesOrderNum | WorkTicketNum | Código de cliente | Contacto con el cliente | UnitCost | Facturado | ParentLineKey | Qty_Ordered | Cantidad_enviada |
00061356 | 000931 | 1250 | [email protected] | 131.6152 | Cierto | 079777 | 12,0 | 0 |
00061357 | 000932 | 1251 | [email protected] | 131.6152 | Cierto | 085695 | 196,5 | 0 |
00061358 | 000933 | 1252 | [email protected] | 131.6152 | Cierto | 000134 | 17,5 | 0 |
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_TicketsSET 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:
SalesOrderNum | WorkTicketNum | Código de cliente | Contacto con el cliente | UnitCost | Facturado | ParentLineKey | Qty_Ordered | Cantidad_enviada |
00061356 | 000931 | 1250 | [email protected] | 131.6152 | Cierto | 079777 | 12,0 | 0 |
00061357 | 000932 | 1251 | [email protected] | 131.6152 | Cierto | 085695 | 196,5 | 0 |
00061358 | 000933 | 1252 | [email protected] | 129.8511 | Cierto | 000134 | 72 | 72 |
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-nameSETcolumn-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:
SalesOrderNum | WorkTicketNum | Código de cliente | Contacto con el cliente | UnitCost | Facturado | ParentLineKey | Qty_Ordered | Cantidad_enviada |
00061356 | 000931 | 1250 | [email protected] | 131.6152 | Cierto | 079777 | 12,0 | 0 |
00061357 | 000932 | 1251 | [email protected] | 131.6152 | Cierto | 085695 | 196,5 | 0 |
00061358 | 000933 | 1252 | [email protected] | 129.8511 | Cierto | 000134 | 72 | 72 |
y la tabla Customer_Info:
Nombre | Industria | Código | Habla a | Ciudad | Descuento | Número de teléfono | |
Empresas Wayne | Defensa, armamento, aeroespacial, ingeniería | NULO | 1631 Camino del Caballero Oscuro | Gotham | 19,75 | 5556614000 | [email protected] |
Industrias Stark | Defensa, armamento, protección | 1251 | 5641 Hierro Dr | No revelado | 19,73 | 9993126156 | [email protected] |
Acme Corp | Comedia, risa, animación | 1252 | 24569 Smiling St | Toon Town | 17.53 | 3216549877 | [email protected] |
La UPDATE
declaración con una subconsulta se ve así:
UPDATE Customer_InfoSET 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 :
Nombre | Industria | Código | Habla a | Ciudad | Descuento | Número de teléfono | |
Empresas Wayne | Defensa, armamento, aeroespacial, ingeniería | 1250 | 1631 Camino del Caballero Oscuro | Gotham | 19,75 | 5556614000 | [email protected] |
Industrias Stark | Defensa, armamento, protección | 1251 | 5641 Hierro Dr | No revelado | 19,73 | 9993126156 | [email protected] |
Acme Corp | Comedia, risa, animación | 1252 | 24569 Smiling St | Toon Town | 17.53 | 3216549877 | [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!