Pular para o conteúdo principal

Questão de Banco de Dados — SQL — FCC 2015

Banco de DadosSQL
Código
fc020556
Banca
FCC
Órgão
MPE-PB
Ano
2015
Nível
Superior
Cargo
Analista de Sistemas – Desenvolvedor
Ao executar uma instrução SQL foram exibidos os seguintes dados: idFilial idLoja cidade Filial vendas Filial 1 1 Campinas 120000 1 3 São Paulo 120000A instrução executada foi
  1. ASELECT * FROM filial WHERE vendasFilial >100000 AND idFilial=1;
  2. BSELECT idFilial, idLoja, cidadeFilial, vendasFilial FROM filial WHERE vendasFilial<100000 AND idFilial=1;
  3. CSELECT idFilial, idLoja, cidadeFilial, vendasFilial FROM filial WHERE (vendasFilial>100000 OR idFilial=1);
  4. DSELECT *.* FROM filial WHERE vendasFilial<100000 && idFilial=1;
  5. ESELECT FROM filial WHERE vendasFilial>100000 AND idFilial=1;
Revelar gabarito e comentário

GabaritoA — SELECT * FROM filial WHERE vendasFilial >100000 AND idFilial=1;

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

SQL: Filtro de Registros com WHERE

Gabarito: letra A. A consulta que retorna exatamente as duas linhas exibidas (idFilial=1 com vendasFilial=120000) é aquela que combina as condições vendasFilial > 100000 e idFilial = 1 com o operador AND. A alternativa A é a única que expressa essa combinação corretamente.

A questão testa a compreensão dos operadores lógicos (AND, OR) e da filtragem com WHERE. O resultado esperado contém duas linhas: ambas com idFilial = 1 e vendasFilial igual a 120000 (que é > 100000). A condição deve selecionar apenas os registros que atendem simultaneamente aos dois critérios.

Alternativa A — ✅ Correta ⟵ GABARITO

SELECT * FROM filial WHERE vendasFilial >100000 AND idFilial=1; Aplica o operador AND, exigindo que ambas as condições sejam verdadeiras. A tabela Filial contém os registros (1,1, Campinas, 120000) e (1,3, São Paulo, 120000) que satisfazem vendasFilial > 100000 e idFilial = 1. Os demais registros (idFilial 1 com vendas menores, ou idFilial diferentes) são excluídos, gerando exatamente as duas linhas apresentadas.

Alternativa B — ❌ Incorreta

SELECT idFilial, idLoja, cidadeFilial, vendasFilial FROM filial WHERE vendasFilial<100000 AND idFilial=1; Usa vendasFilial < 100000, mas os registros exibidos têm vendasFilial = 120000, que não atendem a essa condição. A consulta retornaria apenas as filiais da loja 1 com vendas inferiores a 100000 (por exemplo, idFilial=1, idLoja=2? Não, esse é de Campinas com 35000, mas idLoja=2, idFilial=1? Na verdade, o registro (1,2, Campinas, 35000) tem idFilial=1, idLoja=2 e vendas 35000 — atenderia a condição, mas não está no resultado apresentado. Portanto, produziria um conjunto diferente.

Alternativa C — ❌ Incorreta

SELECT idFilial, idLoja, cidadeFilial, vendasFilial FROM filial WHERE (vendasFilial>100000 OR idFilial=1); Usa o operador OR, que retorna registros que atendam pelo menos uma das condições. Isso incluiria todos os registros com idFilial = 1 (independentemente do valor de vendas) e todos com vendasFilial > 100000 (independentemente do idFilial). O resultado conteria várias linhas adicionais (por exemplo, (2,1, Salvador, 240000), (3,1, Rio de Janeiro, 60000), (4,1, Curitiba, 40000) — todos com idFilial=1 — e possivelmente outros), muito além das duas apresentadas.

Alternativa D — ❌ Incorreta

SELECT *.* FROM filial WHERE vendasFilial<100000 && idFilial=1; Apresenta dois erros: (1) a sintaxe *.* é inválida no SQL padrão (o correto seria apenas * ou tabela.*); (2) a condição de venda é vendasFilial < 100000, que não corresponde ao valor 120000 dos registros exibidos. Mesmo se corrigida a sintaxe, a cláusula WHERE estaria errada.

Alternativa E — ❌ Incorreta

SELECT FROM filial WHERE vendasFilial>100000 AND idFilial=1; Falta a lista de colunas ou o caractere * após SELECT. Em SQL, SELECT exige uma expressão de seleção (colunas ou *). A instrução é sintaticamente inválida e não executaria.

Gabarito: letra A.

Link permanente: /questoes/fc020556