Declaración de fusión de SQL
Declaración de fusión de SQL combina INSERTAR , BORRAR , y ACTUALIZAR declaraciones en una sola consulta.
Declaración MERGE en SQL
La declaración MERGE en SQL se utiliza para realizar operaciones de inserción, actualización y eliminación en un tabla de destino basado en los resultados de JOIN con un tabla fuente . Esto permite a los usuarios sincronizar dos tablas realizando operaciones en una tabla en función de los resultados de la segunda tabla.
La declaración MERGE compara datos entre una tabla de origen y una tabla de destino en función de campos clave especificados. Realiza acciones apropiadas como insertar nuevos registros, actualizar los existentes y eliminar o marcar registros que ya no están presentes en la fuente.
Esta declaración proporciona una forma flexible de gestionar los cambios de datos y se utiliza habitualmente en escenarios como el mantenimiento Dimensiones que cambian lentamente ( SCD ) en FUSIONAR EN target_table
USANDO fuente_table
EN merge_condition
CUANDO SE EMPAREJÓ ENTONCES
ACTUALIZAR CONJUNTO columna1 = valor1 [, columna2 = valor2…]
CUANDO NO EMPAREJÓ ENTONCES
INSERTAR (columna1 [, columna2…])
VALORES (valor1 [, valor2…]);
Ejemplo de declaración SQL MERGE
Supongamos que hay dos tablas:
- LISTA DE PRODUCTOS que es la tabla que contiene el detalle actual de los productos disponibles con los campos P_ID, P_NAME y P_PRICE correspondientes al ID, nombre y precio de cada producto.
- LISTA ACTUALIZADA que es la tabla que contiene los nuevos detalles sobre los productos disponibles con los campos P_ID, P_NAME y P_PRICE correspondientes al ID, nombre y precio de cada producto.
La tarea es actualizar los detalles de los productos en PRODUCT_LIST según UPDATED_LIST.
Solución
Ahora, para explicar mejor este ejemplo, dividámoslo en pasos.
Paso 1: Reconocer la tabla TARGET y SOURCE
Entonces, en este ejemplo, dado que se solicita actualizar los productos en PRODUCT_LIST según UPDATED_LIST, PRODUCT_LIST actuará como OBJETIVO y UPDATED_LIST actuará como la tabla FUENTE.
Paso 2: Reconocer las operaciones a realizar.
Ahora bien, como se puede observar existen tres discrepancias entre la tabla TARGET y la SOURCE, que son:
1. El costo del CAFÉ en TARGET es 15.00 mientras que en SOURCE es 25.00
PRODUCT_LIST 102 COFFEE 15.00 UPDATED_LIST 102 COFFEE 25.00
2. No hay ningún producto BISCUIT en SOURCE pero sí en TARGET
PRODUCT_LIST 103 BISCUIT 20.00
3. No hay ningún producto CHIPS en TARGET pero sí en SOURCE
UPDATED_LIST 104 CHIPS 22.00
Por tanto, es necesario realizar tres operaciones en el TARGET de acuerdo con las discrepancias anteriores. Ellos son:
1. ACTUALIZAR operación
102 COFFEE 25.00
2. BORRAR operación
103 BISCUIT 20.00
3. INSERTAR operación
104 CHIPS 22.00
Paso 3: escriba la consulta SQL
El consulta SQL realizar las operaciones antes mencionadas con la ayuda del Declaración de fusión es:
SQL /* Selecting the Target and the Source */ MERGE PRODUCT_LIST AS TARGET USING UPDATE_LIST AS SOURCE /* 1. Performing the UPDATE operation */ /* If the P_ID is same, check for change in P_NAME or P_PRICE */ ON (TARGET.P_ID = SOURCE.P_ID) WHEN MATCHED AND TARGET.P_NAME SOURCE.P_NAME OR TARGET.P_PRICE SOURCE.P_PRICE /* Update the records in TARGET */ THEN UPDATE SET TARGET.P_NAME = SOURCE.P_NAME, TARGET.P_PRICE = SOURCE.P_PRICE /* 2. Performing the INSERT operation */ /* When no records are matched with TARGET table Then insert the records in the target table */ WHEN NOT MATCHED BY TARGET THEN INSERT (P_ID, P_NAME, P_PRICE) VALUES (SOURCE.P_ID, SOURCE.P_NAME, SOURCE.P_PRICE) /* 3. Performing the DELETE operation */ /* When no records are matched with SOURCE table Then delete the records from the target table */ WHEN NOT MATCHED BY SOURCE THEN DELETE /* END OF MERGE */
Producción:
PRODUCT_LIST P_ID P_NAME P_PRICE 101 TEA 10.00 102 COFFEE 25.00 104 CHIPS 22.00
Entonces, de esta manera, podemos realizar estas tres declaraciones principales en SQL juntas con la ayuda de la declaración MERGE.
Nota: Se puede utilizar cualquier nombre que no sea destino y origen en la sintaxis MERGE. Se utilizan sólo para darle una mejor explicación.
Puntos importantes sobre la declaración SQL MERGE
- La declaración SQL MERGE combina INSERTAR , ACTUALIZAR , y BORRAR operaciones en una sola declaración, lo que permite una sincronización eficiente de datos entre las tablas de origen y de destino.
- Proporciona flexibilidad para personalizar scripts SQL complejos al manejar múltiples operaciones de manipulación de datos en una sola transacción.
- La declaración SQL MERGE se usa comúnmente en escenarios como el mantenimiento de dimensiones que cambian lentamente (SCD) en almacenes de datos.
- La indexación adecuada, las condiciones de unión optimizadas y el filtrado de la tabla de origen para los registros necesarios pueden optimizar el rendimiento de la declaración MERGE.