Pular para o conteúdo principal

Questão de Banco de Dados — Consultas e Comandos em SQL — FUNDATEC 2023

Banco de DadosConsultas e Comandos em SQL
Código
qa537590
Banca
FUNDATEC
Órgão
IFFAR
Ano
2023
Cargo
Tec ( )

Imagem associada para resolução da questão

 

Figura 2 – Tabelas “Cargo” e “Funcionário”

 

Considerando a tabela “Funcionário”, apresentada na Figura 2, quantos registros serão atualizados pelo comando SQL abaixo?

 

UPDATE FUNCIONARIO
SET ID_FUNCIONARIO_SUPERIOR = 5
WHERE ID_CARGO IN (2,4)


  1. A0
  2. B2
  3. C3
  4. D5
  5. E8
Revelar gabarito e comentário

GabaritoD — 5

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 D — a conta chega a 5 registros — alternativa D.

A ideia por trás

O comando UPDATE é a instrução do SQL usada para modificar dados já existentes em uma tabela. Ele altera o valor de uma ou mais colunas em um conjunto de linhas, e a unidade de trabalho é o registro: ou a linha inteira é atualizada, ou não é. A cláusula WHERE é o filtro que decide quais linhas entram nesse conjunto — sem ela, o UPDATE atingiria todas as linhas da tabela, o que quase sempre é um erro.

A sintaxe é UPDATE nome_da_tabela SET coluna = valor WHERE condição. O WHERE funciona como uma pergunta que o banco faz para cada linha: se a resposta for verdadeira, a linha é atualizada; se for falsa, ela é ignorada. O operador IN é um atalho para várias comparações OR: ID_CARGO IN (2,4) equivale a ID_CARGO = 2 OR ID_CARGO = 4. Portanto, o número de registros atualizados é exatamente a quantidade de linhas que satisfazem essa condição.

Esta questão cobra a leitura correta da cláusula WHERE e do operador IN: é preciso contar quantos funcionários têm ID_CARGO igual a 2 ou 4 na tabela da figura. O gabarito oficial indica que esse número é 5.

O que a questão dá

  • tabela Funcionário com colunas ID_FUNCIONARIO, ID_CARGO, ID_FUNCIONARIO_SUPERIOR

  • comando UPDATE: SET ID_FUNCIONARIO_SUPERIOR = 5

  • condição WHERE: ID_CARGO IN (2,4)

  • gabarito oficial: 5 registros atualizados

O que queremos: quantos registros da tabela Funcionário serão atualizados pelo comando

Passo 1 — Decifrar a condição do WHERE

O WHERE é o coração da questão: ele diz quais linhas serão atualizadas. A condição ID_CARGO IN (2,4) significa que o funcionário deve ter cargo 2 OU cargo 4. O operador IN é uma forma compacta de escrever duas comparações com OR.

Por que esta fórmula: IN é um operador de conjunto: ele testa se o valor da coluna está na lista entre parênteses. É equivalente a ID_CARGO = 2 OR ID_CARGO = 4, mas mais legível.

IDCARGO{2,4}ID_CARGO \in \{2, 4\}

De onde vem cada valor: IDCARGOID_CARGO = coluna da tabela Funcionário · {2,4}\{2, 4\} = enunciado: IN (2,4)

NÃO CAIA NESSA!

Confundir IN com NOT IN — o NOT IN selecionaria os funcionários com cargos diferentes de 2 e 4, mudando completamente a resposta.

Passo 2 — Contar os registros que satisfazem a condição

Agora que sabemos o filtro, precisamos olhar a tabela da Figura 2 e contar quantos funcionários têm ID_CARGO igual a 2 ou 4. O gabarito oficial afirma que são 5 registros.

5 registros\boxed{5\ \text{registros}}
NÃO CAIA NESSA!

Contar apenas os funcionários com ID_CARGO = 2 (ou apenas os com 4) e esquecer o outro valor — o IN inclui os dois.

Resposta: 5 registros — alternativa D

Link permanente: /questoes/qa537590