Resultados de classificação
Usando o comando SELECT, os resultados foram retornados na mesma ordem em que os registros foram adicionados ao banco de dados. Esta é a ordem de classificação padrão. Nesta seção, veremos como podemos classificar os resultados da consulta. Classificar é simplesmente reorganizar os resultados da consulta de uma maneira especificada. A classificação pode ser executada em uma única coluna ou em mais de uma coluna. Isso pode ser feito em número, strings, bem como tipos de dados de data.
O que é ORDER BY no MySQL?
MySQL ORDER BY é usado em conjunto com a consulta SELECT para classificar os dados de maneira ordenada. A cláusula ORDER BY do MySQL é usada para classificar os conjuntos de resultados da consulta em ordem crescente ou decrescente.
SELECT statement… [WHERE condition | GROUP BY `field_name(s)` HAVING condition] ORDER BY `field_name(s)` [ASC | DESC];
AQUI
- "Instrução SELECT ..." é a consulta de seleção regular
- "|" representa alternativas
- "[WHERE condição | GROUP BY` field_name (s) `HAVING condition" é a condição opcional usada para filtrar os conjuntos de resultados da consulta.
- "ORDER BY" realiza a classificação do conjunto de resultados da consulta
- "[ASC | DESC]" é a palavra-chave usada para classificar os conjuntos de resultados em ordem crescente ou decrescente. Nota ASC é usado como padrão.
O que são palavras-chave DESC e ASC?
ASC é a forma abreviada para ascendente |
MySQL DESC é a forma abreviada de decrescente |
É usado para classificar os resultados da consulta em um estilo de cima para baixo. |
É usado para classificar os resultados da consulta em um estilo de baixo para cima |
Ao trabalhar com tipos de dados de data, a data mais antiga é mostrada no topo da lista. |
. Ao trabalhar com tipos de data, a data mais recente é exibida no topo da lista. |
Ao trabalhar com tipos de dados numéricos, os valores mais baixos são mostrados no topo da lista. |
Ao trabalhar com tipos de dados numéricos, os valores mais altos são mostrados na parte superior do conjunto de resultados da consulta. |
Ao trabalhar com tipos de dados de string, o conjunto de resultados da consulta é classificado daqueles que começam com a letra A e vão até a letra Z. |
Ao trabalhar com tipos de dados de string, o conjunto de resultados da consulta é classificado daqueles que começam com a letra Z e vão até a letra A. |
As palavras-chave SQL DESC e ASC são usadas juntas em conjunto com a instrução SELECT e a cláusula ORDER BY do MySQL.
Sintaxe DESC e ASC
A palavra-chave de classificação SQL DESC possui a seguinte sintaxe básica.
SELECT {fieldName(s) | *} FROM tableName(s) [WHERE condition] ORDER BY fieldname(s) ASC /DESC [LIMIT N]
AQUI
- SELECIONE {nome (s) do (s) campo (s) | *} FROM tableName (s) é a instrução que contém os campos e as tabelas dos quais obter o conjunto de resultados.
- [Condição WHERE] é opcional, mas pode ser usada para filtrar os dados de acordo com a condição fornecida.
- O (s) nome (s) do campo ORDER BY é obrigatório e é o campo no qual a classificação deve ser realizada. A palavra-chave DESC do MySQL especifica que a classificação deve ser em ordem decrescente.
- [LIMIT] é opcional, mas pode ser usado para limitar o número de resultados retornados do conjunto de resultados da consulta.
Exemplos:
Vejamos agora um exemplo prático -
SELECT * FROM members;
Executar o script acima no ambiente de trabalho MySQL no myflixdb nos dá os seguintes resultados mostrados abaixo.
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | This email address is being protected from spambots. You need JavaScript enabled to view it. |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
5 | Leonard Hofstadter | Male | NULL | Woodcrest | NULL | 845738767 | NULL |
6 | Sheldon Cooper | Male | NULL | Woodcrest | NULL | 976736763 | NULL |
7 | Rajesh Koothrappali | Male | NULL | Woodcrest | NULL | 938867763 | NULL |
8 | Leslie Winkle | Male | 14-02-1984 | Woodcrest | NULL | 987636553 | NULL |
9 | Howard Wolowitz | Male | 24-08-1981 | SouthPark | P.O. Box 4563 | 987786553 |
Vamos supor que o departamento de marketing deseja que os detalhes dos membros sejam organizados em ordem decrescente de Data de Nascimento. Isso os ajudará a enviar cumprimentos de aniversário em tempo hábil. Podemos obter a referida lista executando uma consulta como abaixo -
SELECT * FROM members ORDER BY date_of_birth DESC;
Executar o script acima no ambiente de trabalho MySQL no myflixdb nos dá os seguintes resultados mostrados abaixo.
A mesma consulta em ordem crescente
SELECIONE * DE membros ORDENAR POR date_of_birth ASC
Nota: Valores NULL significa nenhum valor (diferente de zero ou string vazia). Observe a maneira como eles foram classificados.
Mais exemplos
Vamos considerar o seguinte script que lista todos os registros de membros.
SELECT * FROM `members`;
A execução do script acima fornece os seguintes resultados mostrados abaixo.
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | This email address is being protected from spambots. You need JavaScript enabled to view it. |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
5 | Leonard Hofstadter | Male | NULL | Woodcrest | NULL | 845738767 | NULL |
6 | Sheldon Cooper | Male | NULL | Woodcrest | NULL | 976736763 | NULL |
7 | Rajesh Koothrappali | Male | NULL | Woodcrest | NULL | 938867763 | NULL |
8 | Leslie Winkle | Male | 14-02-1984 | Woodcrest | NULL | 987636553 | NULL |
9 | Howard Wolowitz | Male | 24-08-1981 | SouthPark | P.O. Box 4563 | 987786553 | NULL |
Suponha que desejamos obter uma lista que classifica o conjunto de resultados da consulta usando o campo de gênero, usaríamos o script mostrado abaixo.
SELECT * FROM `members` ORDER BY `gender`;
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | This email address is being protected from spambots. You need JavaScript enabled to view it. |
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
5 | Leonard Hofstadter | Male | NULL | Woodcrest | NULL | 845738767 | NULL |
6 | Sheldon Cooper | Male | NULL | Woodcrest | NULL | 976736763 | NULL |
7 | Rajesh Koothrappali | Male | NULL | Woodcrest | NULL | 938867763 | NULL |
8 | Leslie Winkle | Male | 14-02-1984 | Woodcrest | NULL | 987636553 | NULL |
9 | Howard Wolowitz | Male | 24-08-1981 | SouthPark | P.O. Box 4563 | 987786553 | NULL |
Membros "Feminino" foram exibidos primeiro seguidos por membros "Masculino", isso porque quando a cláusula ORDER BY DESC é usada sem especificar a palavra-chave ASC ou MySQL DESC, por padrão, o MySQL classificou o conjunto de resultados da consulta em ordem crescente.
Vejamos agora um exemplo que faz a classificação usando duas colunas ; a primeira é classificada em ordem crescente por padrão, enquanto a segunda coluna é classificada em ordem decrescente.
SELECT * FROM `members` ORDER BY `gender`,`date_of_birth` DESC;
A execução do script acima no ambiente de trabalho MySQL no myflixdb fornece os seguintes resultados.
A coluna de gênero foi classificada em ordem crescente por padrão, enquanto a coluna de data de nascimento foi classificada em ordem decrescente explicitamente
Por que podemos usar DESC e ASC?
Suponha que desejemos imprimir um histórico de pagamentos para um membro da videoteca para ajudar a responder às perguntas da recepção, não seria mais lógico ter os pagamentos impressos em ordem cronológica decrescente, começando com o pagamento recente até o pagamento anterior?
DESC em SQL é uma palavra-chave que se torna útil em tais situações. Podemos escrever uma consulta que classifique a lista em ordem decrescente usando a data de pagamento.
Suponha que o departamento de marketing deseja obter uma lista de filmes por categoria que os membros podem usar para decidir quais filmes estão disponíveis na biblioteca ao alugar filmes, não seria mais lógico classificar os nomes das categorias de filmes e títulos em ordem crescente de modo que os membros podem consultar rapidamente as informações da lista?
A palavra-chave ASC é útil em tais situações; podemos obter a lista de filmes classificados por nome de categoria e título do filme em ordem crescente.
Resumo
- Classificar os resultados da consulta é reorganizar as linhas retornadas de um conjunto de resultados da consulta em ordem crescente ou decrescente.
- A palavra-chave DESC em SQL é usada para classificar o conjunto de resultados da consulta em ordem decrescente.
- A palavra-chave ASC é usada para classificar o conjunto de resultados da consulta em ordem crescente.
- Tanto o DESC quanto o ASC funcionam em conjunto com a palavra-chave ORDER BY. Eles também podem ser usados em combinação com outras palavras-chave, como cláusula WHERE e LIMIT
- O padrão para ORDER BY quando nada foi explicitamente especificado é ASC.