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
qa537673
Banca
FUNDATEC
Órgão
IFC
Ano
2023
Cargo
PEBTT ( )

Analise a tabela pessoa abaixo:

 

ID

NOME

IDADE

1Maria da Silva35
2Mário Soares55
3João Medeiros

43

Tabela: pessoa

 

Assinale a instrução por meio da linguagem de consulta estruturada (SQL), a fim de buscar todas as pessoas com nome iniciando com a letra “M” e com idade acima de 45 anos.

  1. Aselect * from pessoa where nome == ‘M’ && idade > 45
  2. Bselect * from table pessoa where nome start ‘M’ && idade >= 45
  3. Cselect * from pessoa where nome like ‘M%’ and idade > 45
  4. Dselect * from pessoa where nome like ‘%M’ and idade > 45
  5. Eselect * from pessoa where nome like ‘M%’ && idade > 45
Revelar gabarito e comentário

GabaritoC — select * from pessoa where nome like ‘M%’ and idade > 45

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

Consultas SQL: filtros com LIKE e operadores lógicos

Gabarito: letra C. A instrução correta é select * from pessoa where nome like 'M%' and idade > 45, pois combina o operador LIKE com o curinga % para buscar nomes que começam com a letra "M" e o operador relacional > para filtrar idades estritamente acima de 45 anos. As demais alternativas erram na sintaxe do operador de igualdade (==), na palavra-chave table, no posicionamento do curinga (%M busca nomes que terminam com "M") ou no uso de && em vez de AND.

A linguagem SQL (Structured Query Language) é o padrão para consultar e manipular bancos de dados relacionais. Para filtrar registros, usamos a cláusula WHERE, que aceita condições combinadas por operadores lógicos. O operador AND exige que todas as condições sejam verdadeiras simultaneamente — exatamente o que o enunciado pede: nome iniciando com "M" e idade acima de 45. Já o operador OR retornaria registros que atendessem a qualquer uma das condições.

Para buscar padrões em strings, o SQL oferece o operador LIKE, usado com caracteres curinga. O curinga % representa qualquer sequência de caracteres (inclusive vazia). Assim:

  • LIKE 'M%' → nomes que começam com "M" (o % substitui o restante do nome).

  • LIKE '%M' → nomes que terminam com "M" (o % substitui o início).

  • LIKE '%M%' → nomes que contêm "M" em qualquer posição.

No caso da tabela pessoa, a consulta SELECT * FROM pessoa WHERE nome LIKE 'M%' AND idade > 45 retornaria apenas o registro de Mário Soares (idade 55), pois Maria da Silva tem 35 anos (não atende à condição de idade) e João Medeiros não começa com "M".

A pegadinha central desta questão está em dois pontos: (1) o uso de && em vez de AND&& não é operador lógico válido em SQL padrão (é usado em algumas linguagens de programação, como C e Java); (2) a posição do curinga %'M%' filtra nomes que começam com M, enquanto '%M' filtra nomes que terminam com M. A banca explora exatamente essa confusão entre prefixo e sufixo.

Guarde o critério decisivo: LIKE 'M%' = começa com M e AND = todas as condições devem ser verdadeiras. É com essa régua que as alternativas serão julgadas.

Operador LIKE
  • 1'M%' → começa com M
  • 2'%M' → termina com M
  • 3'%M%' → contém M
  • 4Operadores lógicos SQL
    • AND (válido)
    • OR (válido)
    • NOT (válido)
    • && (inválido)
    • || (inválido)
  • 5Sintaxe SELECT
    • FROM (correto)
    • table FROM (inválido)
    • == (inválido)
    • = (correto)
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

Usa == para comparação de igualdade, que não é um operador válido em SQL (o correto é =). Além disso, 'M' sem curinga busca exatamente a string "M", não nomes que começam com M, e && não é o operador lógico do SQL (o correto é AND).

Alternativa B — ❌ Incorreta

A palavra-chave table não faz parte da sintaxe do SELECT — o correto é apenas FROM pessoa. Além disso, start não é um operador SQL para busca de padrões (o correto é LIKE), e >= 45 incluiria a idade 45, enquanto o enunciado pede acima de 45 (estritamente maior, >).

Alternativa C — ✅ Correta ⟵ GABARITO

A sintaxe está correta: SELECT * FROM pessoa seleciona todas as colunas da tabela; WHERE nome LIKE 'M%' filtra nomes que começam com "M" (o curinga % representa o restante); AND idade > 45 exige que a idade seja estritamente maior que 45. O operador AND combina as duas condições corretamente.

Alternativa D — ❌ Incorreta

O curinga está na posição errada: LIKE '%M' busca nomes que terminam com a letra "M", não que começam. O enunciado pede nomes iniciando com "M", o que exigiria LIKE 'M%'.

Alternativa E — ❌ Incorreta

A condição LIKE 'M%' está correta, mas o operador && não é válido em SQL — o correto é AND. O SQL padrão usa AND, OR e NOT como operadores lógicos.

NÃO CAIA NESSA!

A banca troca o operador lógico AND por && (válido em linguagens de programação, não em SQL) e inverte a posição do curinga: 'M%' (começa com M) versus '%M' (termina com M). Na prova, desconfie sempre de &&, == e start — nenhum deles é sintaxe SQL válida. Com treino, você identifica essas trocas de longe 💪

PEGA ESSA DICA!

Para fixar, lembre-se: o curinga % "corre" para o lado onde está o texto variável. 'M%' → o % está à direita, então o texto fixo "M" está no início (prefixo). '%M' → o % está à esquerda, então o texto fixo "M" está no fim (sufixo). E os operadores lógicos do SQL são AND, OR, NOT — nunca &&, ||, !.

Gabarito: letra C

Link permanente: /questoes/qa537673