Pular para o conteúdo principal

Como usar melhor a cláusula LIMIT do SQL

Aprenda a aplicar a cláusula SQL LIMIT para filtrar dados. Dominar o uso da cláusula LIMIT em bancos de dados PostgreSQL e MySQL.
Actualizado 29 de jul. de 2024  · 8 min de leitura

A cláusula SQL LIMIT controla o número de registros retornados em uma consulta. Como o nome sugere, a cláusula LIMIT restringe as linhas mostradas após a filtragem dos dados. Essa cláusula é importante ao lidar com grandes conjuntos de dados, mas você deseja recuperar apenas partes específicas dos dados.

Se você é um aspirante a profissional de dados, recomendo fortemente que faça os cursos Introduction to SQL e SQL Fundamentals da DataCamp para adquirir habilidades relevantes em SQL para análise de dados.

A resposta curta: O que é a cláusula LIMIT do SQL?

A cláusula SQL LIMIT é uma cláusula útil que especifica o número de registros que uma consulta deve retornar após a filtragem dos dados. Essa técnica permite que você retorne apenas um subconjunto de dados para exibição ou análise. Portanto, a cláusula LIMIT é importante para dividir dados grandes em partes menores na paginação de dados. Ele também é usado para otimizar o desempenho, a fim de evitar consultas grandes que possam reduzir o desempenho do banco de dados.

O exemplo abaixo mostra o uso básico da cláusula LIMIT para mostrar apenas os 10 principais registros da tabela employees.

-- Select all columns from the employees table
-- and limit the number of returned rows to 10.
SELECT * 
FROM employees
LIMIT 10;

Sintaxe da cláusula LIMIT do SQL

A cláusula SQL LIMIT é incluída na instrução SELECT para controlar o número de registros retornados de uma consulta. A cláusula LIMIT é adicionada ao final da declaração para filtrar os registros conforme especificado. Você também pode consultar a Folha de dicas básicas de SQL da DataCamp para saber mais sobre LIMIT e outras cláusulas comuns de SQL.

-- Select columns column1, column2, ... from the table table_name
SELECT column1, column2, ...
FROM table_name
-- Limit the number of rows returned to number_of_rows
LIMIT number_of_rows;

Aqui está a cláusula LIMIT em um exemplo prático. A consulta mostrará apenas 10 registros da tabela employees das colunas first_name, last_name e department.

-- Select first_name, last_name, and department from the employees table
SELECT first_name, last_name, department
FROM employees
-- Limit the number of rows returned to 10
LIMIT 10;

Às vezes, você pode usar a cláusula opcional OFFSET para ignorar um número específico de linhas antes de exibir as linhas desejadas. A sintaxe do site OFFSET é mostrada abaixo.

-- Select column_names from the table table_name
SELECT column_names
FROM table_name
-- Arrange the results in ascending order based on column_name
ORDER BY column_name
-- Limit the number of rows returned to number_of_rows, starting from offset_value
LIMIT number_of_rows OFFSET offset_value;

Na consulta SQL acima, o number_of_rows indica o número de linhas a serem retornadas, enquanto o offset_value mostra o número de linhas que a consulta deve ignorar antes de retorná-las. 

O exemplo abaixo mostra como você pode usar as cláusulas SQL OFFSET e LIMIT para controlar o número de linhas a serem retornadas. Enquanto a cláusula LIMIT especifica o retorno de 10 registros, a cláusula OFFSET na consulta ignora os primeiros 5 registros. Portanto, os resultados exibirão registros da 6ª linha dos dados até a 15ª linha (10 linhas).

-- Select first_name, last_name, and department from the employees table
SELECT first_name, last_name, department
FROM employees
-- Limit the number of rows returned to 10, starting from the 6th row (offset of 5)
LIMIT 10 OFFSET 5;

Pontos importantes a serem lembrados sobre a cláusula LIMIT do SQL

