Pular para o conteúdo principal

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

Banco de DadosSQL
Código
fc019067
Banca
FCC
Órgão
DPE-SP
Ano
2015
Nível
Superior
Cargo
Administrador de Banco de Dados
Considere a seguinte consulta feita em SQL padrão:SELECT TipoFROM CatálogoWHERE Tipo IN (‘gde’, ‘médio’, ‘pequeno’)Uma consulta SQL equivalente é:
  1. ASELECT TipoFROM CatálogoWHERE Tipo = ‘gde’ AND Tipo = ‘médio’ AND Tipo = ‘pequeno’
  2. BSELECT TipoFROM CatálogoGROPU BY Tipo
  3. CSELECT TipoFROM CatálogoWHERE Tipo = ‘gde’ OR Tipo = ‘médio’ OR Tipo = ‘pequeno’
  4. DSELECT TipoFROM CatálogoWHERE Tipo BETWEEN (‘pequeno’, ‘médio’, ‘gde’)
  5. ESELECT TipoFROM CatálogoHAVING Tipo LIKE (‘gde’, ‘médio’, ‘pequeno’)
Revelar gabarito e comentário

GabaritoC — SELECT Tipo FROM Catálogo WHERE Tipo = ‘gde’ OR Tipo = ‘médio’ OR Tipo = ‘pequeno’

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: Operador IN e sua equivalência com OR

Gabarito: letra C. O operador IN no SQL testa se um valor está presente em uma lista de valores, funcionando como uma série de condições unidas por OR. A alternativa C reproduz exatamente essa lógica: Tipo = 'gde' OR Tipo = 'médio' OR Tipo = 'pequeno'.

A banca testa o conhecimento da equivalência entre IN e OR. O conteúdo de apoio explica que "o operador IN permite especificar múltiplos valores para uma condição... equivale a uma operação com múltiplas cláusulas OR". A pegadinha comum é confundir IN com AND, mas IN é uma disjunção, não uma conjunção.

Alternativa A — ❌ Incorreta

Usa AND entre as três condições. Isso exigiria que um mesmo registro tivesse Tipo igual a 'gde', 'médio' e 'pequeno' simultaneamente, o que é impossível. Não retorna nenhuma linha, portanto não equivale ao IN.

Alternativa B — ❌ Incorreta

GROUP BY é uma cláusula de agrupamento, usada com funções de agregação. Aqui não há agregação nem filtro; a consulta não seleciona registros com base nos valores de Tipo. Além disso, a sintaxe foi digitada como "GROPU BY" (erro de digitação), mas mesmo corrigida não seria equivalente.

Alternativa C — ✅ Correta ⟵ GABARITO

A cláusula WHERE Tipo = 'gde' OR Tipo = 'médio' OR Tipo = 'pequeno' retorna todos os registros cujo Tipo seja exatamente um dos três valores. É a tradução direta do IN.

Alternativa D — ❌ Incorreta

BETWEEN é usado para intervalos contínuos (numéricos ou alfabéticos), não para listas discretas. A sintaxe BETWEEN ('pequeno', 'médio', 'gde') é inválida; BETWEEN espera dois valores (limite inferior e superior).

Alternativa E — ❌ Incorreta

HAVING é utilizado com GROUP BY para filtrar grupos, não registros individuais. LIKE é para correspondência de padrões em strings, não aceita uma lista de valores. A sintaxe também está incorreta (LIKE ('gde', 'médio', 'pequeno') não é válida).

NÃO CAIA NESSA!

A banca troca o operador lógico: IN equivale a uma série de OR (qualquer um), não de AND (todos). O candidato pode cair na alternativa A se pensar que IN exige que o registro atenda a todas as condições, mas na verdade basta uma. Lembre-se: IN = vários OR.

Gabarito: letra C.

Link permanente: /questoes/fc019067