Operación MERGE en SQL – DML
La operación MERGE pertenece al conjunto de instrucciones DML (Data Manipulation Language), que se utilizan para manipular los datos de una base de datos. Las instrucciones DML incluyen operaciones de inserción, actualización, eliminación y selección.
Las instrucciones DDL (Data Definition Language) se utilizan para crear, modificar y eliminar objetos de base de datos, como tablas, columnas, índices y usuarios. Las instrucciones DCL (Data Control Language) se utilizan para controlar el acceso a los datos de una base de datos, como otorgar y revocar privilegios.
En este caso, la operación MERGE utiliza las instrucciones DML de inserción, actualización y eliminación para actualizar o insertar datos en una tabla. Por lo tanto, la operación MERGE pertenece al conjunto de instrucciones DML.
La operación MERGE en SQL permite realizar operaciones de inserción, actualización y eliminación en una tabla de destino, en función de los resultados de una combinación con una tabla de origen.
Por ejemplo, supongamos que tenemos dos tablas, una llamada clientes
y otra llamada pedidos
. La tabla clientes
contiene información sobre los clientes de una empresa, y la tabla pedidos
contiene información sobre los pedidos realizados por los clientes.
Queremos actualizar la tabla pedidos
con los datos de la tabla clientes
. Para ello, podemos utilizar la siguiente instrucción MERGE:
SQL
MERGE INTO pedidos USING clientes ON pedidos.id_cliente = clientes.id_cliente WHEN MATCHED THEN UPDATE SET nombre = clientes.nombre, apellidos = clientes.apellidos WHEN NOT MATCHED THEN INSERT ( id_cliente, nombre, apellidos ) VALUES ( clientes.id_cliente, clientes.nombre, clientes.apellidos );
Esta instrucción MERGE funciona de la siguiente manera:
- La cláusula
MERGE INTO
especifica la tabla de destino, que en este caso espedidos
. - La cláusula
USING
especifica la tabla de origen, que en este caso esclientes
. - La cláusula
ON
especifica la condición que se utilizará para comparar las filas de las dos tablas. En este caso, la condición es que las columnasid_cliente
de las dos tablas sean iguales. - La cláusula
WHEN MATCHED THEN UPDATE
especifica lo que se hará con las filas que existen en la tabla de destino. En este caso, se actualizarán las columnasnombre
yapellidos
con los datos de la tabla de origen. - La cláusula
WHEN NOT MATCHED THEN INSERT
especifica lo que se hará con las filas que no existen en la tabla de destino. En este caso, se insertarán nuevas filas con los datos de la tabla de origen.
En este ejemplo, la instrucción MERGE actualizará las filas de la tabla pedidos
que tengan una coincidencia en la columna id_cliente
con la tabla clientes
. Además, insertará nuevas filas en la tabla pedidos
para las filas que no tengan una coincidencia en la tabla clientes
.
Otro ejemplo de la operación MERGE es el siguiente:
SQL
MERGE INTO productos USING ventas ON productos.id_producto = ventas.id_producto WHEN MATCHED THEN UPDATE SET precio = ventas.precio WHEN NOT MATCHED THEN DELETE;
Esta instrucción MERGE actualiza el precio de los productos en la tabla productos
con los precios de las ventas que se encuentran en la tabla ventas
. Además, elimina de la tabla productos
los productos que no se han vendido.
En general, la operación MERGE es una herramienta muy útil para sincronizar datos entre dos tablas. Es una operación eficiente y segura, ya que se realiza en una sola transacción.
Muy bién explicado.