Filtrage et tri des données MySQL

MySQLMySQLBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire (lab), nous explorerons les techniques essentielles pour filtrer et trier des données dans MySQL. Vous apprendrez à utiliser les clauses WHERE pour filtrer les données en fonction de conditions spécifiques, à trier les résultats à l'aide de ORDER BY et à limiter la sortie en utilisant la clause LIMIT. Ces compétences sont fondamentales pour tout utilisateur de base de données, car elles vous permettent de récupérer exactement les données dont vous avez besoin dans l'ordre que vous souhaitez. Grâce à des exercices pratiques, vous acquerrez une expérience concrète de ces opérations cruciales sur les bases de données et comprendrez comment interroger et organiser efficacement les données dans MySQL.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sql(("SQL")) -.-> sql/BasicSQLCommandsGroup(["Basic SQL Commands"]) mysql(("MySQL")) -.-> mysql/BasicKeywordsandStatementsGroup(["Basic Keywords and Statements"]) sql(("SQL")) -.-> sql/DataManipulationandQueryingGroup(["Data Manipulation and Querying"]) sql(("SQL")) -.-> sql/AdvancedDataOperationsGroup(["Advanced Data Operations"]) sql/BasicSQLCommandsGroup -.-> sql/select("SELECT statements") mysql/BasicKeywordsandStatementsGroup -.-> mysql/select("Data Retrieval") sql/DataManipulationandQueryingGroup -.-> sql/where("WHERE clause") sql/DataManipulationandQueryingGroup -.-> sql/order_by("ORDER BY clause") sql/DataManipulationandQueryingGroup -.-> sql/like("LIKE operator") sql/AdvancedDataOperationsGroup -.-> sql/string_functions("String functions") sql/AdvancedDataOperationsGroup -.-> sql/numeric_functions("Numeric functions") subgraph Lab Skills sql/select -.-> lab-418305{{"Filtrage et tri des données MySQL"}} mysql/select -.-> lab-418305{{"Filtrage et tri des données MySQL"}} sql/where -.-> lab-418305{{"Filtrage et tri des données MySQL"}} sql/order_by -.-> lab-418305{{"Filtrage et tri des données MySQL"}} sql/like -.-> lab-418305{{"Filtrage et tri des données MySQL"}} sql/string_functions -.-> lab-418305{{"Filtrage et tri des données MySQL"}} sql/numeric_functions -.-> lab-418305{{"Filtrage et tri des données MySQL"}} end

Filtrage de données de base avec WHERE

Dans cette étape, nous apprendrons à utiliser la clause WHERE pour filtrer les données en fonction de conditions spécifiques. La clause WHERE est l'une des fonctionnalités les plus importantes en SQL, car elle vous permet de récupérer uniquement les données qui répondent à vos critères.

Tout d'abord, connectons - nous à MySQL et sélectionnons notre base de données :

sudo mysql -u root

Une fois connecté :

USE bookstore;

Opérations de comparaison simples

Commençons par les opérateurs de comparaison de base :

-- Livres coûtant plus de 40 dollars
SELECT title, price
FROM books
WHERE price > 40;

Vous devriez voir une sortie comme celle - ci :

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

Les opérateurs de comparaison courants incluent :

  • = (égal à)
  • <> ou != (différent de)
  • > (supérieur à)
  • < (inférieur à)
  • >= (supérieur ou égal à)
  • <= (inférieur ou égal à)

Essayons un autre exemple en recherchant les livres publiés dans une année spécifique :

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

Utilisation de AND et OR

Nous pouvons combiner plusieurs conditions en utilisant AND et OR :

-- Livres techniques publiés en 2023
SELECT title, genre, publication_year, price
FROM books
WHERE genre = 'Technical'
AND publication_year = 2023;

Essayons OR pour trouver les livres qui sont soit très récents, soit très chers :

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

Travailler avec les valeurs NULL et les valeurs booléennes

Pour trouver les livres en rupture de stock :

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

Correspondance de motifs avec LIKE

Dans cette étape, nous explorerons la correspondance de motifs en utilisant l'opérateur LIKE, qui nous permet de rechercher des motifs dans des données textuelles. Cela est particulièrement utile lorsque vous ne connaissez pas exactement le texte que vous recherchez.

