Pular para o conteúdo principal

Questão de Banco de Dados — SQL — FGV 2024

Banco de DadosSQL
Código
fg076997
Banca
FGV
Órgão
CGE-PB
Ano
2024
Nível
Superior
Cargo
Auditor de Contas Públicas - Auditoria de Tecnologia da Informação
Considerando as tabelas T1 e T2, anteriormente apresentadas, analise o comando SQL a seguir.delete from T2 where P not in (select P from T2)O número de linhas deletadas da tabela T2 pela execução desse comando é:
  1. A0;
  2. B1;
  3. C2;
  4. D3;
  5. E4.
Revelar gabarito e comentário

GabaritoA — 0;

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”.

Comportamento do comando DELETE com NOT IN e NULL

Gabarito: letra A (0 linhas deletadas). O comando delete from T2 where P not in (select P from T2) tenta excluir linhas de T2 cujo valor de P não esteja presente no conjunto de valores de P da mesma tabela. Contudo, a subconsulta retorna um valor NULL (último registro de T2), e conforme a lógica de três valores do SQL, qualquer comparação com NULL na lista de valores de um NOT IN resulta em UNKNOWN (desconhecido), nunca TRUE. Portanto, nenhuma linha atende à condição e zero linhas são deletadas.

A questão exige conhecimento sobre o tratamento de NULL em subconsultas com NOT IN. O mecanismo do banco de dados considera NULL como valor desconhecido, e a presença de ao menos um NULL na lista anula a possibilidade de a condição ser verdadeira para qualquer linha.

Alternativa A — ✅ Correta ⟵ GABARITO

O número de linhas deletadas é 0. Como explicado, a presença do NULL na subconsulta faz com que nenhuma linha satisfaça a condição WHERE P NOT IN (subconsulta). Nem mesmo as linhas com P = NULL seriam deletadas, pois a comparação NULL NOT IN (lista com NULL) também resulta em UNKNOWN.

Alternativa B — ❌ Incorreta

Afirma que 1 linha seria deletada. Se não houvesse NULL, a única linha com P = 20 (que não aparece em T2? Na verdade, P=20 aparece uma vez? Na tabela T2, os valores de P são: 2, 40, 20, 10 e NULL. Todos os valores não nulos aparecem no conjunto, então mesmo sem NULL, nenhuma linha seria excluída. A presença do NULL garante que 0 seja o resultado.

Alternativa C — ❌ Incorreta

Afirma que 2 linhas seriam deletadas. Não há fundamento para esse número, já que a condição nunca é verdadeira.

Alternativa D — ❌ Incorreta

Afirma que 3 linhas seriam deletadas. Idem.

Alternativa E — ❌ Incorreta

Afirma que 4 linhas seriam deletadas. Idem.

NÃO CAIA NESSA!

O candidato pode esquecer que NOT IN se comporta de forma diferente quando a subconsulta contém NULL. Muitos assumem que a condição excluiria as linhas cujo P não aparece, mas na prática nenhuma linha é excluída porque a presença de um único NULL torna toda a comparação desconhecida. Lembre-se: para NOT IN funcionar sem surpresas, a subconsulta não deve conter NULL. Sempre desconfie quando houver valores nulos envolvidos.

Gabarito: letra A.

Link permanente: /questoes/fg076997