Entender como implementar corretamente a cláusula LIMIT e suas variações em diferentes bancos de dados SQL é fundamental para otimizar o desempenho da consulta e garantir a recuperação precisa dos dados. Vamos dar uma olhada em alguns pontos importantes. 

A colocação da cláusula LIMIT no comando SELECT

A cláusula LIMIT geralmente é colocada no final da declaração SELECT, após a cláusula FROM. Se você usar outras cláusulas de agregação opcionais, como as cláusulas WHERE, GROUP BY e ORDER BY, certifique-se de que a cláusula LIMIT esteja no final da consulta.

-- Select all columns from the employees table
SELECT *
FROM employees
-- Limit the number of rows returned to 5, starting from the 21st row (offset of 20)
LIMIT 10 OFFSET 20;

Combinação de LIMIT com a cláusula ORDER BY

A cláusula LIMIT pode ser combinada com o agregado ORDER BY para que você obtenha resultados consistentes e previsíveis. Essa técnica garante que os dados sejam armazenados em uma ordem específica antes de serem recuperados. No exemplo abaixo, ordenamos os dados pelo endereço hire_date em ordem decrescente antes de mostrar as linhas filtradas.

-- Select all columns from the employees table
SELECT *
FROM employees
-- Arrange the results in descending order based on hire_date
ORDER BY hire_date DESC
-- Limit the number of rows returned to 10
LIMIT 10;

Eu recomendaria que você fizesse o curso de carreira Associate Data Analyst in SQL da DataCamp e o curso Reporting in SQL para saber mais sobre funções agregadas e suas aplicações na análise de dados.

Variações e sintaxe do SQL LIMIT nos bancos de dados

Os exemplos acima mostram o uso das cláusulas SQL LIMIT em bancos de dados PostgreSQL, SQLite e MySQL compatíveis.

Para obter resultados semelhantes no SQL Server, considere usar a função TOP para controlar o número de registros a serem retornados a partir de determinados dados.

-- Select the top 10 records of first_name, last_name from the employees table
SELECT TOP 10 first_name, last_name
FROM employees
-- Arrange the results in descending order based on hire_date
ORDER BY hire_date DESC;

Da mesma forma, o banco de dados Oracle suporta o uso do site FETCH FIRST n ROWS ONLY para controlar o número de registros a serem retornados em uma consulta.

-- Select the first_name and last_name columns from the employees table
SELECT first_name, last_name
FROM employees
-- Order the results in descending order based on hire_date
ORDER BY hire_date DESC
-- Limit the number of rows returned to the first 10 rows
FETCH FIRST 10 ROWS ONLY;

LIMIT e OFFSET na paginação

O SQL LIMIT e o OFFSET geralmente são combinados para que você obtenha uma paginação de dados eficiente. Essa técnica garante que grandes conjuntos de dados sejam divididos em partes menores e gerenciáveis para exibição adequada.

No exemplo abaixo, a cláusula LIMIT e OFFSET limita as linhas exibidas a 10, mas começa na 21ª linha.

-- Select all columns from the employees table
SELECT *
-- Arrange the results in descending order based on hire_date
FROM employees
ORDER BY hire_date DESC
-- Limit the number of rows returned to 10, starting from the 21st row (offset of 20)
LIMIT 10 OFFSET 20;

Casos de uso comuns da cláusula LIMIT do SQL

  • Paginação: Quando combinada com a cláusula OFFSET, a cláusula LIMIT é usada em aplicativos da Web para paginação de dados. Essa técnica exibe dados em pedaços/subconjuntos menores, como em diferentes páginas da Web.
  • Otimização do desempenho: A cláusula LIMIT pode melhorar o desempenho da consulta, reduzindo a carga nos servidores do banco de dados. Essa técnica é obtida buscando e retornando subconjuntos de dados menores simultaneamente.
  • Amostragem de dados: A cláusula LIMIT é útil na análise de dados, buscando subconjuntos de dados menores. Esse método ajuda os analistas de dados a melhorar o desempenho durante a análise.

Limitações do comando SQL Limit

