Pular para o conteúdo principal

Questão de Banco de Dados — Oracle — FCC 2016

Banco de DadosOracle
Código
fc032765
Banca
FCC
Órgão
SEGEP-MA
Ano
2016
Nível
Superior
Cargo
Técnico da Receita Estadual - Tecnologia da Informação - Conhecimentos Específicos
O Oracle fornece um comando que é capaz de atualizar, inserir ou remover dados de modo condicional em uma tabela de banco de dados. Trata-se do comando
  1. AIFOPERATION.
  2. BTRUNCATE.
  3. CMERGE.
  4. DIFCONSTRAINT.
  5. EPURGE.
Revelar gabarito e comentário

GabaritoC — MERGE.

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 Oracle

Gabarito: letra C. O comando MERGE (também conhecido como upsert) permite realizar, em uma única instrução SQL, operações condicionais de inserção (INSERT), atualização (UPDATE) e, no Oracle, também remoção (DELETE) de registros em uma tabela, combinadas por uma condição de correspondência.

A banca testa o conhecimento sobre o comando MERGE do Oracle. Trata-se de uma instrução SQL padrão (SQL:1999) que consolida múltiplas operações DML em uma única sentença, evitando a necessidade de lógica procedural. O Oracle estendeu o MERGE com a cláusula DELETE para remover linhas que não correspondem à condição.

Comando

Função Principal

Realiza Inserção Condicional?

Realiza Atualização Condicional?

Realiza Remoção Condicional?

É um comando DML ou DDL?

MERGE

Mesclar dados de uma fonte em uma tabela destino com base em condição

Sim (WHEN NOT MATCHED)

Sim (WHEN MATCHED)

Sim (cláusula DELETE WHERE, no Oracle)

DML

IFOPERATION

Inexistente no Oracle

Não

Não

Não

TRUNCATE

Remover todas as linhas de uma tabela rapidamente

Não

Não

Sim, mas sem condição (exclusão total)

DDL

IFCONSTRAINT

Inexistente no Oracle

Não

Não

Não

PURGE

Remover permanentemente objetos da lixeira (recycle bin)

Não

Não

Sim, mas sem condição (exclusão de objetos)

DDL

Comando MERGE (Oracle)
  • 1Operação condicional (upsert)
    • WHEN MATCHED → UPDATE
    • WHEN NOT MATCHED → INSERT
    • DELETE (extensão Oracle)
  • 2Não é
    • IFOPERATION (inexistente)
    • TRUNCATE (DDL, exclusão total)
    • IFCONSTRAINT (inexistente)
    • PURGE (DDL, remoção permanente)
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

IFOPERATION não é um comando SQL válido no Oracle ou em qualquer SGBD relacional. O Oracle não possui uma instrução com esse nome. O conceito de "operação condicional" é atendido pelo MERGE, não por um comando fictício.

Alternativa B — ❌ Incorreta

TRUNCATE é um comando DDL que remove todas as linhas de uma tabela de forma rápida e irreversível (não gera UNDO). Ele não realiza inserção ou atualização condicional. Sua função é exclusivamente de exclusão em massa, sem cláusulas condicionais.

Alternativa C — ✅ Correta ⟵ GABARITO

O MERGE é o comando que "mescla" dados de uma fonte (tabela, visão, subconsulta) em uma tabela destino com base em uma condição de junção. Dependendo do resultado da condição, ele executa:

  • INSERT quando a linha não existe no destino;

  • UPDATE quando a linha existe;

  • (no Oracle) DELETE opcional para linhas atualizadas que satisfaçam outra condição.

Sintaxe resumida:

MERGE INTO tabela_destino d
USING tabela_origem o ON (condição)
WHEN MATCHED THEN UPDATE SET colunas
WHEN NOT MATCHED THEN INSERT (colunas) VALUES (valores);

Com a extensão DELETE WHERE para remoção condicional.

Alternativa D — ❌ Incorreta

IFCONSTRAINT não existe como comando SQL no Oracle. A palavra "constraint" refere-se a restrições de integridade (PRIMARY KEY, FOREIGN KEY, etc.), mas não há um comando DML com esse nome.

Alternativa E — ❌ Incorreta

PURGE é um comando DDL usado para remover permanentemente objetos (tabelas, índices, etc.) da lixeira (recycle bin) do Oracle. Ele não realiza inserção, atualização ou remoção condicional de dados; apenas elimina objetos descartados.

PEGA ESSA DICA!

Para questões que pedem o comando que faz upsert (INSERT ou UPDATE condicional), lembre-se sempre do MERGE. Ele é o único entre os listados que combina múltiplas operações DML em uma única instrução. TRUNCATE e PURGE são DDL, e IFOPERATION/IFCONSTRAINT são meros distratores.

Gabarito: letra C — MERGE.

Link permanente: /questoes/fc032765