L'opérateur LIKE utilise deux caractères spéciaux :

  • % représente zéro ou plusieurs caractères
  • _ représente exactement un caractère

Essayons quelques exemples :

-- Trouver les livres ayant "SQL" n'importe où dans le titre
SELECT title, author
FROM books
WHERE title LIKE '%SQL%';

Cette requête trouve tous les livres où "SQL" apparaît n'importe où dans le titre. Vous devriez voir une sortie comme :

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

Essayons d'autres correspondances de motifs :

-- Trouver les livres commençant par "The"
SELECT title, author
FROM books
WHERE title LIKE 'The%';
-- Trouver les livres ayant "Database" dans le titre
SELECT title, author, price
FROM books
WHERE title LIKE '%Database%';

Notez que LIKE est insensible à la casse dans MySQL par défaut. Si vous avez besoin d'une correspondance sensible à la casse, vous pouvez utiliser BINARY :

-- Recherche sensible à la casse
SELECT title, author
FROM books
WHERE title LIKE BINARY 'The%';

Tri des résultats avec ORDER BY

Dans cette étape, nous apprendrons à trier les résultats de nos requêtes en utilisant la clause ORDER BY. Cela nous permet d'organiser nos données dans un ordre significatif, soit croissant (ASC) soit décroissant (DESC).

Tri par une seule colonne

Commençons par un tri de base par prix :

-- Trier les livres par prix (par défaut, en ordre croissant)
SELECT title, price
FROM books
ORDER BY price;

Vous verrez les livres listés du moins cher au plus cher. Pour inverser l'ordre :

-- Trier les livres par prix en ordre décroissant
SELECT title, price
FROM books
ORDER BY price DESC;

La sortie affichera les livres les plus chers en premier :

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

Tri par plusieurs colonnes

Nous pouvons trier par plusieurs colonnes, ce qui est utile lorsque la première colonne de tri contient des valeurs dupliquées :

-- Trier par genre, puis par prix au sein de chaque genre
SELECT title, genre, price
FROM books
ORDER BY genre, price DESC;

Vous pouvez combiner des tris croissants et décroissants :

-- Trier par genre (en ordre croissant) et par prix (en ordre décroissant)
SELECT title, genre, price
FROM books
ORDER BY genre ASC, price DESC;

Limitation des résultats avec LIMIT

Dans cette étape, nous apprendrons à utiliser la clause LIMIT pour restreindre le nombre de lignes renvoyées par une requête. Cela est particulièrement utile lorsque vous travaillez avec de grands ensembles de données ou lorsque vous avez seulement besoin de voir quelques exemples.

Utilisation de base de LIMIT

Pour voir seulement les 3 livres les plus chers :

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

Vous devriez voir seulement trois lignes :

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

Utilisation de LIMIT avec décalage (offset)

LIMIT peut prendre deux nombres : le décalage (combien de lignes sauter) et le nombre (combien de lignes renvoyer) :

-- Sauter les 3 premiers livres et afficher les 3 suivants
SELECT title, price
FROM books
ORDER BY price DESC
LIMIT 3, 3;

Cela affichera le 4e, le 5e et le 6e livre le plus cher.

Un cas d'utilisation courant est la pagination. Par exemple, pour afficher la "page 2" avec 5 éléments par page :

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

Cela saute les 5 premiers résultats (page 1) et affiche les 5 suivants (page 2).

Combinaison de toutes les techniques

Mettons ensemble tout ce que nous avons appris pour créer une requête plus complexe :

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

Cette requête :

  1. Filtre les livres techniques coûtant plus de 30 dollars
  2. Les trie par prix en ordre décroissant
  3. Affiche seulement les 3 premiers résultats

Résumé

Dans ce laboratoire (lab), nous avons couvert les techniques essentielles pour filtrer et trier des données dans MySQL :

  1. Utilisation des clauses WHERE avec des opérateurs de comparaison et logiques pour filtrer les données
  2. Correspondance de motifs avec l'opérateur LIKE pour les recherches textuelles
  3. Tri des résultats en utilisant ORDER BY avec une ou plusieurs colonnes
  4. Limitation des ensembles de résultats en utilisant LIMIT et OFFSET

Ces compétences constituent la base pour une récupération et une organisation efficaces des données dans MySQL.