Pular para o conteúdo principal

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

Banco de DadosConsultas e Comandos em SQL
Código
vu195445
Banca
VUNESP
Órgão
UNICAMP
Ano
2023
Cargo
PTIC ( )

Considere a seguinte tabela de um banco de dados relacional.

 

Veículo (Placa, Modelo, Marca, Tipo, Ano)

 

O comando SQL para obter parte dos atributos (placa, modelo e marca) de veículos fabricados no ano 2020 e do tipo SUV ou Misto é:

  1. ASELECT ∗ FROM Veículo WHERE Ano = 2020 AND Tipo INTO (‘SUV’, ‘Misto’);
  2. BSELECT Placa, Modelo, Marca FROM Veículo WHERE Ano = 2020 AND Tipo =‘SUV’ AND                 Tipo = ‘Misto’;
  3. CSELECT Placa ... Marca FROM Veículo WHERE Ano = 2020 AND Tipo LIKE (‘SUV’, ‘Misto’);
  4. DSELECT Placa, Modelo, Marca FROM Veículo WHERE Ano = 2020 AND Tipo IN (‘SUV’, ‘Misto’);
  5. ESELECT ∗ FROM Veículo WHERE Ano = 2020 AND (Tipo =‘SUV’,                Tipo = ‘Misto’);
Revelar gabarito e comentário

GabaritoD — SELECT Placa, Modelo, Marca FROM Veículo WHERE Ano = 2020 AND Tipo IN (‘SUV’, ‘Misto’);

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

Operador IN no SQL: selecionando múltiplos valores

Gabarito: letra D. O comando correto usa SELECT Placa, Modelo, Marca FROM Veículo WHERE Ano = 2020 AND Tipo IN ('SUV', 'Misto') — o operador IN verifica se o valor da coluna Tipo é igual a qualquer um dos valores da lista, combinando com AND a condição do ano. As demais alternativas erram ao usar sintaxe inexistente (INTO, LIKE com lista), lógica impossível (AND entre dois valores da mesma coluna) ou vírgula no lugar de operador lógico.

O comando SELECT é a base da consulta em SQL: ele define quais colunas serão exibidas (projeção) e, com a cláusula WHERE, quais linhas atendem à condição (seleção). Nesta questão, o enunciado pede três colunas específicas — Placa, Modelo e Marca — e duas condições: o Ano igual a 2020 e o Tipo sendo 'SUV' ou 'Misto'. O desafio está em como expressar essa condição de múltiplos valores para a mesma coluna.

A forma mais direta e legível é o operador IN, que equivale a uma sequência de comparações com OR. A expressão Tipo IN ('SUV', 'Misto') é exatamente o mesmo que (Tipo = 'SUV' OR Tipo = 'Misto'). O IN é preferível por ser mais conciso e menos propenso a erro de parênteses. Já o operador LIKE serve para padrões com curingas (% para qualquer sequência, _ para um caractere), não para listas de valores exatos — por isso a alternativa C está errada.

A pegadinha clássica da banca é trocar IN por INTO (alternativa A), que não existe no SQL, ou usar AND entre dois valores da mesma coluna (alternativa B), o que criaria uma condição impossível — um veículo não pode ser simultaneamente SUV e Misto. A alternativa E tenta usar vírgula como se fosse OR, o que também é sintaxe inválida. Guarde a equivalência: IN (lista) = OR entre igualdades, e AND é para condições diferentes (como ano e tipo).

Operador IN no SQL
  • 1Função
    • Testa múltiplos valores na mesma coluna
    • Equivale a vários OR
  • 2Sintaxe correta
    • Tipo IN ('SUV', 'Misto')
  • 3Confusões comuns
    • INTO (não existe p/ filtrar)
    • AND entre valores da mesma coluna (impossível)
    • LIKE (só p/ padrões com % ou _)
    • Vírgula no lugar de OR (inválido)
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

Usa SELECT * (todas as colunas) quando o enunciado pede apenas Placa, Modelo, Marca, e o operador INTO não existe no SQL para essa finalidade — INTO é usado em SELECT ... INTO para criar tabela, não para filtrar valores. O correto seria IN.

Alternativa B — ❌ Incorreta

A condição Tipo = 'SUV' AND Tipo = 'Misto' é logicamente impossível: um registro não pode ter o mesmo atributo Tipo com dois valores diferentes ao mesmo tempo. O AND exige que ambas as condições sejam verdadeiras; para aceitar um ou outro, o correto é OR ou IN.

Alternativa C — ❌ Incorreta

O operador LIKE é usado para correspondência de padrões em strings, com curingas como % (qualquer sequência) e _ (um caractere). Ele não aceita uma lista de valores entre parênteses — LIKE ('SUV', 'Misto') é sintaxe inválida. Além disso, a projeção está truncada (SELECT Placa ... Marca), sem as colunas completas.

Alternativa D — ✅ Correta ⟵ GABARITO

A projeção lista exatamente as colunas pedidas (Placa, Modelo, Marca), a condição Ano = 2020 filtra o ano, e Tipo IN ('SUV', 'Misto') seleciona os veículos cujo tipo é 'SUV' ou 'Misto'. O operador IN é a forma correta e idiomática de testar múltiplos valores em uma coluna.

Alternativa E — ❌ Incorreta

Usa SELECT * (todas as colunas) e a condição (Tipo = 'SUV', Tipo = 'Misto') com vírgula — a vírgula não é um operador lógico no SQL. Para combinar condições, usa-se AND, OR ou NOT; a forma correta seria (Tipo = 'SUV' OR Tipo = 'Misto') ou, mais simples, Tipo IN ('SUV', 'Misto').

NÃO CAIA NESSA!

A banca explora a confusão entre IN e INTO, e entre AND e OR. Lembre-se: IN é para lista de valores (equivale a vários OR), e AND exige que todas as condições sejam verdadeiras — impossível para a mesma coluna ter dois valores. Com treino, você identifica essas trocas de longe 💪

PEGA ESSA DICA!

Na prova, ao ver uma condição com múltiplos valores para a mesma coluna, procure o operador IN. Se aparecer LIKE, desconfie — ele é para padrões com % ou _, não para listas. E confira sempre se o SELECT traz as colunas exatas pedidas no enunciado.

Gabarito: letra D

Link permanente: /questoes/vu195445