Pular para o conteúdo principal

Questão de Banco de Dados — Geral — FCC 2026

Banco de DadosGeral
Código
fc142092
Banca
FCC
Órgão
MPE SE
Ano
2026
Cargo
Ana ( )

Em um banco de dados de um Ministério Público, há uma tabela chamada Promotor, com os campos: PromotorID, Nome, Cidade e DataIngresso. Um relatório precisa listar os 10 promotores mais antigos, isto é, com a menor data de ingresso.

 

Para isso e em condições ideais, o comando SQL que deve ser utilizado no SQL Server 2019+ é:

  1. ASELECT FIRST 10 PromotorID, Nome, Cidade, DataIngresso FROM Promotor ORDER BY DataIngresso ASC;
  2. BSELECT PromotorID, Nome, Cidade, DataIngresso FROM Promotor ORDER BY DataIngresso ASC OFFSET 0 ROWS FETCH NEXT 10 ROWS ONLY;
  3. CSELECT PromotorID, Nome, Cidade, DataIngresso FROM Promotor ORDER DataIngresso ASC OFFSET 0 ROWS FETCH NEXT 10 ROWS ONLY;
  4. DSELECT PromotorID, Nome, Cidade, DataIngresso FROM Promotor ORDER BY 3 ASC OFFSET 0 ROWS FETCH NEXT 10 ROWS;
  5. ESELECT PromotorID, Nome, Cidade, DataIngresso FROM Promotor LIMIT 10;
Revelar gabarito e comentário

GabaritoB — SELECT PromotorID, Nome, Cidade, DataIngresso FROM Promotor ORDER BY DataIngresso ASC OFFSET 0 ROWS FETCH NEXT 10 ROWS ONLY;

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 Server: paginação com OFFSET e FETCH

Gabarito: letra B. No SQL Server 2019+, a forma correta de limitar o número de linhas retornadas em uma consulta é usar a cláusula OFFSET combinada com FETCH NEXT, que é a implementação do padrão SQL para paginação. A alternativa B está correta porque utiliza ORDER BY DataIngresso ASC (para ordenar do mais antigo para o mais recente) e OFFSET 0 ROWS FETCH NEXT 10 ROWS ONLY (para pular 0 linhas e retornar as próximas 10).

A consulta precisa listar os 10 promotores mais antigos, ou seja, aqueles com a menor data de ingresso. Para isso, é necessário ordenar os registros pela coluna DataIngresso em ordem crescente (ASC), pois a menor data vem primeiro. Em seguida, para limitar o resultado a apenas 10 linhas, o SQL Server oferece a sintaxe OFFSET ... ROWS FETCH NEXT ... ROWS ONLY, que é a forma padrão de paginação nesse SGBD. Essa sintaxe exige que a cláusula ORDER BY esteja presente, pois a paginação é feita sobre um conjunto ordenado.

A cláusula OFFSET especifica quantas linhas devem ser puladas antes de começar a retornar resultados, e FETCH NEXT define quantas linhas serão retornadas a partir desse ponto. No caso, OFFSET 0 ROWS pula zero linhas (começa do primeiro registro) e FETCH NEXT 10 ROWS ONLY retorna as 10 primeiras linhas do resultado ordenado. Essa é a maneira correta e eficiente de implementar a paginação no SQL Server, especialmente a partir da versão 2012, e é a que a banca espera em uma questão sobre esse SGBD.

É importante destacar que a sintaxe LIMIT, comum no MySQL e PostgreSQL, não é suportada no SQL Server. Da mesma forma, SELECT FIRST, que existe no Microsoft Access, não é válida no SQL Server. A alternativa C erra ao omitir a palavra-chave BY na cláusula ORDER BY, tornando a sintaxe inválida. A alternativa D usa ORDER BY 3, que ordena pela terceira coluna da lista de seleção (Cidade), o que não atende ao requisito de ordenar por DataIngresso. A alternativa E usa LIMIT, que não é suportado no SQL Server.

A pegadinha desta questão está em reconhecer a sintaxe específica do SQL Server para limitar resultados. Muitos candidatos, acostumados com outros bancos, podem marcar a alternativa E (LIMIT) ou a alternativa A (SELECT FIRST), mas ambas são inválidas no SQL Server. A banca explora exatamente essa confusão entre os dialetos SQL dos diferentes SGBDs.

NÃO CAIA NESSA!

A banca explora a confusão entre os dialetos SQL. LIMIT é do MySQL/PostgreSQL, SELECT FIRST é do Access, e ORDER DataIngresso (sem BY) é um erro de sintaxe. No SQL Server, a única forma correta de limitar resultados é com OFFSET ... FETCH NEXT. Memorize essa diferença para não cair na pegadinha.

  1. 1ORDER BY (obrigatório)
  2. 2OFFSET 0 ROWS
  3. 3FETCH NEXT 10 ROWS ONLY
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

A sintaxe SELECT FIRST 10 não é válida no SQL Server. O comando FIRST é uma palavra-chave do Microsoft Access, não do SQL Server. No SQL Server, para limitar o número de linhas, deve-se usar OFFSET ... FETCH NEXT ou TOP. Portanto, essa alternativa está incorreta.

Alternativa B — ✅ Correta ⟵ GABARITO

Esta é a sintaxe correta para o SQL Server. A consulta ordena os registros por DataIngresso em ordem crescente (ASC), o que coloca os promotores mais antigos (menor data) no topo. Em seguida, OFFSET 0 ROWS pula zero linhas e FETCH NEXT 10 ROWS ONLY retorna as 10 primeiras linhas, exatamente os 10 promotores mais antigos. A sintaxe está completa e correta.

Alternativa C — ❌ Incorreta

O erro está na cláusula ORDER DataIngresso ASC, que deveria ser ORDER BY DataIngresso ASC. A palavra-chave BY é obrigatória na sintaxe do ORDER BY. Sem ela, o comando é inválido e geraria um erro de sintaxe no SQL Server.

Alternativa D — ❌ Incorreta

A cláusula ORDER BY 3 ordena os resultados pela terceira coluna da lista de seleção, que é Cidade, e não por DataIngresso. Isso não atende ao requisito de listar os promotores mais antigos. Além disso, a cláusula FETCH NEXT 10 ROWS está sem a palavra-chave ONLY, que é opcional, mas o erro principal é a ordenação pela coluna errada.

Alternativa E — ❌ Incorreta

A cláusula LIMIT 10 é uma sintaxe do MySQL e do PostgreSQL, não do SQL Server. No SQL Server, essa cláusula não é suportada e geraria um erro de sintaxe. A forma correta de limitar resultados no SQL Server é com OFFSET ... FETCH NEXT ou TOP.

Gabarito: letra B

Link permanente: /questoes/fc142092