Pular para o conteúdo principal

Questão de Banco de Dados — Consultas e Comandos em SQL — FCC 2024

Banco de DadosConsultas e Comandos em SQL
Código
fc147227
Banca
FCC
Órgão
SEAD PI
Ano
2024
Cargo
Ana Gov ( )
Considere o seguinte código exemplo escrito em SOL Server. MERGE INTO Funcionarios AS alvo USING NovoFuncionarios AS origem ON alvo. ID = origem. ID WHEN (I) Nome = origem Nome, Cargo = origem.Cargo, Salario = origem.salario WHEM (II) (ID, Mame, Cargo, DataContratacao, Salario) (III) (origem.ib, origem.Nome, origem.Cargo, origem.DataContratacao, origem.Salario);   O código testa a existência em alvo de cada novo funcionário (origem). Caso já exista, ele atualiza, caso contrário, inclui.   As lacunas I, II e III são preenchidas, correta e respectivamente, por
  1. ASEACHED THEN UPDATE SET - NOT SEARCHED THEN INSERT - VALUES
  2. BSEEKED THEN REALIZE SET - NOT SEEKED THEN INCLUDE - DATA
  3. CMATCHED THEN UPDATE SET - NOT MATCHED THEN INSERT - VALUES
  4. DSEEKED THEN UPDATE SET - NOT SEEKED THEN INSERT - VALUES
  5. EMATCHED THEN UPDATE SET - NOT MATCHED THEN INSERT - DATA
Revelar gabarito e comentário

GabaritoC — MATCHED THEN UPDATE SET - NOT MATCHED THEN INSERT - VALUES

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Comando MERGE no SQL Server: sintaxe e cláusulas

Gabarito: letra C. O comando MERGE no SQL Server utiliza as cláusulas WHEN MATCHED THEN UPDATE SET para atualizar registros que já existem no destino e WHEN NOT MATCHED THEN INSERT para inserir novos registros, seguido da cláusula VALUES para especificar os dados a serem inseridos. A alternativa correta preenche as lacunas I, II e III com MATCHED THEN UPDATE SET, NOT MATCHED THEN INSERT e VALUES, respectivamente.

O comando MERGE é uma instrução SQL que permite combinar operações de inserção, atualização e exclusão em uma única instrução, com base em uma condição de correspondência entre uma tabela de origem e uma tabela de destino. Ele é particularmente útil para sincronizar duas tabelas, como no caso do enunciado, onde se deseja atualizar registros existentes e inserir novos registros em uma única operação.

A sintaxe básica do MERGE no SQL Server é:

MERGE INTO tabela_destino AS alvo
USING tabela_origem AS origem
ON condicao_de_correspondencia
WHEN MATCHED THEN UPDATE SET coluna1 = valor1, coluna2 = valor2, ...
WHEN NOT MATCHED THEN INSERT (coluna1, coluna2, ...) VALUES (valor1, valor2, ...);

A cláusula WHEN MATCHED é executada quando uma linha da origem corresponde a uma linha do destino, com base na condição especificada na cláusula ON. Nesse caso, a operação típica é uma atualização (UPDATE) dos campos da linha de destino com os valores da linha de origem. A cláusula WHEN NOT MATCHED é executada quando uma linha da origem não encontra correspondência no destino, e a operação típica é uma inserção (INSERT) de uma nova linha no destino.

A cláusula VALUES é usada na parte de inserção para especificar os valores que serão inseridos nas colunas da tabela de destino. Ela é uma parte fundamental da sintaxe do INSERT e, portanto, também do MERGE quando se deseja inserir novos registros.

A pegadinha desta questão está em confundir os termos MATCHED e NOT MATCHED com outras palavras, como SEARCHED ou SEEKED, que não fazem parte da sintaxe do MERGE. Além disso, a banca pode trocar a cláusula VALUES por DATA, que não é uma cláusula válida no SQL Server para essa finalidade.

Guarde a estrutura do MERGE: WHEN MATCHED THEN UPDATE SET para atualizar e WHEN NOT MATCHED THEN INSERT ... VALUES para inserir. É exatamente essa combinação que as alternativas tentam confundir.

  1. 1MERGE INTO alvo
  2. 2USING origem
  3. 3ON condição
  4. 4WHEN MATCHED → UPDATE SET
  5. 5WHEN NOT MATCHED → INSERT
  6. 6VALUES (dados)
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

A alternativa A utiliza SEACHED e NOT SEARCHED, que não são cláusulas válidas no comando MERGE. A sintaxe correta é MATCHED e NOT MATCHED. Além disso, a cláusula VALUES está correta, mas os termos incorretos invalidam a alternativa.

Alternativa B — ❌ Incorreta

A alternativa B utiliza SEEKED e NOT SEEKED, que também não são cláusulas válidas no MERGE. Além disso, a cláusula DATA não é usada para especificar valores em uma inserção; a cláusula correta é VALUES.

Alternativa C — ✅ Correta ⟵ GABARITO

A alternativa C preenche corretamente as lacunas com MATCHED THEN UPDATE SET, NOT MATCHED THEN INSERT e VALUES. Essa é a sintaxe padrão do comando MERGE no SQL Server para atualizar registros existentes e inserir novos registros.

Alternativa D — ❌ Incorreta

A alternativa D utiliza SEEKED e NOT SEEKED, que não são cláusulas válidas no MERGE. A cláusula VALUES está correta, mas os termos incorretos invalidam a alternativa.

Alternativa E — ❌ Incorreta

A alternativa E utiliza MATCHED e NOT MATCHED, que são cláusulas corretas, mas a cláusula DATA não é usada para especificar valores em uma inserção; a cláusula correta é VALUES.

NÃO CAIA NESSA!

A banca troca os termos MATCHED e NOT MATCHED por palavras inventadas como SEARCHED e SEEKED, e também troca VALUES por DATA. Lembre-se: a sintaxe do MERGE é fixa e não aceita variações. Com treino, você reconhece essas trocas de longe 💪.

PEGA ESSA DICA!

Para memorizar a estrutura do MERGE, pense: "MATCHED para atualizar, NOT MATCHED para inserir, e VALUES para os dados". Essa é a combinação que sempre aparece nas provas.

Gabarito: letra C

Link permanente: /questoes/fc147227