Analista Judiciário - Tecnologia da Informação - Analista de Sistemas
O programador Luiz está acessando uma tabela armazenada em um banco de dados PostgreSQL. A cláusula que Luiz deve utilizar para retornar 20 registros, pulando os 40 primeiros, é:
ATOP 20 :: 40
BTOP 20 LIMIT 40
CLIMIT 20 START 40
DLIMIT 20 OFFSET 40
EFETCH 20 ROWS OFFSET 40
Revelar gabarito e comentário▾
GabaritoD — LIMIT 20 OFFSET 40
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”.
Cláusulas de limitação e deslocamento em consultas SQL (PostgreSQL)
Gabarito: letra D. No PostgreSQL, a cláusula LIMIT define o número máximo de registros retornados e OFFSET quantos registros devem ser pulados antes de começar a retornar. A combinação LIMIT 20 OFFSET 40 retorna 20 registros após pular os 40 primeiros, exatamente o que o enunciado pede.
A questão testa a familiaridade com a sintaxe específica do PostgreSQL para paginação. Enquanto outros SGBDs usam TOP (SQL Server) ou FETCH FIRST ... ROWS ONLY (padrão SQL:2008), o PostgreSQL utiliza LIMIT e OFFSET. Vejamos cada alternativa:
Cláusula
Sintaxe no PostgreSQL
Efeito
Correta?
A
TOP 20 :: 40
Inválida (não existe em nenhum SGBD)
❌
B
TOP 20 LIMIT 40
Inválida (mistura TOP com LIMIT; LIMIT 40 limitaria a 40, não pula 40)
❌
C
LIMIT 20 START 40
Inválida (START não é usado para paginação)
❌
D
LIMIT 20 OFFSET 40
Retorna 20 registros após pular os 40 primeiros
✅
E
FETCH 20 ROWS OFFSET 40
Inválida (ordem correta no PostgreSQL: OFFSET 40 ROWS FETCH NEXT 20 ROWS ONLY)
TOP 20 :: 40 não é sintaxe SQL válida em nenhum SGBD. O TOP é usado no SQL Server e no Sybase, mas a sintaxe é SELECT TOP 20 ... e não há separador ::. Além disso, não há cláusula de deslocamento nessa forma.
Alternativa B — ❌ Incorreta
TOP 20 LIMIT 40 mistura TOP (SQL Server) com LIMIT (PostgreSQL/MySQL). Não é uma combinação válida. A cláusula LIMIT não pode ser usada junto com TOP no mesmo comando. Além disso, LIMIT 40 limitaria a 40 registros, não pulando 40.
Alternativa C — ❌ Incorreta
LIMIT 20 START 40 é inválida no PostgreSQL. Não existe a cláusula START nesse contexto. O correto seria LIMIT 20 OFFSET 40. O termo START é usado em outras situações (como em procedures com START TRANSACTION), mas não para paginação.
Alternativa D — ✅ Correta ⟵ GABARITO
LIMIT 20 OFFSET 40 é a sintaxe padrão do PostgreSQL para limitar o número de linhas e pular registros. Corresponde exatamente ao que foi solicitado: retornar 20 registros após pular os 40 primeiros.
Alternativa E — ❌ Incorreta
FETCH 20 ROWS OFFSET 40 é a sintaxe do padrão SQL:2008 (OFFSET ... FETCH FIRST ... ROWS ONLY). Embora o PostgreSQL também suporte essa sintaxe a partir da versão 8.4, ela é escrita de forma ligeiramente diferente: OFFSET 40 ROWS FETCH NEXT 20 ROWS ONLY. A forma apresentada na alternativa (FETCH 20 ROWS OFFSET 40) não é a correta no PostgreSQL. Além disso, a alternativa inverte a ordem: no padrão, OFFSET vem antes de FETCH. Portanto, está incorreta conforme apresentada.
SE LIGUE NESSA!
O PostgreSQL aceita tanto LIMIT ... OFFSET quanto a sintaxe OFFSET ... FETCH NEXT ... ROWS ONLY. A primeira é mais tradicional e amplamente usada.