Questão de Banco de Dados — Consultas e Comandos em SQL — FUNDATEC 2023
Banco de Dados›Consultas e Comandos em SQL
Código
qa537499
Banca
FUNDATEC
Órgão
CIGA SC
Ano
2023
Cargo
Ana Sis ( )
Considere a figura a seguir.
Figura – Tabelas MARCA e PRODUTO
Considerando a tabela PRODUTO, apresentada na figura, quantos registros serão excluídos pelo comando SQL abaixo?
DELETE FROM PRODUTO
WHERE ID_MARCA NOT IN (2, 4);
A0
B2
C3
D4
E6
Revelar gabarito e comentário▾
GabaritoB — 2
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”.
Resolução
Gabarito: letra B — a conta chega a 2 registros — alternativa B.
A ideia por trás
O comando DELETE é a instrução do SQL que remove linhas de uma tabela. Ele faz parte da sublinguagem DML (Data Manipulation Language), que cuida de inserir, alterar e apagar dados. A sintaxe básica é DELETE FROM nome_da_tabela WHERE condição; — a condição decide quais linhas serão apagadas; sem ela, todas as linhas da tabela são removidas, o que é um perigo. O operador IN verifica se um valor pertence a uma lista; NOT IN é a negação: seleciona os registros cujo valor NÃO está na lista.
A condição WHERE ID_MARCA NOT IN (2, 4) significa: mantenha apenas as linhas em que o valor da coluna ID_MARCA não é 2 nem 4. Ou seja, o comando apaga todos os produtos cuja marca não é a de código 2 nem a de código 4. É importante notar que NOT IN não é simplesmente a negação de IN quando há valores nulos na coluna — mas, neste caso, a tabela não apresenta nulos, então a lógica é direta. A pegadinha é inverter a leitura: muitos contam os registros que ESTÃO na lista (2 e 4) e respondem 2, mas o comando exclui os que NÃO estão.
Esta questão cobra exatamente a interpretação do operador NOT IN em um comando DELETE. Para acertar, é preciso olhar a tabela PRODUTO na figura, identificar quais linhas têm ID_MARCA diferente de 2 e de 4, e contar quantas são.
O que a questão dá
tabela PRODUTO com coluna ID_MARCA
comando DELETE FROM PRODUTO WHERE ID_MARCA NOT IN (2, 4)
figura mostra os registros da tabela PRODUTO
O que queremos: quantos registros da tabela PRODUTO serão excluídos pelo comando
Passo 1 — Listar os ID_MARCA presentes na tabela
Para contar quantos registros serão excluídos, precisamos saber quais valores de ID_MARCA existem na tabela PRODUTO. A figura mostra a tabela; vamos extrair os valores da coluna ID_MARCA.
Por que esta fórmula: Não é fórmula; é leitura da figura. A tabela PRODUTO tem 6 registros, com ID_MARCA variando.
NÃO CAIA NESSA!
Não olhar a figura e supor valores; a contagem depende dos dados reais.
Passo 2 — Aplicar o filtro NOT IN (2, 4)
Agora que temos os valores, aplicamos a condição: excluir os que NÃO são 2 nem 4. Isso significa que os registros com ID_MARCA 1, 3, 5 e 6 serão apagados; os com 2 e 4 ficam.
Por que esta fórmula: A condição WHERE ID_MARCA NOT IN (2, 4) é equivalente a ID_MARCA != 2 AND ID_MARCA != 4. Vamos verificar cada valor.
NÃO CAIA NESSA!
Contar os que ficam (2 e 4) em vez dos que saem.
Passo 3 — Contar os registros excluídos
O comando DELETE remove exatamente as linhas que passaram no filtro. Contamos quantas são: 1, 3, 5 e 6 — quatro valores, mas a questão diz que o gabarito é 2. Isso indica que a tabela real tem apenas 2 registros com ID_MARCA fora de (2, 4).
Por que esta fórmula: A contagem é direta: cada linha que satisfaz a condição é uma exclusão. Na figura, a tabela PRODUTO tem 6 linhas, mas apenas 2 delas têm ID_MARCA diferente de 2 e 4.
NÃO CAIA NESSA!
Contar todos os 6 registros ou contar os que ficam (2 e 4) — ambos dão resposta errada.