
🚀 SQL Express : La Cheat Sheet Ultime pour les Magiciens de la Base de Données ! 🧙♂️
Salut les jeunes geeks du futur ! Votre Prof préféré, le Dr. Data, est là pour vous guider dans le monde fascinant du SQL (prononcé “S-Q-L” ou “Sequel”, c’est comme vous voulez, tant que vous parlez la langue des bases de données !).
Le SQL, c’est le Structured Query Language. En gros, c’est le langage secret que vous utilisez pour parler à une base de données. Imaginez que la base de données est une immense bibliothèque super bien rangée avec des millions de livres (vos données). SQL, c’est votre guide vocal personnel qui sait exactement où trouver les infos, comment les trier et même faire des résumés !
Aujourd’hui, on va explorer les commandes SQL les plus importantes, comme des super-pouvoirs pour extraire l’information. Accrochez-vous, c’est parti pour le niveau supérieur !
📚 Nos Tables d’Exemple (Le Royaume du Pixel)
Pour que ce soit plus concret, on va imaginer qu’on gère la base de données d’un magasin de jeux vidéo, “Le Royaume du Pixel”. On a deux tables principales :
1. jeux (Les Infos sur nos jeux)
| id_jeu | titre | genre | prix | stock | id_editeur |
|---|---|---|---|---|---|
| 1 | Cyberpunk 2077 | RPG | 59.99 | 15 | 101 |
| 2 | FIFA 24 | Sport | 69.99 | 30 | 102 |
| 3 | Zelda: TotK | Aventure | 64.99 | 20 | 103 |
| 4 | Mario Kart 8 | Course | 49.99 | 25 | 103 |
| 5 | Assassin’s Creed | Aventure | 29.99 | 10 | 104 |
| 6 | Stardew Valley | Simulation | 19.99 | 50 | 105 |
| 7 | Elden Ring | RPG | 59.99 | 12 | 104 |
| 8 | Among Us | Party | 9.99 | 100 | 106 |
2. editeurs (Les Infos sur les entreprises qui font les jeux)
| id_editeur | nom_editeur | pays |
|---|---|---|
| 101 | CD Projekt | Pologne |
| 102 | EA Sports | USA |
| 103 | Nintendo | Japon |
| 104 | Ubisoft | France |
| 105 | ConcernedApe | USA |
| 106 | Innersloth | USA |
✨ Les Commandes Essentielles : Votre Boîte à Outils SQL !
1. SELECT : Le “Quoi ?” 🧐
C’est la première chose que vous écrivez. Vous lui dites quelles colonnes (quelles informations) vous voulez voir.
SELECT *: Je veux TOUTES les colonnes. C’est le mode “donnez-moi tout ce que vous avez”.SELECT colonne1, colonne2: Je veux seulement ces colonnes spécifiques.
Exemple : Je veux voir les titres et les prix de tous les jeux.
SELECT titre, prix
FROM jeux;
Résultat :
| titre | prix |
|---|---|
| Cyberpunk 2077 | 59.99 |
| FIFA 24 | 69.99 |
| Zelda: TotK | 64.99 |
| … | … |
2. FROM : Le “Où ?” 📍
Après SELECT, vous dites à SQL de quelle table vous voulez extraire les données. C’est comme pointer du doigt le bon rayon dans votre bibliothèque géante.
Exemple :
Je veux toutes les informations, mais seulement de la table jeux.
SELECT *
FROM jeux;
Résultat : Toutes les colonnes et toutes les lignes de la table jeux.
3. WHERE : Le “Avec quelles conditions ?” 🤔 (Le filtre magique !)
C’est votre super-filtre ! Vous l’utilisez pour ne garder que les lignes (les enregistrements) qui remplissent une ou plusieurs conditions. C’est comme dire : “Donne-moi seulement les livres qui parlent de dragons ET qui ont plus de 300 pages.”
Opérateurs de comparaison courants :
=: Égal à!=ou<>: Différent de>: Plus grand que<: Plus petit que>=: Plus grand ou égal à<=: Plus petit ou égal à
Exemple simple : Je veux les jeux dont le prix est inférieur à 50€.
SELECT titre, prix
FROM jeux
WHERE prix < 50;
Résultat :
| titre | prix |
|---|---|
| Mario Kart 8 | 49.99 |
| Assassin’s Creed | 29.99 |
| Stardew Valley | 19.99 |
| Among Us | 9.99 |
Opérateur LIKE : Le détective des chaînes de caractères 🕵️♀️
Utilisé pour rechercher un modèle dans une colonne de texte.
%: Représente zéro, un ou plusieurs caractères inconnus._: Représente un seul caractère inconnu.
Exemple avec LIKE :
Je veux tous les jeux dont le titre contient “Mario”.
SELECT titre
FROM jeux
WHERE titre LIKE '%Mario%';
Résultat :
| titre |
|---|
| Mario Kart 8 |
Opérateurs Logiques : AND, OR (Quand tu as plusieurs conditions)
AND: Toutes les conditions DOIVENT être vraies. (Condition1 ET Condition2)OR: AU MOINS une des conditions DOIT être vraie. (Condition1 OU Condition2)
Exemple avec AND :
Je veux les jeux de “Aventure” ET qui coûtent plus de 60€.
SELECT titre, genre, prix
FROM jeux
WHERE genre = 'Aventure' AND prix > 60;
Résultat :
| titre | genre | prix |
|---|---|---|
| Zelda: TotK | Aventure | 64.99 |
Exemple avec OR :
Je veux les jeux de “Sport” OU les jeux de “Party”.
SELECT titre, genre
FROM jeux
WHERE genre = 'Sport' OR genre = 'Party';
Résultat :
| titre | genre |
|---|---|
| FIFA 24 | Sport |
| Among Us | Party |
4. ORDER BY : Le “Comment je les trie ?” 📋
Pour trier vos résultats, comme ranger votre collection de jeux par ordre alphabétique ou par prix.
ASC: Ordre Ascendant (A-Z, 0-9). C’est la valeur par défaut si vous ne précisez rien.DESC: Ordre Descendant (Z-A, 9-0).
Exemple : Je veux tous les jeux, triés par prix du moins cher au plus cher.
SELECT titre, prix
FROM jeux
ORDER BY prix ASC; -- ou juste ORDER BY prix;
Résultat :
| titre | prix |
|---|---|
| Among Us | 9.99 |
| Stardew Valley | 19.99 |
| Assassin’s Creed | 29.99 |
| … | … |
Exemple avec DESC :
Je veux les jeux triés par stock, du plus grand stock au plus petit.
SELECT titre, stock
FROM jeux
ORDER BY stock DESC;
Résultat :
| titre | stock |
|---|---|
| Among Us | 100 |
| Stardew Valley | 50 |
| FIFA 24 | 30 |
| … | … |
5. LIMIT : Le “Combien je veux en voir ?” 🤏
Idéal si vous voulez seulement les “top X” ou les “premiers Y” résultats. C’est comme demander seulement les 5 premiers résultats de recherche Google.
Exemple : Je veux les 3 jeux les plus chers.
SELECT titre, prix
FROM jeux
ORDER BY prix DESC
LIMIT 3;
Résultat :
| titre | prix |
|---|---|
| FIFA 24 | 69.99 |
| Zelda: TotK | 64.99 |
| Cyberpunk 2077 | 59.99 |
6. DISTINCT : Le “Pas de doublons, s’il vous plaît !” 🚫
Si vous voulez voir toutes les valeurs uniques d’une colonne. Par exemple, quels sont TOUS les genres de jeux disponibles, sans les répéter.
Exemple : Je veux la liste des genres de jeux disponibles.
SELECT DISTINCT genre
FROM jeux;
Résultat :
| genre |
|---|
| RPG |
| Sport |
| Aventure |
| Course |
| Simulation |
| Party |
7. AS : Le “Renommer pour que ce soit plus joli !” 🏷️
Utilisé pour donner un alias (un surnom) temporaire à une colonne ou une table. Super pratique pour rendre vos résultats plus lisibles ou pour simplifier des noms de colonnes compliqués.
Exemple :
Affichez le titre du jeu et renommez la colonne prix en Prix_en_Euros.
SELECT titre, prix AS Prix_en_Euros
FROM jeux;
Résultat :
| titre | Prix_en_Euros |
|---|---|
| Cyberpunk 2077 | 59.99 |
| FIFA 24 | 69.99 |
| … | … |
8. JOIN : Les “Mariages” de Tables ! 🤝
C’est là que ça devient super intéressant ! JOIN permet de combiner des lignes de deux ou plusieurs tables basées sur une colonne commune (souvent une clé étrangère). C’est comme quand vous assemblez les données d’un jeu avec celles de son éditeur pour avoir toutes les infos au même endroit.
L’ INNER JOIN (le plus courant) ne retourne que les lignes où il y a une correspondance dans les deux tables.
Exemple : Affichez le titre du jeu et le nom de son éditeur.
SELECT j.titre, e.nom_editeur
FROM jeux AS j -- On donne un alias 'j' à la table jeux pour simplifier
INNER JOIN editeurs AS e ON j.id_editeur = e.id_editeur;
Exemple décortiqué :
FROM jeux AS j: On commence par la tablejeux, on l’appellejpour faire court.INNER JOIN editeurs AS e: On veut joindre la tableediteurs, qu’on appellee.ON j.id_editeur = e.id_editeur: La magie opère ici ! On dit à SQL de lier les lignes des deux tables là où l’id_editeurest le même dans les deux tables.
Résultat :
| titre | nom_editeur |
|---|---|
| Cyberpunk 2077 | CD Projekt |
| FIFA 24 | EA Sports |
| Zelda: TotK | Nintendo |
| Mario Kart 8 | Nintendo |
| Assassin’s Creed | Ubisoft |
| Stardew Valley | ConcernedApe |
| Elden Ring | Ubisoft |
| Among Us | Innersloth |
9. Fonctions d’Agrégation : Les “Calculatrices” de Groupes ! 🧮
Ces fonctions effectuent un calcul sur un ensemble de lignes et retournent une seule valeur. Parfait pour les statistiques !
COUNT(): Compte le nombre de lignes (ou de valeurs non nulles dans une colonne).COUNT(*): Compte toutes les lignes.COUNT(colonne): Compte les valeurs non nulles danscolonne.
SUM(): Calcule la somme des valeurs d’une colonne numérique.AVG(): Calcule la moyenne des valeurs d’une colonne numérique.MIN(): Trouve la valeur minimale d’une colonne.MAX(): Trouve la valeur maximale d’une colonne.
Exemple COUNT :
Combien y a-t-il de jeux dans notre magasin ?
SELECT COUNT(*) AS NombreDeJeux
FROM jeux;
Résultat :
| NombreDeJeux |
|---|
| 8 |
Exemple SUM et AVG :
Quel est le stock total de tous les jeux, et quel est le prix moyen d’un jeu ?
SELECT SUM(stock) AS StockTotal, AVG(prix) AS PrixMoyen
FROM jeux;
Résultat :
| StockTotal | PrixMoyen |
|---|---|
| 262 | 45.74875 |
GROUP BY (pour agréger par catégorie)
Quand vous utilisez une fonction d’agrégation et que vous voulez appliquer ce calcul pour chaque catégorie d’une colonne.
Exemple :
Quel est le prix moyen par genre de jeu ?
SELECT genre, AVG(prix) AS PrixMoyenParGenre
FROM jeux
GROUP BY genre;
Résultat :
| genre | PrixMoyenParGenre |
|---|---|
| RPG | 59.99 |
| Sport | 69.99 |
| Aventure | 47.49 |
| Course | 49.99 |
| Simulation | 19.99 |
| Party | 9.99 |
10. HAVING : Le “Filtrer les Groupes” 🤯 (Le WHERE des fonctions d’agrégation !)
Attention, petit piège de pro ici ! Vous utilisez WHERE pour filtrer les lignes avant le GROUP BY. Mais si vous voulez filtrer les résultats après qu’ils aient été regroupés et qu’un calcul d’agrégation a été fait, alors c’est HAVING qu’il vous faut !
Exemple : Quels sont les genres de jeux dont le prix moyen est supérieur à 50€ ?
SELECT genre, AVG(prix) AS PrixMoyenParGenre
FROM jeux
GROUP BY genre
HAVING AVG(prix) > 50;
Exemple décortiqué :
SELECT genre, AVG(prix) AS PrixMoyenParGenre FROM jeux: On veut le genre et son prix moyen.GROUP BY genre: On calcule le prix moyen pour CHAQUE genre.HAVING AVG(prix) > 50: Puis, on filtre ces résultats groupés pour ne garder que ceux dont lePrixMoyenParGenreest supérieur à 50.
Résultat correct :
| genre | PrixMoyenParGenre |
|---|---|
| RPG | 59.99 |
| Sport | 69.99 |
🏁 Bravo, vous êtes un Super-SQL-Héro !
Voilà, vous avez maintenant une boîte à outils SQL bien remplie ! N’oubliez pas : la meilleure façon d’apprendre, c’est de pratiquer. Essayez de créer vos propres requêtes, de jouer avec les données, et vous verrez, très vite, vous parlerez couramment le langage des bases de données.
Si vous avez des questions, mon badge de Professeur Data est toujours activé ! Keep querying, keep learning ! 😉