Filtragem e Ordenação de Dados MySQL

MySQLBeginner
Pratique Agora

Introdução

Neste laboratório, exploraremos técnicas essenciais para filtrar e ordenar dados no MySQL. Você aprenderá a usar cláusulas WHERE para filtrar dados com base em condições específicas, ordenar resultados usando ORDER BY e limitar a saída usando a cláusula LIMIT. Essas habilidades são fundamentais para qualquer usuário de banco de dados, permitindo que você recupere exatamente os dados que precisa na ordem desejada. Através de exercícios práticos, você obterá experiência prática com essas operações cruciais de banco de dados e entenderá como consultar e organizar dados de forma eficaz no MySQL.

Este é um Lab Guiado, que fornece instruções passo a passo para ajudá-lo a aprender e praticar. Siga as instruções cuidadosamente para completar cada etapa e ganhar experiência prática. Dados históricos mostram que este é um laboratório de nível iniciante com uma taxa de conclusão de 97%. Recebeu uma taxa de avaliações positivas de 99% dos estudantes.

Filtragem Básica de Dados com WHERE

Nesta etapa, aprenderemos a usar a cláusula WHERE para filtrar dados com base em condições específicas. A cláusula WHERE é uma das características mais importantes do SQL, permitindo que você recupere apenas os dados que atendem aos seus critérios.

Primeiro, vamos conectar ao MySQL e selecionar nosso banco de dados:

sudo mysql -u root

Uma vez conectado:

USE bookstore;

Operações de Comparação Simples

Vamos começar com operadores de comparação básicos:

-- Livros com preço acima de $40
SELECT title, price
FROM books
WHERE price > 40;

Você deve ver uma saída como esta:

+-------------------------+-------+
| title                   | price |
+-------------------------+-------+
| The MySQL Guide         | 45.99 |
| Advanced Database Concepts | 54.99 |
| Database Administration | 49.99 |
| The Perfect Index       | 42.99 |
+-------------------------+-------+

Operadores de comparação comuns incluem:

  • = (igual a)
  • <> ou != (diferente de)
  • > (maior que)
  • < (menor que)
  • >= (maior ou igual a)
  • <= (menor ou igual a)

Vamos tentar outro exemplo, encontrando livros publicados em um ano específico:

SELECT title, author, publication_year
FROM books
WHERE publication_year = 2023;

Usando AND e OR

Podemos combinar múltiplas condições usando AND e OR:

-- Livros técnicos publicados em 2023
SELECT title, genre, publication_year, price
FROM books
WHERE genre = 'Technical'
AND publication_year = 2023;

Vamos tentar OR para encontrar livros que são muito novos ou muito caros:

SELECT title, publication_year, price
FROM books
WHERE publication_year = 2023
OR price >= 50;

Trabalhando com Valores NULL e Booleanos

Para encontrar livros que estão fora de estoque:

SELECT title, price, in_stock
FROM books
WHERE in_stock = FALSE;

Correspondência de Padrões com LIKE

Nesta etapa, exploraremos a correspondência de padrões usando o operador LIKE, que nos permite pesquisar padrões em dados de texto. Isso é particularmente útil quando você não sabe o texto exato que está procurando.

O operador LIKE usa dois caracteres especiais:

  • % representa zero ou mais caracteres
  • _ representa exatamente um caractere

Vamos tentar alguns exemplos:

-- Encontrar livros com "SQL" em qualquer lugar no título
SELECT title, author
FROM books
WHERE title LIKE '%SQL%';

Esta consulta encontra quaisquer livros onde "SQL" aparece em qualquer lugar no título. Você deve ver uma saída como:

+------------------+----------------+
| title            | author         |
+------------------+----------------+
| SQL for Beginners| Sarah Johnson  |
| SQL Mystery Tales| Jennifer White |
+------------------+----------------+

Vamos tentar mais algumas correspondências de padrões:

-- Encontrar livros começando com "The"
SELECT title, author
FROM books
WHERE title LIKE 'The%';
-- Encontrar livros com "Database" no título
SELECT title, author, price
FROM books
WHERE title LIKE '%Database%';

