Questão de Banco de Dados — Consultas e Comandos em SQL — FCC 2024
Banco de Dados›Consultas 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
ASEACHED THEN UPDATE SET - NOT SEARCHED THEN INSERT - VALUES
BSEEKED THEN REALIZE SET - NOT SEEKED THEN INCLUDE - DATA
CMATCHED THEN UPDATE SET - NOT MATCHED THEN INSERT - VALUES
DSEEKED THEN UPDATE SET - NOT SEEKED THEN INSERT - VALUES
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.
1MERGE INTO alvo
2USING origem
3ON condição
4WHEN MATCHED → UPDATE SET
5WHEN NOT MATCHED → INSERT
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.