CodeGym /Cursos /All lectures for PT purposes /Controle de Exibição de Dados

Controle de Exibição de Dados

All lectures for PT purposes
Nível 1, Lição 155
Disponível

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 OFFSETcom 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 LIMITe OFFSET. Se você escrever ORDER BYdepois 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á usadoASC

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 BYpermite 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).

Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION