Declaração de mesclagem do servidor SQL

Declaração de mesclagem do servidor SQL

Bancos de dados são tudo a ver com operações CRUD. Criamos, lemos, atualizamos e excluímos dados em várias tabelas de banco de dados. No entanto, a maioria das operações CRUD em um banco de dados requer lógica separada para tarefas, como inserção, atualização e exclusão.

Isso pode ser redundante rapidamente. O SQL Server fornece uma maneira eficiente de executar operações CRUD usando a instrução Merge. A Microsoft apresentou a declaração de mesclagem no SQL Server 2008 e acima.

Este tutorial entenderá como usar a instrução Merge SQL Server para executar várias operações em uma única consulta.

O básico

Vamos dar um exemplo de onde você tem duas mesas. O alvo e as tabelas de origem. Se você precisar atualizar os valores na tabela de destino com base nos valores das tabelas de origem, poderá seguir três caminhos:

  1. A primeira é onde a fonte contém linhas ausentes na tabela de destino. Você precisa de uma declaração de inserção para a tabela de destino nesse caso.
  2. O segundo é onde a tabela de destino contém registros ausentes da tabela de origem. Aqui, precisamos de uma declaração de exclusão para remover as linhas do alvo.
  3. O último cenário é onde um registro na fonte e no alvo contém valores diferentes. Precisamos de uma declaração de atualização para a tabela de destino nesse caso.

Para executar as operações acima individualmente, precisamos criar três lógicas separadas para operações de inserção, exclusão e atualização. No entanto, podemos combiná -los usando a declaração de mesclagem.

Podemos expressar a sintaxe da declaração de mesclagem, como mostrado:

Mesclar Target_table usando fonte_table
Sob condição
Quando correspondido
Em seguida, atualize_operation
Quando não foi correspondido - pela tabela de destino
Em seguida, inserir_operation
Quando não correspondido pela fonte
Então exclua;

Identificamos o alvo e a tabela de origem e os especificamos na cláusula de mesclagem. Então especificamos uma condição. A condição especificada controla como as linhas da tabela de origem são combinadas com as tabelas de destino. Pense nisso como uma condição de junção.

O próximo bloco mantém as ações a serem executadas com base no resultado da condição especificada.

Se a condição resultar em uma correspondência, atualizamos os registros na tabela de destino da tabela de origem.

No entanto, se os registros forem incomparáveis ​​(da tabela de destino), inserimos os registros ausentes na tabela de destino.

Finalmente, se os registros forem incomparáveis ​​(pela tabela de destino), excluímos os registros incomparáveis ​​da tabela de destino.

SQL Server - Exemplo de mesclagem

Vamos dar um exemplo simples. Suponha que tenhamos duas tabelas contendo informações do produto como Products_target e Product_source.

O snippet de código de exemplo mostra as consultas SQL para criar e atualizar as tabelas especificadas.

Use salesdb;
Crie Table Products_target (
Product_id int não identidade primária nula (1,1),
product_name varchar (255) não nulo,
Preço decimal (10,2)
);
Inserir em Products_target (Product_name, Price)
Valores ('Desk Office', 531),
('Presidente do escritório', 379.99),
('Garrafa de água', 69.99);
Crie Table Products_source (
Product_id int não identidade primária nula (1,1),
product_name varchar (255) não nulo,
Preço decimal (10,2)
);
Insira em Products_source (Product_name, Price)
Valores ('Desk Office', 531.00),
('Lâmpada de mesa', 50.00),
('Presidente do escritório', 699.99),
('Garrafa de água', 89.95);

Agora temos duas tabelas com um alvo e fonte. Os registros armazenados nas tabelas são como mostrados:

Para sincronizar os dados entre o destino e a tabela de origem, podemos executar uma consulta de mesclagem, como mostrado no exemplo abaixo:

Merge Products_target como T
Usando Products_source como S
Em (S.product_id = t.ID do produto)
Quando correspondido
Em seguida, atualize o conjunto
t.product_name = s.Nome do Produto,
t.Preço = s.preço
Quando não correspondido pelo alvo
Em seguida, insira (product_name, preço)
Valores (s.product_name, s.preço)
Quando não correspondido pela fonte
Então exclua;

Depois de executar a consulta acima, o servidor SQL executará as operações especificadas com base na condição resultante.

Podemos consultar as tabelas após a operação de mesclagem como:

Selecione * de Products_source;
Selecione * de Products_target;

Os valores resultantes são os mostrados no exemplo abaixo:


Como você notará, os registros de tabela de origem e destino são sincronizados com os valores atualizados, inseridos e excluídos.

Conclusão

Este guia mostra como trabalhar com a instrução SQL Server Merge. Ele permite que você execute inserir, atualizar e excluir operações em tabelas com base nas condições resultantes.

Obrigado pela leitura!