Aprende cómo UPDATE con JOIN en SQL simplifica las actualizaciones entre tablas en SQL Server. Comprende en qué se diferencian INNER JOIN y LEFT JOIN para casos de uso específicos, y explora alternativas utilizando subconsultas o la sentencia MERGE.
Los datos coherentes son importantes para la fiabilidad y la integridad en las bases de datos relacionales. Al modificar datos existentes en tablas relacionadas, utilizamos la sentencia UPDATE con la cláusula JOIN para lograr la coherencia de los datos. La operación UPDATE con JOIN está soportada en SQL Server y es útil para garantizar una sincronización precisa de los datos entre tablas.
La operación SQL JOIN permite actualizaciones más complejas que las de una sola tabla mediante claves externas compartidas entre las distintas tablas. La operación UPDATE con JOIN es útil para desarrolladores y administradores de bases de datos, ya que mejora la eficacia y reduce los riesgos de incoherencias en los datos.
Antes de empezar, te recomiendo que sigas el curso Introducción a SQL Server de DataCamp para familiarizarte con el funcionamiento de las bases de datos SQL Server. Este tutorial está escrito pensando específicamente en SQL Server. Consulta también nuestro tutorial, Introducción a las uniones SQL, para aprender a utilizar JOIN cuando trabajes con varias tablas en SQL.
Cómo utilizar SQL UPDATE con JOIN
En SQL Server, la operación UPDATE con JOIN te permite actualizar registros de una tabla basándote en datos coincidentes de otra. Esta técnica es especialmente útil cuando se sincronizan datos de varias tablas.
Utilizar SQL UPDATE con INNER JOIN
El INNER JOIN en SQL recupera filas/registros con datos coincidentes en ambas tablas. Cuando se utiliza con la sentencia UPDATE, INNER JOIN garantiza que sólo se actualicen los registros de la tabla destino que tengan coincidencias correspondientes en la tabla unida.
La estructura típica de UPDATE con INNER JOIN consiste en especificar la tabla de destino que hay que actualizar y definir las columnas que hay que actualizar. La estructura también incluye el uso de la INNER JOIN para enlazarla con otra tabla basada en una columna común para actualizar sólo los registros necesarios.
Ejemplo de INNER JOIN
Supongamos que gestionas una base de datos de venta al por menor en la que necesitas actualizar una tabla Sales para sincronizarla con los cambios en la tabla Customer. Un cliente ha cambiado recientemente su método de contacto preferido, y querrías que estos cambios se reflejaran en las dos tablas. Utilizarás UPDATE con INNER JOIN para asegurarte de que sólo se modifican los registros de ventas relacionados con los clientes que han actualizado su información de contacto, sin afectar a otras filas de los datos.
-- Update the Sales table based on the new preferred contact methods in the Customers tableUPDATE s
SET s.ContactMethod = c.PreferredContactMethod
FROM Sales s
INNERJOIN Customers c ON s.CustomerID = c.CustomerID
WHERE c.CustomerID IN(3,7,9);Con la tecnología de
UPDATE con INNER JOIN mejores prácticas
Cuando utilices UPDATE con INNER JOIN, ten en cuenta las siguientes prácticas recomendadas para realizar consultas eficientes.
Utilizar índices en columnas de unión: Asegúrate de que las columnas utilizadas en la condición JOIN están indexadas para optimizar el rendimiento, acelerando la ejecución de la consulta.
Limitar el alcance de la actualización: Utiliza la cláusula WHERE para asegurarte de que sólo se actualizan las filas relevantes y mejorar el rendimiento de la consulta.
Uso de SQL UPDATE con LEFT JOIN
Se utiliza un LEFT JOIN para recuperar todos los registros de la tabla izquierda (primera) y los registros coincidentes de la tabla derecha (segunda). Una consulta con LEFT JOIN devolverá NULL resultados de la tabla correcta si no hay resultados coincidentes. Cuando se utiliza con la sentencia UPDATE, LEFT JOIN puede actualizar registros aunque no haya datos coincidentes en la segunda tabla, lo que resulta útil para rellenar los datos que faltan. Consulta nuestra Hoja de trucos sobre uniones SQL si quieres repasar las uniones SQL.
ejemplo de LEFT JOIN
Imagina que gestionas la base de datos de una tienda online. La tabla Customers contiene una lista de todos los clientes, mientras que la tabla Orders contiene detalles de los pedidos realizados por algunos de estos clientes. Utilizarás la página LEFT JOIN para recuperar y actualizar los datos del pedido de todos los clientes, incluidos los que aún no han realizado ningún pedido. Este método rellenará los datos que faltan de los clientes que no tienen pedidos realizados con un valor NULL o especificado.
Nuestro ejemplo con LEFT JOIN va a ser un poco diferente porque LEFT JOIN devuelve valores de NULL si no se encuentran registros coincidentes en la tabla correcta. Por ello, es importante averiguar cómo tratar estos valores NULL. Puedes gestionar los valores de NULL estableciendo un valor por defecto en las columnas que se van a actualizar. Utilizando la función COALESCE(), el LEFT JOIN incluirá una condición para un valor por defecto para los datos que faltan. La siguiente consulta muestra cómo establecer un valor por defecto para los valores de NULL.
-- Update all customers to set default values where OrderStatus and OrderDate are NULLUPDATE c
SET
c.OrderStatus =COALESCE(o.OrderStatus,'No Orders'),
c.OrderDate =COALESCE(o.OrderDate,'2023-01-01')FROM Customers c
LEFTJOIN Orders o ON c.CustomerID = o.CustomerID;-- Select from the updated Customers tableSELECT*FROM Customers;Con la tecnología de
También puedes utilizar las funciones COALESCE() o IFNULL() para manejar los valores de NULL que implican cálculos antes de actualizar las columnas. Consulta nuestro tutorial sobre la función SQL COALESCE() para obtener más información.
UPDATE con LEFT JOIN mejores prácticas
Cuando utilices UPDATE con LEFT JOIN, ten en cuenta las siguientes prácticas recomendadas para realizar consultas eficientes.
Utiliza referencias explícitas a columnas: En lugar de utilizar SELECT *, especifica explícitamente las columnas que quieres actualizar para que tu consulta sea más clara y evitar actualizaciones involuntarias.
Utilizar índices en columnas de unión: Asegúrate de que las columnas utilizadas en la condición JOIN están indexadas para mejorar el rendimiento de la operación JOIN y el tiempo total de ejecución de la consulta.
Consideraciones sobre el rendimiento de la actualización SQL con unión
Untender las implicaciones de rendimiento al utilizar UPDATE con JOIN en SQL es importante para garantizar que tus consultas se ejecutan con eficacia. El rendimiento de estas operaciones puede verse influido por varios factores, como el tamaño de las tablas utilizadas, el tipo de unión utilizado y la existencia de índices adecuados.
Índices y velocidad de consulta
Indexar las columnas implicadas en la condición de unión es importante para acelerar el proceso de actualización. Si indexas las columnas adecuadamente, la operación sólo localizará las filas coincidentes durante la unión, reduciendo el tiempo necesario para la exploración de la tabla.
Impacto de los grandes conjuntos de datos
Cuando se trabaja con grandes conjuntos de datos, las ejecuciones de las consultas pueden ser más lentas debido a las operaciones que consumen muchos recursos. Considera las siguientes buenas prácticas para mitigar los problemas de rendimiento con grandes conjuntos de datos. Prueba también el itinerario de habilidades SQL Server para Administradores de Bases de Datos si vas a diseñar o mantener bases de datos regularmente como parte de tu trabajo.
Actualizaciones de lotes: Divide las actualizaciones en lotes más pequeños para reducir la carga de la base de datos y actualizar los registros con eficacia.
Limita el alcance de la actualización: Cuando utilizas la cláusula WHERE, especificas las filas a actualizar, reduciendo el tiempo de procesamiento de las consultas.
Errores comunes y cómo evitarlos
Hay algunos errores comunes que puedes encontrar al utilizar UPDATE con JOIN en SQL Server. Estos errores pueden provocar problemas de rendimiento o la actualización de datos no deseados. A continuación se enumeran algunos de estos errores y cómo evitarlos.
Actualizaciones involuntarias
Si no especificas correctamente la condición de unión, el UPDATE con JOIN actualizará más registros de los previstos. Este error actualizará una tabla entera en lugar del subconjunto necesario. Para evitar este error, asegúrate siempre de utilizar una condición JOIN precisa para actualizar las filas necesarias.
Productos cartesianos
Un producto cartesiano se produce cuando la condición de unión es incorrecta o falta, lo que hace que la consulta haga coincidir cada fila de la tabla izquierda con cada fila de la tabla derecha. Este problema puede ralentizar el funcionamiento de la consulta y producir resultados inexactos. Para evitar este error, asegúrate siempre de tener bien definida la condición JOIN. Asegúrate también de indicar las columnas correctas para aplicar la condición de unión.
Alternativas a SQL UPDATE con JOIN
Aunque UPDATE con JOIN es un potente método para actualizar registros en tablas relacionadas, existen métodos alternativos para conseguir la actualización. A continuación se indican algunas opciones.
Subconsultas
Las subconsultas son una alternativa importante a JOIN cuando quieres realizar actualizaciones basadas en una condición simple. Con las subconsultas, evitarás múltiples tablas complejas especificando la condición en la subconsulta.
El siguiente ejemplo muestra cómo utilizar una subconsulta para actualizar la tabla Sales con la última CustomerStatus de la tabla Customers.
-- Update the CustomerStatus in the Sales tableUPDATE Sales
-- Set the CustomerStatus in Sales to corresponding value from the Customers tableSET CustomerStatus =(-- Fetch CustomerStatus from the Customers table for the matching CustomerIDSELECT CustomerStatus
FROM Customers
WHERE Customers.CustomerID = Sales.CustomerID
)-- Update rows in Sales where a matching CustomerID exists in the Customers tableWHEREEXISTS(-- Subquery to check if a matching CustomerID exists in the Customers tableSELECT1FROM Customers
WHERE Customers.CustomerID = Sales.CustomerID
);Con la tecnología de
Declaración MERGE
La sentencia MERGE es un comando SQL versátil que te permite realizar operaciones UPDATE, INSERT o DELETE en una única consulta basada en la comparación de dos tablas. La sentencia MERGE es útil cuando necesitas sincronizar datos entre dos tablas, manejando filas coincidentes y no coincidentes.
Utilizar la sentencia MERGE es útil porque proporciona un método conciso para realizar varias operaciones en una sola consulta. La sintaxis de la declaración MERGE es la siguiente.
-- Merge data from the source table into the target tableMERGEINTO target_table AS target
USING source_table AS source
-- Define the common key between the source and target tablesON target.common_column = source.common_column
-- When a match is found in both tables based on the common keyWHENMATCHEDTHEN-- Update the target table's column with the corresponding value from the source tableUPDATESET target.column= source.column-- When a row exists in the source table but not in the target tableWHENNOTMATCHEDTHEN-- Insert the new data into the target tableINSERT(column1, column2)VALUES(source.column1, source.column2)-- When a row exists in the target table but not in the source tableWHENNOTMATCHEDBY SOURCE THEN-- Delete the row from the target tableDELETE;Con la tecnología de
Conclusión
Comprender cómo utilizar UPDATE con JOIN en SQL Server es importante para actualizar eficazmente los datos de varias tablas en bases de datos relacionales. Esta técnica te permite actualizar los registros de una tabla basándote en los datos coincidentes de otra, garantizando la coherencia y sincronización de los datos entre tablas relacionadas. La aplicación de estas técnicas y buenas prácticas puede mejorar las operaciones de tu base de datos, garantizando una gestión de datos precisa, eficaz y fiable.
Si quieres avanzar en tus conocimientos de SQL, te recomiendo que consultes el curso de conocimientos Fundamentos de SQL Server de DataCamp para mejorar tus habilidades de análisis de datos. El curso Escribir funciones y procedimientos almacenados en SQL Server también te ayudará a aprender la manipulación eficaz de datos en SQL Server. Si estás preparando tu entrevista SQL, te recomiendo que leas nuestra entrada del blog, 20 preguntas principales de la entrevista SQL Joins para ayudarte a prepararte. Por último, si quieres aplicar tus conocimientos de SQL en una carrera como ingeniero de datos, considera también cursar nuestra carrera de Ingeniero de Datos en Python, que se completa con una certificación al final.
Creo artículos que simplifican la ciencia de los datos y la analítica, haciéndolos fáciles de entender y accesibles.
Preguntas frecuentes sobre SQL
¿Para qué sirve utilizar UPDATE con JOIN en SQL?⌄
UPDATE con JOIN te permite actualizar registros de una tabla basándote en datos coincidentes de otra tabla.
¿En qué se diferencia una INNER JOIN de una LEFT JOIN cuando se utiliza en una sentencia UPDATE?⌄
Un INNER JOIN actualiza sólo los registros que tienen filas coincidentes en ambas tablas, mientras que un LEFT JOIN actualiza todos los registros de la tabla de destino, incluidos los que no tienen una fila coincidente en la tabla unida, rellenando los datos que faltan o manejando los valores de NULL.
¿Cuáles son los problemas de rendimiento de UPDATE con JOIN en SQL?⌄
Las tablas/conjuntos de datos grandes pueden afectar al rendimiento de las consultas de UPDATE con JOIN, ya que requieren más capacidad de procesamiento.
¿Qué bases de datos admiten UPDATE con JOIN IN SQL?⌄
El concepto UPDATE con JOIN funciona en SQL Server, MySQL y PostgreSQL, aunque la sintaxis difiere según la base de datos. Oracle no admite UPDATE con JOIN directamente y requiere un enfoque diferente utilizando subconsultas o la sentencia MERGE.
¿Cuáles son las alternativas de UPDATE con JOIN en SQL?⌄
Utilizar subconsultas o la sentencia MERGE son alternativas adecuadas de UPDATE con JOIN.
Explora cómo el uso de un alias SQL simplifica tanto los nombres de las columnas como los de las tablas. Aprende por qué utilizar un alias SQL es clave para mejorar la legibilidad y gestionar uniones complejas.
Si quiere iniciarse en SQL, nosotros le ayudamos. En este tutorial de SQL, le presentaremos las consultas SQL, una potente herramienta que nos permite trabajar con los datos almacenados en una base de datos. Verá cómo escribir consultas SQL, aprenderá sobre
Aprende a seleccionar fácilmente varias columnas de una tabla de base de datos en SQL, o a seleccionar todas las columnas de una tabla en una simple consulta.
Utiliza LIKE para filtrar registros SQL según coincidencias de cadenas específicas. Este tutorial te enseña a utilizar comodines, NOT, LOWER, UPPER y CASE WHEN con LIKE.
Los datos coherentes son importantes para la fiabilidad y la integridad en las bases de datos relacionales. Al modificar datos existentes en tablas relacionadas, utilizamos la sentencia
UPDATEcon la cláusulaJOINpara lograr la coherencia de los datos. La operaciónUPDATEconJOINestá soportada en SQL Server y es útil para garantizar una sincronización precisa de los datos entre tablas.La operación SQL
JOINpermite actualizaciones más complejas que las de una sola tabla mediante claves externas compartidas entre las distintas tablas. La operaciónUPDATEconJOINes útil para desarrolladores y administradores de bases de datos, ya que mejora la eficacia y reduce los riesgos de incoherencias en los datos.Antes de empezar, te recomiendo que sigas el curso Introducción a SQL Server de DataCamp para familiarizarte con el funcionamiento de las bases de datos SQL Server. Este tutorial está escrito pensando específicamente en SQL Server. Consulta también nuestro tutorial, Introducción a las uniones SQL, para aprender a utilizar
JOINcuando trabajes con varias tablas en SQL.Cómo utilizar SQL UPDATE con JOIN
En SQL Server, la operación
UPDATEconJOINte permite actualizar registros de una tabla basándote en datos coincidentes de otra. Esta técnica es especialmente útil cuando se sincronizan datos de varias tablas.Utilizar SQL UPDATE con INNER JOIN
El
INNER JOINen SQL recupera filas/registros con datos coincidentes en ambas tablas. Cuando se utiliza con la sentenciaUPDATE,INNER JOINgarantiza que sólo se actualicen los registros de la tabla destino que tengan coincidencias correspondientes en la tabla unida.La estructura típica de
UPDATEconINNER JOINconsiste en especificar la tabla de destino que hay que actualizar y definir las columnas que hay que actualizar. La estructura también incluye el uso de laINNER JOINpara enlazarla con otra tabla basada en una columna común para actualizar sólo los registros necesarios.Ejemplo de INNER JOIN
Supongamos que gestionas una base de datos de venta al por menor en la que necesitas actualizar una tabla
Salespara sincronizarla con los cambios en la tablaCustomer. Un cliente ha cambiado recientemente su método de contacto preferido, y querrías que estos cambios se reflejaran en las dos tablas. UtilizarásUPDATEconINNER JOINpara asegurarte de que sólo se modifican los registros de ventas relacionados con los clientes que han actualizado su información de contacto, sin afectar a otras filas de los datos.UPDATE con INNER JOIN mejores prácticas
Cuando utilices
UPDATEconINNER JOIN, ten en cuenta las siguientes prácticas recomendadas para realizar consultas eficientes.Utilizar índices en columnas de unión: Asegúrate de que las columnas utilizadas en la condición
JOINestán indexadas para optimizar el rendimiento, acelerando la ejecución de la consulta.Limitar el alcance de la actualización: Utiliza la cláusula
WHEREpara asegurarte de que sólo se actualizan las filas relevantes y mejorar el rendimiento de la consulta.Uso de SQL UPDATE con LEFT JOIN
Se utiliza un
LEFT JOINpara recuperar todos los registros de la tabla izquierda (primera) y los registros coincidentes de la tabla derecha (segunda). Una consulta conLEFT JOINdevolveráNULLresultados de la tabla correcta si no hay resultados coincidentes. Cuando se utiliza con la sentenciaUPDATE,LEFT JOINpuede actualizar registros aunque no haya datos coincidentes en la segunda tabla, lo que resulta útil para rellenar los datos que faltan. Consulta nuestra Hoja de trucos sobre uniones SQL si quieres repasar las uniones SQL.ejemplo de LEFT JOIN
Imagina que gestionas la base de datos de una tienda online. La tabla
Customerscontiene una lista de todos los clientes, mientras que la tablaOrderscontiene detalles de los pedidos realizados por algunos de estos clientes. Utilizarás la páginaLEFT JOINpara recuperar y actualizar los datos del pedido de todos los clientes, incluidos los que aún no han realizado ningún pedido. Este método rellenará los datos que faltan de los clientes que no tienen pedidos realizados con un valorNULLo especificado.Nuestro ejemplo con
LEFT JOINva a ser un poco diferente porqueLEFT JOINdevuelve valores deNULLsi no se encuentran registros coincidentes en la tabla correcta. Por ello, es importante averiguar cómo tratar estos valoresNULL. Puedes gestionar los valores deNULLestableciendo un valor por defecto en las columnas que se van a actualizar. Utilizando la funciónCOALESCE(), elLEFT JOINincluirá una condición para un valor por defecto para los datos que faltan. La siguiente consulta muestra cómo establecer un valor por defecto para los valores deNULL.También puedes utilizar las funciones
COALESCE()oIFNULL()para manejar los valores deNULLque implican cálculos antes de actualizar las columnas. Consulta nuestro tutorial sobre la función SQL COALESCE() para obtener más información.UPDATE con LEFT JOIN mejores prácticas
Cuando utilices
UPDATEconLEFT JOIN, ten en cuenta las siguientes prácticas recomendadas para realizar consultas eficientes.Utiliza referencias explícitas a columnas: En lugar de utilizar
SELECT *, especifica explícitamente las columnas que quieres actualizar para que tu consulta sea más clara y evitar actualizaciones involuntarias.Utilizar índices en columnas de unión: Asegúrate de que las columnas utilizadas en la condición
JOINestán indexadas para mejorar el rendimiento de la operaciónJOINy el tiempo total de ejecución de la consulta.Consideraciones sobre el rendimiento de la actualización SQL con unión
Untender las implicaciones de rendimiento al utilizar
UPDATEconJOINen SQL es importante para garantizar que tus consultas se ejecutan con eficacia. El rendimiento de estas operaciones puede verse influido por varios factores, como el tamaño de las tablas utilizadas, el tipo de unión utilizado y la existencia de índices adecuados.Índices y velocidad de consulta
Indexar las columnas implicadas en la condición de unión es importante para acelerar el proceso de actualización. Si indexas las columnas adecuadamente, la operación sólo localizará las filas coincidentes durante la unión, reduciendo el tiempo necesario para la exploración de la tabla.
Impacto de los grandes conjuntos de datos
Cuando se trabaja con grandes conjuntos de datos, las ejecuciones de las consultas pueden ser más lentas debido a las operaciones que consumen muchos recursos. Considera las siguientes buenas prácticas para mitigar los problemas de rendimiento con grandes conjuntos de datos. Prueba también el itinerario de habilidades SQL Server para Administradores de Bases de Datos si vas a diseñar o mantener bases de datos regularmente como parte de tu trabajo.
Actualizaciones de lotes: Divide las actualizaciones en lotes más pequeños para reducir la carga de la base de datos y actualizar los registros con eficacia.
Limita el alcance de la actualización: Cuando utilizas la cláusula
WHERE, especificas las filas a actualizar, reduciendo el tiempo de procesamiento de las consultas.Errores comunes y cómo evitarlos
Hay algunos errores comunes que puedes encontrar al utilizar
UPDATEconJOINen SQL Server. Estos errores pueden provocar problemas de rendimiento o la actualización de datos no deseados. A continuación se enumeran algunos de estos errores y cómo evitarlos.Actualizaciones involuntarias
Si no especificas correctamente la condición de unión, el
UPDATEconJOINactualizará más registros de los previstos. Este error actualizará una tabla entera en lugar del subconjunto necesario. Para evitar este error, asegúrate siempre de utilizar una condiciónJOINprecisa para actualizar las filas necesarias.Productos cartesianos
Un producto cartesiano se produce cuando la condición de unión es incorrecta o falta, lo que hace que la consulta haga coincidir cada fila de la tabla izquierda con cada fila de la tabla derecha. Este problema puede ralentizar el funcionamiento de la consulta y producir resultados inexactos. Para evitar este error, asegúrate siempre de tener bien definida la condición
JOIN. Asegúrate también de indicar las columnas correctas para aplicar la condición de unión.Alternativas a SQL UPDATE con JOIN
Aunque
UPDATEconJOINes un potente método para actualizar registros en tablas relacionadas, existen métodos alternativos para conseguir la actualización. A continuación se indican algunas opciones.Subconsultas
Las subconsultas son una alternativa importante a
JOINcuando quieres realizar actualizaciones basadas en una condición simple. Con las subconsultas, evitarás múltiples tablas complejas especificando la condición en la subconsulta.El siguiente ejemplo muestra cómo utilizar una subconsulta para actualizar la tabla
Salescon la últimaCustomerStatusde la tablaCustomers.Declaración MERGE
La sentencia
MERGEes un comando SQL versátil que te permite realizar operacionesUPDATE,INSERToDELETEen una única consulta basada en la comparación de dos tablas. La sentenciaMERGEes útil cuando necesitas sincronizar datos entre dos tablas, manejando filas coincidentes y no coincidentes.Utilizar la sentencia
MERGEes útil porque proporciona un método conciso para realizar varias operaciones en una sola consulta. La sintaxis de la declaraciónMERGEes la siguiente.Conclusión
Comprender cómo utilizar
UPDATEconJOINen SQL Server es importante para actualizar eficazmente los datos de varias tablas en bases de datos relacionales. Esta técnica te permite actualizar los registros de una tabla basándote en los datos coincidentes de otra, garantizando la coherencia y sincronización de los datos entre tablas relacionadas. La aplicación de estas técnicas y buenas prácticas puede mejorar las operaciones de tu base de datos, garantizando una gestión de datos precisa, eficaz y fiable.Si quieres avanzar en tus conocimientos de SQL, te recomiendo que consultes el curso de conocimientos Fundamentos de SQL Server de DataCamp para mejorar tus habilidades de análisis de datos. El curso Escribir funciones y procedimientos almacenados en SQL Server también te ayudará a aprender la manipulación eficaz de datos en SQL Server. Si estás preparando tu entrevista SQL, te recomiendo que leas nuestra entrada del blog, 20 preguntas principales de la entrevista SQL Joins para ayudarte a prepararte. Por último, si quieres aplicar tus conocimientos de SQL en una carrera como ingeniero de datos, considera también cursar nuestra carrera de Ingeniero de Datos en Python, que se completa con una certificación al final.