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
qa538176
Banca
FUNDATEC
Órgão
CAU RS
Ano
2023
Cargo
Ana Sup ( )
PROJETO
IDDESCRICAOTIPOPRAZO_EXECUCAO_DIAS
1DecoraçãoA110
2MarcenariaB275
3ElétricaA360
4AlvenariaC1120
5RevestimentosC2105
6HidráulicaA345
 

Considerando que no campo TIPO da Tabela PROJETO o primeiro caractere (uma letra) representa a prioridade do projeto e o segundo caractere (um número) representa a complexidade do projeto, assinale a alternativa que corresponde a um comando SQL que irá retornar somente os dados dos projetos de prioridade A.

  1. ASELECT * FROM PROJETO WHERE TIPO IN 'A';
  2. BSELECT * FROM PROJETO WHERE TIPO = 'A_';
  3. CSELECT * FROM PROJETO WHERE TIPO LIKE 'A%';
  4. DSELECT * FROM PROJETO WHERE TIPO ('A1', 'A3');
  5. ESELECT * FROM PROJETO WHERE TIPO 'A'.*;
Revelar gabarito e comentário

GabaritoC — SELECT * FROM PROJETO WHERE TIPO LIKE 'A%';

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 LIKE e curingas no SQL

Gabarito: letra C. O comando SELECT * FROM PROJETO WHERE TIPO LIKE 'A%' retorna somente os projetos cujo campo TIPO começa com a letra 'A', pois o curinga % corresponde a qualquer sequência de caracteres (inclusive vazia). O operador LIKE é o único, entre as alternativas, que realiza comparação por padrão em strings, e a sintaxe correta exige o operador LIKE seguido da string de padrão entre aspas simples.

O operador LIKE é um dos operadores de comparação mais importantes da linguagem SQL, utilizado para buscar padrões em colunas de texto. Ele trabalha em conjunto com dois caracteres curinga (wildcards): o % (porcentagem), que substitui zero ou mais caracteres, e o _ (sublinhado), que substitui exatamente um caractere. No contexto da questão, o campo TIPO armazena valores como 'A1', 'B2', 'A3', etc., onde a primeira letra indica a prioridade e o segundo caractere (um número) indica a complexidade. Para selecionar apenas os projetos de prioridade 'A', precisamos buscar todos os valores que começam com a letra 'A', independentemente do que vem depois. O padrão 'A%' faz exatamente isso: a letra 'A' literal seguida de qualquer sequência de caracteres.

A sintaxe correta do comando é SELECT * FROM PROJETO WHERE TIPO LIKE 'A%'. O LIKE é um operador de comparação que deve ser seguido por uma string de padrão entre aspas simples. O curinga % no final indica que qualquer quantidade de caracteres (inclusive nenhum) pode aparecer após a letra 'A'. Assim, seriam retornados os registros com TIPO 'A1' e 'A3' (os dois projetos de prioridade A da tabela).

É importante distinguir o LIKE de outros operadores de comparação. O operador = compara igualdade exata, o IN verifica se um valor está em uma lista de valores, e o BETWEEN verifica se um valor está em um intervalo. Nenhum desses operadores realiza correspondência de padrão com curingas. O LIKE é o único que permite essa flexibilidade, sendo essencial para buscas parciais em strings.

A pegadinha desta questão está na confusão entre os curingas % e _. O % substitui qualquer número de caracteres (0 ou mais), enquanto o _ substitui exatamente um caractere. Se usássemos 'A_', retornaríamos apenas os valores com exatamente dois caracteres começando com 'A', como 'A1' e 'A3', mas não valores como 'A' ou 'ABC'. Já o 'A%' retorna todos os valores que começam com 'A', independentemente do comprimento. A banca explora exatamente essa diferença sutil entre os dois curingas.

Guarde a distinção entre % (qualquer quantidade de caracteres) e _ (um único caractere): é exatamente nela que as alternativas desta questão se dividem.

1Curingas
% (qualquer quantidade)
_ (um caractere)
2Padrão 'A%'
Começa com A
Qualquer continuação
3Padrão 'A_'
Exatamente 2 caracteres
Começa com A
Operador LIKE
LEVELsoulevel.com.br
Operador LIKE: Curingas (% (qualquer quantidade), _ (um caractere)); Padrão 'A%' (Começa com A, Qualquer continuação); Padrão 'A_' (Exatamente 2 caracteres, Começa com A)

Alternativa A — ❌ Incorreta

A sintaxe WHERE TIPO IN 'A' está incorreta. O operador IN exige uma lista de valores entre parênteses, como IN ('A1', 'A3'). Além disso, mesmo que a sintaxe fosse corrigida para IN ('A'), ele buscaria apenas o valor exato 'A', que não existe na tabela (os valores são 'A1', 'A3', etc.). O IN não realiza correspondência de padrão.

Alternativa B — ❌ Incorreta

A sintaxe WHERE TIPO = 'A_' está incorreta porque o operador = não reconhece curingas. Ele compara igualdade exata, então buscaria literalmente o valor 'A_', que não existe na tabela. Para usar o curinga _, seria necessário o operador LIKE, como em LIKE 'A_'. Além disso, mesmo com LIKE, o padrão 'A_' retornaria apenas valores com exatamente dois caracteres começando com 'A', como 'A1' e 'A3', mas não valores como 'A' ou 'ABC'.

Alternativa C — ✅ Correta ⟵ GABARITO

O comando SELECT * FROM PROJETO WHERE TIPO LIKE 'A%' está correto. O operador LIKE permite a correspondência de padrão, e o curinga % substitui qualquer sequência de caracteres (inclusive vazia). O padrão 'A%' corresponde a qualquer valor que comece com a letra 'A', seguido de qualquer quantidade de caracteres. Assim, retorna os registros com TIPO 'A1' e 'A3', que são exatamente os projetos de prioridade A.

Alternativa D — ❌ Incorreta

A sintaxe WHERE TIPO ('A1', 'A3') está incorreta. Falta o operador IN antes da lista de valores. A forma correta seria WHERE TIPO IN ('A1', 'A3'). Além disso, essa consulta retornaria apenas os projetos com TIPO exatamente 'A1' ou 'A3', mas não consideraria outros valores de prioridade A que pudessem existir (como 'A2' ou 'A4'). A questão pede todos os projetos de prioridade A, não apenas os que aparecem na tabela.

Alternativa E — ❌ Incorreta

A sintaxe WHERE TIPO 'A'.* está completamente incorreta. Não existe esse formato na linguagem SQL. O operador LIKE é necessário para correspondência de padrão, e o curinga % é usado, não .* (que é uma expressão regular, não um curinga SQL). A forma correta seria WHERE TIPO LIKE 'A%'.

NÃO CAIA NESSA!

A banca explora a confusão entre os curingas % e _. O % substitui qualquer quantidade de caracteres (0 ou mais), enquanto o _ substitui exatamente um caractere. Se você usasse LIKE 'A_', retornaria apenas valores com exatamente dois caracteres começando com 'A', como 'A1' e 'A3', mas não valores como 'A' ou 'ABC'. O LIKE 'A%' é o correto para capturar todos os projetos de prioridade A, independentemente do comprimento do código. Com treino, você enxerga essas trocas de longe 💪.

PEGA ESSA DICA!

Para questões de SQL com LIKE, lembre-se: % = qualquer quantidade de caracteres (0 ou mais), _ = exatamente um caractere. Se a questão pede "começa com", use 'A%'; se pede "tem exatamente 2 caracteres e começa com A", use 'A_'. Essa distinção é clássica em provas de banco de dados.

Gabarito: letra C

Link permanente: /questoes/qa538176