As limitações da cláusula SQL LIMIT incluem o seguinte:

  • Falta de suporte de todos os bancos de dados: A cláusula LIMIT não é compatível com todos os bancos de dados. Por exemplo, a cláusula LIMIT não está disponível nos bancos de dados SQL Server e Oracle. 
  • Problemas de desempenho com valores grandes de OFFSET: O uso de valores OFFSET grandes pode tornar os servidores de banco de dados mais lentos, resultando em uma execução de consulta mais lenta.

Para evitar as limitações de diferentes bancos de dados, considere usar as seguintes alternativas.x

A cláusula TOP no SQL Server

A cláusula TOP fornece os mesmos resultados que a cláusula LIMIT para o banco de dados do SQL Server.

-- Select the top 10 rows from the employees table ordered by hire_date
SELECT TOP 10 first_name, last_name
FROM employees
ORDER BY hire_date DESC;

FETCH FIRST n ROWS ONLY no SQL Server e no DB2

O FETCH FIRST n ROWS ONLY também retorna resultados semelhantes aos da cláusula LIMIT para os bancos de dados SQL Server e DB2.

-- Select the first 10 rows from the employees table ordered by hire_date
SELECT first_name, last_name
FROM employees
ORDER BY hire_date DESC
FETCH FIRST 10 ROWS ONLY;

ROWNUM no Oracle

No banco de dados Oracle, a função ROWNUM controla o número de registros retornados dos dados. A função é combinada em uma subconsulta para filtrar os dados conforme necessário.

-- Select the top 10 rows from the employees table ordered by hire_date
SELECT * FROM (
    SELECT first_name, last_name
    FROM employees
    ORDER BY hire_date DESC
) WHERE ROWNUM <= 10;

Conclusão

A cláusula SQL LIMIT é importante para restringir o número de linhas exibidas após a recuperação de dados de um banco de dados. Como profissional de dados, é importante que você entenda os diferentes casos de uso da cláusula LIMIT para análise e manipulação de dados. Da mesma forma, você deve considerar o suporte do banco de dados para a cláusula LIMIT e usar outras funções alternativas ao usar bancos de dados incompatíveis, como o SQL Server e o Oracle.

Para entender as diferentes aplicações da cláusula SQL LIMIT, você deve continuar praticando com diferentes conjuntos de dados. Os cursos Learn SQL e Intermediate SQL da DataCamp são apropriados para que você adquira habilidades avançadas em SQL. Também recomendo que você faça a Certificação SQL Associate da DataCamp para demonstrar seu conhecimento sobre o uso de SQL e se destacar entre outros profissionais de dados.

Perguntas frequentes

Qual é o uso da função SQL LIMIT?

A função SQL LIMIT controla o número de linhas retornadas dos dados filtrados.

Qual é o principal uso do SQL LIMIT?

SQL LIMIT é usado principalmente para paginação de dados em páginas da Web para restringir o número de linhas exibidas.

A cláusula SQL LIMIT é compatível com todos os bancos de dados?

A função SQL LIMIT é compatível apenas com os bancos de dados PostgreSQL, MySQL e SQLite. A cláusula não é compatível com os bancos de dados SQL Server e Oracle.

Qual é a alternativa para a cláusula LIMIT nos bancos de dados sem suporte?

A alternativa à função SQL LIMIT no SQL Server são as cláusulasTOP e FETCH FIRST n ROWS ONLY. O banco de dados Oracle usa a função ROWNUM como alternativa ao LIMIT.

Qual é o uso do OFFSET na cláusula LIMIT do SQL?

Você pode usar OFFSET para especificar o número de linhas a serem ignoradas antes de retornar o número específico de linhas da cláusula LIMIT cláusula.

Temas

Aprenda SQL com a DataCamp

Certificação disponível

curso

Introdução ao SQL

2 hr
730K
Aprenda a criar e consultar bancos de dados relacionais usando SQL em apenas duas horas.
Ver DetalhesRight Arrow
Iniciar Curso
Ver maisRight Arrow