Questão de Banco de Dados — Consultas e Comandos em SQL — CESPE / CEBRASPE 2024
Banco de Dados›Consultas e Comandos em SQL
Código
ce403652
Banca
CESPE / CEBRASPE
Órgão
CAGEPA
Ano
2024
Cargo
Tec ( )
Um técnico em eletrônica de certa empresa utiliza um sistema de banco de dados que registra, em horários específicos, medidas de temperatura, pressão e umidade em um processo realizado pela empresa. A tabela a seguir apresenta parte desse banco de dados, em determinado período de tempo.
id
nome
tipo
valor
data_leitura
1
sensor01
temperatura
45.5
2024-07-20 10:00:00
2
sensor02
pressão
101.3
2024-07-20 10:05:00
3
sensor03
temperatura
55.2
2024-07-20 10:10:00
4
sensor04
umidade
35.7
2024-07-20 10:15:00
5
sensor05
temperatura
50.0
2024-07-20 10:20:00
6
sensor06
pressão
99.5
2024-07-20 10:25:00
7
sensor07
umidade
40.2
2024-07-20 10:30:00
8
sensor08
temperatura
47.5
2024-07-20 10:35:00
9
sensor09
pressão
102.4
2024-07-20 10:40:00
10
sensor10
umidade
36.0
2024-07-20 10:45:00
A fim de fazer uma pesquisa na tabela apresentada, esse técnico escreveu o seguinte script SQL.
SELECT * FROM Sensores
WHERE (nome = 'sensor03' OR nome = 'sensor05')
AND valor BETWEEN 46.0 AND 54.0;
Com base na situação apresentada, assinale a opção que corresponde à correta execução do script SQL escrito pelo técnico.
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 – Cláusula WHERE com operadores lógicos e BETWEEN
Gabarito: letra A. A consulta retorna apenas o registro do sensor05 (id 5), pois é o único que atende simultaneamente às duas condições: o nome é 'sensor03' OU 'sensor05' E o valor está entre 46.0 e 54.0. O sensor03 tem valor 55.2, que está fora do intervalo, e os demais sensores não atendem à condição do nome.
A cláusula WHERE é o coração da consulta SQL: é ela que filtra as linhas da tabela antes de qualquer projeção. No comando apresentado, temos uma combinação de operadores lógicos (OR e AND) e um operador de intervalo (BETWEEN). A precedência dos operadores lógicos em SQL é fundamental: o operador AND tem precedência sobre o OR. Isso significa que, sem parênteses, a expressão A OR B AND C seria interpretada como A OR (B AND C). No entanto, o script usa parênteses para agrupar a condição do nome: (nome = 'sensor03' OR nome = 'sensor05'). Com isso, a consulta primeiro verifica se o nome é um dos dois sensores e, em seguida, aplica o filtro de valor. O resultado é a interseção dessas duas condições.
O operador BETWEEN é inclusivo, ou seja, valor BETWEEN 46.0 AND 54.0 equivale a valor >= 46.0 AND valor <= 54.0. Portanto, o valor 50.0 do sensor05 está dentro do intervalo, enquanto o valor 55.2 do sensor03 está fora. O sensor01, com valor 45.5, também está fora, e os demais sensores (sensor02, sensor04, etc.) não têm o nome esperado. A pegadinha da questão está em verificar cada registro individualmente, sem se deixar levar pela condição do nome que parece ampla, mas que, combinada com o intervalo, restringe o resultado a um único registro.
Na prática, para resolver essa questão, basta percorrer a tabela e aplicar as condições. O sensor03 (id 3) tem nome 'sensor03', mas valor 55.2, que não está entre 46.0 e 54.0. O sensor05 (id 5) tem nome 'sensor05' e valor 50.0, que está dentro do intervalo. Nenhum outro sensor atende à condição do nome. Portanto, o resultado é exatamente o registro do sensor05.
A distinção crucial aqui é entre a condição do nome (que usa OR) e a condição do valor (que usa AND). A banca explora a confusão entre essas duas condições: o candidato pode pensar que o OR amplia o resultado para ambos os sensores, mas o AND com o BETWEEN restringe ainda mais. O parêntese garante que a condição do nome seja avaliada primeiro, mas mesmo sem ele, a precedência do AND faria com que o resultado fosse o mesmo, pois apenas o sensor05 atende às duas condições simultaneamente.
Guarde o critério: para uma linha ser retornada, ela deve satisfazer a condição do nome (ser sensor03 ou sensor05) E a condição do valor (estar entre 46.0 e 54.0). É exatamente essa combinação que separa a alternativa correta das demais.
1Filtrar nome (sensor03 OU sensor05)
2Filtrar valor (BETWEEN 46.0 e 54.0)
3Interseção das condições (AND)
4Resultado: sensor05 (valor 50.0)
LEVEL · soulevel.com.br
Alternativa A — ✅ Correta ⟵ GABARITO
Esta alternativa apresenta exatamente o registro do sensor05 (id 5), com valor 50.0, que está dentro do intervalo de 46.0 a 54.0. O nome 'sensor05' atende à condição do OR, e o valor atende à condição do BETWEEN. Portanto, é o único registro que satisfaz todas as condições do WHERE.
Alternativa B — ❌ Incorreta
Apresenta o registro do sensor03 (id 3), mas o valor 55.2 está fora do intervalo BETWEEN 46.0 AND 54.0. Embora o nome 'sensor03' atenda à condição do OR, a condição do valor não é satisfeita, então o registro não é retornado.
Alternativa C — ❌ Incorreta
Apresenta o registro do sensor08 (id 8), com valor 47.5. Embora o valor esteja dentro do intervalo, o nome 'sensor08' não atende à condição nome = 'sensor03' OR nome = 'sensor05'. Portanto, o registro é excluído pela condição do nome.
Alternativa D — ❌ Incorreta
Apresenta os registros do sensor03 e do sensor05. O sensor05 atende a todas as condições, mas o sensor03 tem valor 55.2, que está fora do intervalo. Como a condição do valor é obrigatória (AND), o sensor03 não deve ser retornado. A consulta retorna apenas o sensor05.
Alternativa E — ❌ Incorreta
Apresenta o registro do sensor01 (id 1), com valor 45.5. O nome 'sensor01' não atende à condição do OR, e o valor 45.5 está fora do intervalo BETWEEN 46.0 AND 54.0. Portanto, o registro não é retornado por nenhuma das condições.
NÃO CAIA NESSA!
A banca explora a combinação de operadores lógicos. O candidato pode ser tentado a incluir o sensor03 por causa do OR, esquecendo que o AND com o BETWEEN exige que o valor também esteja no intervalo. A precedência dos operadores e o uso de parênteses são cruciais: a condição do nome é avaliada primeiro, mas o resultado final depende da interseção com a condição do valor. Com treino, você enxerga essas combinações de longe 💪.
PEGA ESSA DICA!
Para resolver questões de SQL com WHERE, identifique primeiro as condições independentes (nome, valor, etc.) e depois verifique como elas se combinam (AND, OR). Lembre-se de que BETWEEN é inclusivo e que o AND tem precedência sobre o OR. Monte uma tabela mental com os registros e aplique cada condição passo a passo.