Observe que LIKE é case-insensitive (sem distinção entre maiúsculas e minúsculas) no MySQL por padrão. Se você precisar de correspondência case-sensitive (com distinção entre maiúsculas e minúsculas), você pode usar BINARY:

-- Pesquisa com distinção entre maiúsculas e minúsculas
SELECT title, author
FROM books
WHERE title LIKE BINARY 'The%';

Ordenando Resultados com ORDER BY

Nesta etapa, aprenderemos a ordenar os resultados de nossas consultas usando a cláusula ORDER BY. Isso nos permite organizar nossos dados em uma ordem significativa, seja ascendente (ASC) ou descendente (DESC).

Ordenação por uma Única Coluna

Vamos começar com a ordenação básica por preço:

-- Ordenar livros por preço (ascendente por padrão)
SELECT title, price
FROM books
ORDER BY price;

Você verá os livros listados do mais barato ao mais caro. Para inverter a ordem:

-- Ordenar livros por preço em ordem descendente
SELECT title, price
FROM books
ORDER BY price DESC;

A saída mostrará os livros mais caros primeiro:

+---------------------------+-------+
| title                     | price |
+---------------------------+-------+
| Advanced Database Concepts| 54.99 |
| Database Administration   | 49.99 |
| The MySQL Guide           | 45.99 |
| The Perfect Index         | 42.99 |
...
+---------------------------+-------+

Ordenação por Múltiplas Colunas

Podemos ordenar por múltiplas colunas, o que é útil quando a primeira coluna de ordenação tem valores duplicados:

-- Ordenar por gênero e, em seguida, por preço dentro de cada gênero
SELECT title, genre, price
FROM books
ORDER BY genre, price DESC;

Você pode misturar ordenações ascendentes e descendentes:

-- Ordenar por gênero (ascendente) e preço (descendente)
SELECT title, genre, price
FROM books
ORDER BY genre ASC, price DESC;

Limitando Resultados com LIMIT

Nesta etapa, aprenderemos a usar a cláusula LIMIT para restringir o número de linhas retornadas por uma consulta. Isso é particularmente útil ao trabalhar com grandes conjuntos de dados ou quando você só precisa ver alguns exemplos.

Uso Básico de LIMIT

Para ver apenas os 3 livros mais caros:

SELECT title, price
FROM books
ORDER BY price DESC
LIMIT 3;

Você deve ver apenas três linhas:

+---------------------------+-------+
| title                     | price |
+---------------------------+-------+
| Advanced Database Concepts| 54.99 |
| Database Administration   | 49.99 |
| The MySQL Guide           | 45.99 |
+---------------------------+-------+

Usando LIMIT com Offset

LIMIT pode receber dois números: o offset (quantas linhas pular) e a contagem (quantas linhas retornar):

-- Pular os primeiros 3 livros e mostrar os próximos 3
SELECT title, price
FROM books
ORDER BY price DESC
LIMIT 3, 3;

Isso mostrará o 4º, 5º e 6º livros mais caros.

Um caso de uso comum é a paginação. Por exemplo, para mostrar a "página 2" com 5 itens por página:

SELECT title, author, price
FROM books
ORDER BY title
LIMIT 5, 5;

Isso pula os primeiros 5 resultados (página 1) e mostra os próximos 5 (página 2).

Combinando Tudo

Vamos juntar tudo o que aprendemos para criar uma consulta mais complexa:

SELECT title, author, price
FROM books
WHERE genre = 'Technical'
AND price > 30
ORDER BY price DESC
LIMIT 3;

Esta consulta:

  1. Filtra por livros técnicos com preço superior a $30
  2. Os ordena por preço em ordem descendente
  3. Mostra apenas os 3 principais resultados

Resumo

Neste laboratório, cobrimos técnicas essenciais para filtrar e ordenar dados no MySQL:

  1. Usando cláusulas WHERE com operadores de comparação e lógicos para filtrar dados
  2. Correspondência de padrões com o operador LIKE para pesquisas de texto
  3. Ordenando resultados usando ORDER BY com colunas únicas e múltiplas
  4. Limitando conjuntos de resultados usando LIMIT e OFFSET

Essas habilidades formam a base para a recuperação e organização eficaz de dados no MySQL.