Descubre qué es y para qué sirve SQL Update, el comando de actualización usado en SQL Server para la actualización de valores.
Hace algún tiempo, tratamos por primera vez el lenguaje SQL a través del artículo Comandos útiles de Transact-SQL para la gestión de SQL Server, pero hemos querido volver a hablar sobre este apasionante tema y hemos pensado que la mejor forma de hacerlo es hablando de uno de los comandos más importantes, SQL Update, o mejor dicho Update, ya que el SQL lo añadimos para referirnos a que estamos hablando del comando de este lenguaje.
SQL Update nos da la posibilidad de hacer actualizaciones de tablas o vistas de manera más o menos automatizada, mandando un conjunto de valores a cambiarse de manera simultánea.
NOTA: La sintaxis e informaciones aquí expuestas están soportadas por SQL Server, Azure SQL Database, Azure SQL Managed Instance, pero hay otros productos relacionados con SQL Server como por ejemplo Azure Synapse Analytics, Analytics Platform System o el Almacenamiento en Microsoft Fabric que no se tratan en este caso por ser productos más específicos, en esos productos, pueden encontrarse variaciones de los comandos aquí mostrados.
NOTA: A lo largo de este artículo vamos a suponer que el lector posee una versión de SQL Server 2016 o superior, en caso de tener versiones anteriores (SQL Server 2014 o inferiores) es posible que deba hacer pequeñas adaptaciones del código.
La sintaxis básica de SQL Update la podemos representar de la siguiente manera:
UPDATE <Nombre_Tabla>
SET column1 = <valor_1>, <valor_2> = <valor_3>, …
WHERE <Condición>;
Que tal y como podemos ver tiene una estructura bastante simple, en la cual se dice la tabla que se quiere actualizar a través de <Nombre_Tabla>, los valores que se quieren aplicar “<valor_1>, <valor_2> = <valor_3>, …” mediante el uso de “SET” y en base a una condición evaluada mediante la cláusula “WHERE”. O, dicho de otra manera:
Y como ejemplo se podría realizar la siguiente consulta en la que estamos buscando un tripulante concreto para cambiar una serie de campos:
UPDATE Tripulantes
SET NombreTripulante = ‘James Tiberius Kirk’, Rango= ‘Capitan’
WHERE FederacionID = 01USS1701;
Pero con esta versión de la sintaxis no tenemos todas las opciones que podemos adoptar en la actualización de las tablas, y por eso, podemos tratar la…
Esta es una sintaxis que engloba muchas más casuísticas y opciones dentro del mundo de SQL Update.
Aquí disponemos, en principio, de todas las opciones que vamos a poder necesitar cuando se trabaja con SQL Update en la actualización de tablas y de vistas dentro de SQL Server:
UPDATE
[ TOP ( <expresion>) [ % ] ]
{ { table_alias | <objecto> | rowset_function_limited
[ WITH ( <Sugerencia_de_tabla_limitada> [ …n ] ) ]
}
| @table_variable
}
SET
{ <Nombre_Columna> = { <expresion>| DEFAULT | NULL }
| { udt_column_name.{ { property_name = <expresion>
| <nombre_campo> = <expresión> }
| <nombre_metodo> ( <argumento> [ ,…n ] )
}
}
| column_name { .WRITE ( expression , @Offset , @Length ) }
| @variable = <expresion>
| @variable = column = <expresion>
| column_name {<operadores_compuestos>} <expresion>
| @variable {<operadores_compuestos>} <expresion>
| @variable = column {<operadores_compuestos>} <expresion>
} [ ,…n ]
Vamos a echar un ojo a todas las secciones y opciones que nos proporciona el comando SQL Update par ver como podemos aprovechar al 100% todo su potencial.
Además, siempre se debe tener en mente que se pueden usar los operadores compuestos para la evaluación de condiciones, siendo admitidos los siguientes:
Las condiciones anteriores, se evalúan en base a una expresión, que es un valor literal, una expresión o una instrucción de selección entre paréntesis que devuelve un solo valor. El valor devuelto por la expresión evaluada sustituirá al valor existente.
Algo que no hemos comentado hasta ahora, es que las expresiones comunes también se pueden utilizarse junto a las instrucciones SELECT, INSERT, DELETE y CREATE VIEW, pudiendo, como en tantas otras ocasiones concatenar comandos para multiplicar su potencia.
Es importante que tengamos cuidado al hacer uso de UPDATE, porque un mal uso puede ser bastante nocivo. En concreto, cuando estamos actualizando una tabla, mediante el uso del comando UPDATE, la cláusula WHERE es la encargada de especificar cuáles son los registros que deben ser actualizados, por lo que, si se omite la cláusula WHERE, SQL entenderá que se deben actualizar todos los registros de la tabla, perdiéndose por tanto todo el contenido de esta.
Por esta razón:
UPDATE Tripulantes
SET NombreTripulante = ‘James Tiberius Kirk’, Rango= ‘Capitan’
WHERE FederacionID = 01USS1701;
Es distinto de:
UPDATE Tripulantes
SET NombreTripulante = ‘James Tiberius Kirk’, Rango= ‘Capitan’;
En el primer caso, se buscará el ID asociado y se sustituirá “NombreTripulante” por “James Tiberius Kirk” y el “Rango” por “Capitan”, dejando el resto de los elementos de la tabla sin tocar, mientras que, en la segunda ejecución, se recorrerá toda la tabla cambiando todos los nombres de tripulante y rangos por los mismos datos.
Cuando se está trabajando con sentencias de SQL con capacidad de modificar los datos, como es el caso de SQL UPDATE, es posible que al lanzar una actualización en una o más filas se infrinja alguna restricción que tenga la tabla.
Si se diera un caso como este, SQL Server devolvería un error y haría un ROLLBACK, echando para atrás cualquier cambio que se estuviera produciendo, este es un mecanismo de protección que implementa el SGBD para evitar inconsistencias o corrupciones de los datos almacenados por la base de datos.
Para que se puedan ejecutar sentencia de UPDATE sobre una tabla, esta debe tener concedidos los permisos de UPDATE sobre dicha tabla, de lo contrario se impedirá hacer la actualización. Así mismo, en caso de usar la clausula WHERE necesitaremos dar permisos de SELECT.
Basándonos en esto, es posible que tengamos la tentación de proporcionar permisos de manera generosa a todos los usuarios, pero se debe mantener siempre en mente que, si bien, lo más importante es ser productivos, por lo que no se debe negar el acceso a estos permisos a quien realmente los necesite, se debe tener siempre en mente la importancia de la seguridad, por lo que se deberá dar estos privilegios solo a quien realmente los necesite.
El permiso de actualización de la máquina (UPDATE) se proporciona a roles predefinidos como:
Algunos roles especiales, pueden proporcionar el acceso a otros roles y usuarios, estos son:
Y con esto concluimos (de momento) este breve repaso a SQL Update, aunque os aseguro que dentro de un tiempo, cuando volvamos con SQL Server o con Transact-SQL (T-SQL) trataremos de nuevo con UPDATE, porque es uno de esos «indispensables».
A lo largo de este artículo hemos intentado contestar la pregunta ¿qué es y para qué sirve SQL Update?.
Y para ello hemos revisado sus ventajas, desventajas, problemas, seguridad, y sobre todo hemos presentado una explicación de su sintaxis junto con algún ejemplo de uso.
Esperamos que este pequeño repaso sirva como ayudarte a entender y aprender el lenguaje SQL para Microsoft SQL Server.
Para aquellos que quieran seguir aprendiendo sobre SQL y SQL Server, recomendamos visitar el siguiente enlace, donde podrán leer artículos relacionados con esta tecnología.
También puedes ampliar información consultando la documentación de Microsoft Learn.
¡Gracias por acompañarnos!