4.1 LIMITE
Se você espera que sua consulta SQL retorne muitos dados, pode limitar o número máximo com antecedência. Afinal, as tabelas podem conter milhares ou até milhões de linhas.
O SQL torna muito fácil limitar o número de linhas no resultado de uma consulta usando a extensão LIMIT
. Essa palavra-chave é usada bem no final da consulta SQL e tem a seguinte aparência:
LIMIT quantity
Vamos escrever uma consulta na tabela de produtos, que contém uma lista dos produtos de nossa loja. Mas como temos uma loja de muito sucesso e vendemos muitos produtos, queremos obter apenas as 10 primeiras linhas da resposta. Veja como seria essa solicitação:
SELECT * FROM product
LIMIT 10
E obtemos o seguinte resultado da consulta:
eu ia | nome | marca | preço | contar |
---|---|---|---|---|
1 | Mesa | IKEA | 20h00 | 15 |
2 | Cadeira | IKEA | 5,00 | 45 |
3 | Sofá | IKEA | 80,00 | 10 |
4 | Cama | IKEA | 75,00 | 10 |
5 | Armário | Bosch | 125,00 | 15 |
6 | Prateleira | Prateleira | 25h00 | 114 |
7 | televisão | LG | 350,00 | 4 |
8 | Lâmpada | LG | 15h00 | 100 |
9 | Cômoda | IKEA | 99,00 | 10 |
10 | Placa | Bosch | 199,00 | 10 |
Agora vamos solicitar apenas as primeiras 5 linhas. Veja como seria essa solicitação:
SELECT * FROM product
LIMIT 5
Obtemos o seguinte resultado da consulta:
eu ia | nome | marca | preço | contar |
---|---|---|---|---|
1 | Mesa | IKEA | 20h00 | 15 |
2 | Cadeira | IKEA | 5,00 | 45 |
3 | Sofá | IKEA | 80,00 | 10 |
4 | Cama | IKEA | 75,00 | 10 |
5 | Armário | Bosch | 125,00 | 15 |
4.2 DESVIO
Da última vez, aprendemos como limitar o número de linhas na resposta do servidor. E agora, em vez de milhares de linhas da tabela de produtos, podemos obter as 10 primeiras linhas e exibi-las ao usuário. É perfeitamente. Mas como exibimos as segundas 10 linhas? E o terceiro?
Se escrevermos LIMIT 20
, ou LIMIT 30
, o servidor não retornará 20 e 30 linhas respectivamente?
É para esse caso que o SQL possui uma palavra-chave especial OFFSET
com a qual você pode solicitar ao servidor que pule N linhas em sua resposta. Esta palavra-chave é usada no final da consulta SQL (depois de LIMIT
) e se parece com:
OFFSET quantity
Vamos escrever uma consulta na tabela de produtos e tentar obter os registros de 11 a 15. Em outras palavras, estamos pedindo ao servidor que retorne 5 linhas para nós, mas pule as primeiras 10 linhas da resposta primeiro. Veja como seria essa solicitação:
SELECT * FROM product
LIMIT 5
OFFSET 10
Obtemos o seguinte resultado da consulta:
eu ia | nome | marca | preço | contar |
---|---|---|---|---|
onze | Cadeirão | Bosch | 44,00 | 8 |
12 | vaso de flores | flor inteligente | 99,00 | 9 |
13 | Ficar | IKEA | 100,00 | 10 |
O servidor retornou apenas 3 linhas, o que significa que havia 13 linhas no total em nossa tabela. O servidor pulou os primeiros 10 e retornou os próximos 5.
4.3 SELECIONE DISTINTO
Outra palavra-chave útil é DISTINCT
. É usado quando há registros duplicados na tabela e queremos remover as duplicatas.
De onde vêm as duplicatas em nossa tabela? Pode não haver duplicatas na tabela, mas como resultado da consulta, é fácil. Vamos escrever uma consulta que retornará as marcas de todos os produtos que vendemos. Veja como seria essa solicitação:
SELECT brand FROM product
Obtemos o seguinte resultado da consulta:
marca |
---|
IKEA |
IKEA |
IKEA |
IKEA |
Bosch |
Bosch |
LG |
LG |
IKEA |
Bosch |
Bosch |
flor inteligente |
IKEA |
É fácil ver que existem linhas duplicadas nesta tabela. É para garantir que não haja duplicatas e você precise usar a palavra-chave DISTINCT
. Veja como ficará a solicitação corrigida:
SELECT DISTINCT brand
FROM product
Obtemos o seguinte resultado da consulta:
marca |
---|
IKEA |
Bosch |
LG |
flor inteligente |
Muito melhor. Não é? ;)
4.4 PEDIDO POR
E finalmente chegamos à classificação . Para classificar os resultados de uma consulta, você precisa usar a palavra-chave ORDER BY
. Tecnicamente, são duas palavras, mas a essência não é importante. Duas palavras, um operador.
Deve ser escrito após a palavra-chave WHERE
, mas antes LIMIT
e OFFSET
. Se você escrever ORDER BY
depois de LIMIT
, o servidor SQL simplesmente retornará um erro para você.
Em geral, esse operador se parece com isso:
ORDER BY column order
Onde coluna é o nome da coluna na tabela/resultado de classificação. E a ordem é a ordem de classificação.
A ordem de classificação pode ser de três tipos:
ASC
(de Ascendente) - ascendente;DESC
(de Descendente) - descendente;- Não especificado - será usado
ASC
Vamos escrever uma consulta que retornará uma lista de produtos classificados por preço em ordem crescente. Veja como seria essa solicitação:
SELECT * FROM product
ORDER BY price ASC
LIMIT 10
Obtemos o seguinte resultado da consulta:
eu ia | nome | marca | preço | contar |
---|---|---|---|---|
2 | Cadeira | IKEA | 5,00 | 45 |
8 | Lâmpada | LG | 15h00 | 100 |
1 | Mesa | IKEA | 20h00 | 15 |
6 | Prateleira | Bosch | 25h00 | 114 |
onze | Cadeirão | Bosch | 44,00 | 8 |
4 | Cama | IKEA | 75,00 | 10 |
3 | Sofá | IKEA | 80,00 | 10 |
12 | vaso de flores | flor inteligente | 99,00 | 9 |
9 | Cômoda | IKEA | 99,00 | 10 |
13 | Ficar | IKEA | 100,00 | 10 |
Obteremos o mesmo resultado se não especificarmos a ordem de classificação - pularemos a palavra ASC
.
4.5 ORDER BY em várias colunas
O operador ORDER BY
permite classificar o resultado por várias colunas. Isso pode ser muito útil quando a primeira coluna tiver muitos elementos duplicados. A forma geral deste operador é a seguinte:
ORDER BY column 1 order 1, column 2 order 2, column 3 order 3
Em outras palavras, se após a classificação pela primeira coluna você tiver vários valores idênticos próximos, eles serão classificados pela segunda coluna e assim por diante.
Vamos escrever uma consulta que classificará nossos produtos por marca e, para produtos da mesma marca, em ordem decrescente de número. Veja como seria essa solicitação:
SELECT * FROM product
ORDER BY brand ASC, count
DESC
Obtemos o seguinte resultado da consulta:
eu ia | nome | marca | preço | contar |
---|---|---|---|---|
6 | Prateleira | Bosch | 25h00 | 114 |
5 | Armário | Bosch | 125,00 | 15 |
10 | Placa | Bosch | 199,00 | 10 |
onze | Cadeirão | Bosch | 44,00 | 8 |
2 | Cadeira | IKEA | 5,00 | 45 |
1 | Mesa | IKEA | 20h00 | 15 |
9 | Cômoda | IKEA | 99,00 | 10 |
13 | Ficar | IKEA | 100,00 | 10 |
4 | Cama | IKEA | 75,00 | 10 |
3 | Sofá | IKEA | 80,00 | 10 |
8 | Lâmpada | LG | 15h00 | 100 |
7 | televisão | LG | 350,00 | 4 |
12 | vaso de flores | flor inteligente | 99,00 | 9 |
Observe atentamente a tabela - suas linhas são classificadas por nome de marca (ordem alfabética) e as linhas com o mesmo nome de marca são classificadas por número de produto em ordem decrescente (última coluna).
GO TO FULL VERSION