Analista Previdenciário - Tecnologia da Informação
Considere a tabela TabPREV do banco de dados relacional BD_PREV que possui os seguintes campos: Matrícula Nome Data_Aposentadoria Valor_Aposentadoria numérico string data numéricoO comando SQL capaz de apresentar todas as pessoas que se aposentaram entre 1° de Janeiro de 2009 e 31 de Dezembro de 2014 por ordem crescente de valor da aposentadoria é:
ASELECT * FROM TabPREV OF BD_PREV WHERE Data_Aposentadoria DATEDIFF ('01-Jan-2009', '31-Dec-2014') ORDER BY Valor_Aposentadoria;
BSELECT * FROM TabPREV ORDER BY Valor_Aposentadoria WHERE Data_Aposentadoria IN “01-Jan-2009” && '31- Dec-2014';
CSELECT * FROM TabPREV WHERE Data_Aposentadoria BETWEEN '01-Jan-2009' AND '31-Dec-2014' ORDER BY Valor_Aposentadoria ASC;
DSELECT * FROM BD_PREV WHERE Data_Aposentadoria FROM TabPREV IS LIKE '01-Jan-2009' AND '31-Dec-2014' ORDER BY Valor_Aposentadoria ASC;
ESELECT * FROM TabPREV ORDER BY Valor_Aposentadoria WHERE Data_Aposentadoria BETWEEN ('01-Jan-2009', '31-Dec-2014');
Revelar gabarito e comentário▾
GabaritoC — SELECT * FROM TabPREV WHERE Data_Aposentadoria BETWEEN '01-Jan-2009' AND '31-Dec-2014' ORDER BY Valor_Aposentadoria ASC;
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: Comando SELECT com BETWEEN e ORDER BY
Gabarito: letra C. A única alternativa com a sintaxe SQL correta para filtrar registros por um intervalo de datas e ordenar o resultado de forma crescente. O comando deve conter a cláusula WHERE com BETWEEN (que já inclui os extremos) e ORDER BY após o WHERE, sendo que ASC é opcional por ser o padrão.
A banca testa o conhecimento da ordem obrigatória das cláusulas SELECT, WHERE e ORDER BY, além da sintaxe do operador BETWEEN.
Alternativa A — ❌ Incorreta
Apresenta OF BD_PREV (inexistente) e usa DATEDIFF de forma incorreta. Em SQL, a comparação de intervalo deve ser feita com BETWEEN ou com operadores >= e <=. A sintaxe DATEDIFF sem argumentos e sem comparação é inválida.
Alternativa B — ❌ Incorreta
Coloca ORDER BY antes de WHERE, o que viola a sequência de cláusulas. O operador IN não serve para intervalos, e && não é operador lógico do SQL (o correto é AND). As datas estão entre aspas curvas (curly quotes), não reconhecidas pelo SQL.
Alternativa C — ✅ Correta ⟵ GABARITO
A sintaxe está perfeita: SELECT * FROM TabPREV WHERE Data_Aposentadoria BETWEEN '01-Jan-2009' AND '31-Dec-2014' ORDER BY Valor_Aposentadoria ASC. O BETWEEN é o operador adequado para intervalos (inclusive os extremos) e ORDER BY vem depois do WHERE, ordenando de forma crescente. A ordenação ASC é explícita, mas dispensável.
Alternativa D — ❌ Incorreta
FROM BD_PREV referencia o banco de dados em vez da tabela. A cláusula WHERE está mal formada, usando IS LIKE para um intervalo (o LIKE é para padrões de string, não para datas). A condição AND '31-Dec-2014' está solta.
Alternativa E — ❌ Incorreta
Novamente ORDER BY antes de WHERE. O BETWEEN exige a palavra AND entre os valores, e não vírgula ou parênteses. A sintaxe correta é BETWEEN valor1 AND valor2.
PEGA ESSA DICA!
Ao montar comandos SQL, lembre-se da ordem obrigatória: SELECT → FROM → WHERE → GROUP BY → HAVING → ORDER BY. O BETWEEN é inclusivo e exige AND entre os extremos.