SQL (Structured Query Language) est le langage universel pour interroger des bases de données. Vous l'utilisez peut-être sans le savoir : chaque fois que vous filtrez dans Excel, triez dans un CRM ou créez un rapport, vous faites l'équivalent de SQL.
1. C'est quoi SQL ?
Imaginez une base de données comme un fichier Excel avec plusieurs onglets (tables). SQL vous permet de poser des questions à ces tables :
En langage naturel
"Montre-moi tous les clients de Paris qui ont commandé plus de 1000€ en 2024"
En SQL
SELECT * FROM clients WHERE ville = 'Paris' AND total > 1000 AND annee = 2024
Les 5 commandes à connaître absolument
Bonne nouvelle
Avec ces 5 commandes, vous pouvez résoudre 95% des besoins quotidiens d'analyse de données. Pas besoin d'être développeur.
2. SELECT : lire des données
SELECT est la commande de base pour lire des données. C'est comme dire "Montre-moi..."
Syntaxe de base
Toutes les colonnes
SELECT * FROM clients;
→ Affiche toutes les colonnes de la table clients
Colonnes spécifiques
SELECT nom, email, ville FROM clients;
→ Affiche uniquement les colonnes nom, email et ville
Limiter les résultats
SELECT * FROM clients LIMIT 10;
→ Affiche uniquement les 10 premières lignes
3. WHERE : filtrer les données
WHERE vous permet de filtrer les lignes selon des conditions. C'est l'équivalent des filtres Excel.
Conditions courantes
Égalité simple
SELECT * FROM clients WHERE ville = 'Paris';
Comparaisons numériques
SELECT * FROM commandes WHERE montant > 1000;
Conditions multiples (ET)
SELECT * FROM clients WHERE ville = 'Paris' AND age > 30;
Conditions multiples (OU)
SELECT * FROM clients WHERE ville = 'Paris' OR ville = 'Lyon';
Recherche textuelle
SELECT * FROM clients WHERE email LIKE '%@gmail.com';
→ Trouve tous les emails Gmail (% = n'importe quoi)
Liste de valeurs
SELECT * FROM clients
WHERE ville IN ('Paris', 'Lyon', 'Marseille');Opérateurs de comparaison
=égal>supérieur<inférieur>=supérieur ou égal<=inférieur ou égal!=différent4. JOIN : croiser plusieurs tables
Les données sont souvent réparties dans plusieurs tables. JOIN permet de les croiser. C'est l'équivalent du VLOOKUP dans Excel.
Exemple concret
Situation
Vous avez 2 tables :
- commandes (id, client_id, montant, date)
- clients (id, nom, email, ville)
Vous voulez afficher les commandes avec le nom du client.
SELECT commandes.id, clients.nom, clients.email, commandes.montant, commandes.date FROM commandes JOIN clients ON commandes.client_id = clients.id;
Explication ligne par ligne
- •
SELECT ...: choix des colonnes à afficher - •
FROM commandes: table principale - •
JOIN clients: table à croiser - •
ON ...: condition de jointure (quelle colonne relie les 2 tables)
Types de JOIN
INNER JOINPar défaut, le plus courantNe garde que les lignes qui ont une correspondance des deux côtés
LEFT JOINPour ne rien perdre de la table principaleGarde toutes les lignes de la table de gauche, même sans correspondance
RIGHT JOINPeu utilisé en pratiqueGarde toutes les lignes de la table de droite
5. Agrégations et GROUP BY
Pour calculer des totaux, moyennes, comptages... utilisez les fonctions d'agrégation. C'est l'équivalent des tableaux croisés dynamiques Excel.
Fonctions d'agrégation courantes
COUNT(*)Compte le nombre de lignes
SUM(montant)Somme des montants
AVG(montant)Moyenne des montants
MAX(montant)Montant maximum
MIN(montant)Montant minimum
Exemples pratiques
Nombre total de clients
SELECT COUNT(*) FROM clients;
Chiffre d'affaires total
SELECT SUM(montant) FROM commandes;
CA par ville (GROUP BY)
SELECT ville, COUNT(*) as nb_clients, SUM(montant) as ca_total FROM clients JOIN commandes ON clients.id = commandes.client_id GROUP BY ville ORDER BY ca_total DESC;
→ Regroupe par ville, calcule nb clients et CA, trie par CA décroissant
Règle importante
Quand vous utilisez GROUP BY, toutes les colonnes du SELECT doivent soit être dans le GROUP BY, soit être dans une fonction d'agrégation (COUNT, SUM...).
6. Exercices pratiques
Testez vos connaissances avec ces exercices. Essayez de les résoudre avant de regarder les solutions.
Exercice 1 : Afficher tous les clients de Paris ou Lyon
SELECT * FROM clients
WHERE ville IN ('Paris', 'Lyon');Exercice 2 : Compter le nombre de commandes supérieures à 500€
SELECT COUNT(*) FROM commandes WHERE montant > 500;
Exercice 3 : Afficher le top 10 des clients par montant total de commandes
SELECT clients.nom, SUM(commandes.montant) as total FROM clients JOIN commandes ON clients.id = commandes.client_id GROUP BY clients.id, clients.nom ORDER BY total DESC LIMIT 10;
Exercice 4 : Calculer le panier moyen par ville
SELECT ville, AVG(montant) as panier_moyen FROM clients JOIN commandes ON clients.id = commandes.client_id GROUP BY ville ORDER BY panier_moyen DESC;
Pour aller plus loin
- • SQLBolt : tutoriels interactifs gratuits
- • Mode Analytics SQL Tutorial : exemples business
- • Metabase : interface visuelle pour écrire du SQL
Conclusion
Félicitations ! Vous maîtrisez maintenant les bases du SQL. Avec SELECT, WHERE, JOIN et GROUP BY, vous pouvez résoudre la majorité de vos besoins d'analyse de données.
La clé maintenant : pratiquer. Chaque fois que vous avez une question sur vos données, essayez de l'écrire en SQL. Vous progresserez rapidement.