Breaking

Post Top Ad

Your Ad Spot

domingo, 15 de diciembre de 2019

Una descripción general de la actualización de SQL Server Join

Este artículo explora la declaración de unión de actualización de SQL Server en T-SQL para SQL Server.

Introducción

Usamos la instrucción Update en SQL Server para actualizar una fila existente en una tabla. Podemos actualizar todos los registros o algunos registros según los criterios especificados en una cláusula where. Por lo general, actualizamos una sola tabla con la instrucción SQL Update.
En una base de datos relacional, es una buena práctica utilizar la normalización en el diseño de bases de datos. En la normalización de la base de datos, utilizamos múltiples tablas y definimos la relación entre ellas. Podemos recuperar registros de varias tablas con SQL Joins.
Ahora surge una pregunta: ¿podemos actualizar varias tablas usando SQL Server Update Join? Exploremos en este artículo.
Creemos la tabla de un cliente e insertemos algunos registros en ella.

Preparar el entorno para la demostración.

Cree una tabla Clientes e inserte algunos registros en ella:
Datos de la tabla de clientes
Cree una tabla de pedidos e inserte algunos registros en ella:
Esta tabla debe tener una restricción de clave externa en la columna [CustomerID] de la tabla Clientes:
Datos de la tabla de pedidos

Declaración de actualización de SQL

Tenemos el entorno listo para la demostración. Antes de profundizar en las actualizaciones de múltiples tablas usando la Unión de actualizaciones de SQL Server, veamos la forma primaria de la declaración de Actualización de SQL.
Supongamos que queremos actualizar la columna [OrderQuantity] y [OrderAmount] de la tabla de pedidos, primero usamos una instrucción SELECT para ver el registro:
Declaración de actualización de SQL
Podemos usar la siguiente instrucción de actualización de SQL para actualizar la tabla de pedidos. Aquí usamos SQL Alias ​​para la tabla de pedidos. Aquí reemplazamos la instrucción Select con la instrucción Update sin muchos cambios en la consulta:
Podemos ejecutar la instrucción Select y verificar los cambios:
Verificar las actualizaciones

Sentencia de ACTUALIZACIÓN de SQL con SQL JOIN

Ahora, usemos SQL Join para recuperar el registro de ambas tablas. Usamos la columna [CustomerID] para la unión entre ambas tablas:
En la salida, solo podemos ver tres registros. Una unión interna recupera los registros que existen en ambas tablas. CustomerID 1, 2, 3 existe en ambas tablas, y está disponible como resultado de SQL Join:
Sentencia de actualización de SQL con SQL JOIN
Podemos ver valores NULL en la columna [OrderCount] de la tabla Clientes. Supongamos que queremos actualizar esta columna con la [OrderQuantity] de la tabla de pedidos. Podemos usar la siguiente sintaxis para la instrucción Unir actualización de SQL Server:
  • Especifique una tabla base en la que queremos actualizar los registros. También podemos usar alias de unión SQL en lugar de un nombre de tabla
  • Especifique la columna y el valor de la columna que queremos actualizar. Usamos la instrucción Set para especificar los valores.
  • Utilice el operador de unión SQL y especifique el nombre de la tabla con condiciones de unión. Podemos usar una unión interna o una izquierda en este predicado
  • Agregue la cláusula Where para actualizar solo filas específicas. Es un argumento opcional
La siguiente consulta actualiza la tabla de clientes (instrucción C de actualización) con el operador Set ( SET C.OrderCount = O.OrderQuantity ) utilizando la tabla Unir entre clientes y pedidos ( Clientes C UNIR pedidos O EN C.Customerid = O.CustomerID ):
Devuelve el resultado de que tres filas están afectadas:
Salida después de la actualización
Ejecute la instrucción Select join y verifique los registros. Podemos ver que muestra valores similares en las columnas [OrderCount] y [OrderQuantity]:
Verificar actualización
Supongamos que en un nuevo año financiero, archivamos registros antiguos de clientes y comenzamos con el cero en las columnas [OrderQuantity] de la tabla de pedidos. Podemos ejecutar la siguiente instrucción Join de actualización de SQL Server, y actualiza las columnas [OrderQuantity] de la tabla de pedidos:
No podemos actualizar varias tablas juntas usando SQL Server Update Join. Si intentamos actualizar varias columnas que pertenecen a tablas diferentes, obtenemos el siguiente mensaje de error:
El identificador de varias partes "O.OrderAmount" no se pudo vincular.
Mensaje de error
Podemos usar múltiples declaraciones de actualización en este caso. Por ejemplo, la siguiente consulta actualiza la columna [OrderCount] de la tabla de clientes:
Las siguientes declaraciones de actualización actualizan el valor de las columnas [OrderAmount] y [OrderQuantity] como cero en la tabla de pedidos:

SQL Server Update Join con Left Join

En ejemplos anteriores, utilizamos combinación interna para recuperar registros en los que existe una identificación de cliente similar en la tabla Clientes y Pedidos. Podemos usar la combinación izquierda para obtener una fila coincidente junto con una fila no coincidente de la tabla del lado izquierdo.
La siguiente instrucción Select muestra el resultado de una instrucción Select con Left Join:
Aquí, en la salida, podemos ver al cliente John y Dan. Los valores para las columnas [OrderCount], [OrderAmount] y [OrderQuantity] son ​​NULL para estos clientes:
Actualización de SQL con combinación izquierda
También podemos usar la instrucción Update con Left Join, y actualiza los registros con valores NULL. Como se destacó anteriormente, no podemos usar una sola instrucción de Actualización para actualizar varias columnas de diferentes tablas.
La siguiente instrucción de actualización actualiza el valor [OrderCount] como cero para los clientes que tienen el valor de columna [OrderCount] NULL:
En la siguiente imagen, vemos el plan de ejecución real de la instrucción SQL Update anterior. Utiliza el operador de actualización de índice agrupado para actualizar registros en la tabla del cliente:
plan de ejecución real
La siguiente instrucción de actualización actualiza el valor [OrderAmount] y [OrderQuantity] como cero para los clientes que tienen el valor de columna [OrderAmount] NULL:
De manera similar, podemos usar la siguiente consulta con Unión correcta en la instrucción de Unión de actualización de SQL Server:

Conclusión


En este artículo, exploramos SQL Server Update Join para actualizar las tablas especificadas con una cláusula Join. Debemos tener cuidado al hacer actualizaciones en una tabla relacional de instancia de producción, ya que puede causar problemas debido a un valor incorrecto, nombre de columna, etc.

No hay comentarios.:

Publicar un comentario

Dejanos tu comentario para seguir mejorando!

Post Top Ad

Your Ad Spot

Páginas