Parfait !
Voici un résumé clair et illustré des types de jointures SQL (JOIN) avec des
exemples concrets :
🔗 Qu’est-ce qu’une jointure ?
Une jointure permet de lier plusieurs tables dans une même requête pour croiser les données.
Exemple :
• Table employes : contient id, nom, departement_id
• Table departements : contient id, nom
1. ✅ INNER JOIN : seulement les correspondances
SELECT e.nom, d.nom
FROM employes e
INNER JOIN departements d ON e.departement_id = d.id;
Résultat : liste des employés qui ont un département assigné.
2. ⬅️ LEFT JOIN (ou LEFT OUTER JOIN) : tous les enregistrements de gauche +
correspondances à droite
SELECT e.nom, d.nom
FROM employes e
LEFT JOIN departements d ON e.departement_id = d.id;
Résultat : tous les employés, même ceux sans département (valeurs NULL pour d.nom).
3. ➡️ RIGHT JOIN (ou RIGHT OUTER JOIN) : tous les enregistrements de droite + ceux qui
correspondent à gauche
SELECT e.nom, d.nom
FROM employes e
RIGHT JOIN departements d ON e.departement_id = d.id;
Résultat : tous les départements, même ceux sans employés.
4. 🌐 FULL JOIN (ou FULL OUTER JOIN) : tous les enregistrements des deux côtés, avec ou
sans correspondance
SELECT e.nom, d.nom
FROM employes e
FULL JOIN departements d ON e.departement_id = d.id;
Résultat : tous les employés + tous les départements, même sans lien.
(Souvent non disponible par défaut dans MySQL – il faut parfois le simuler avec UNION)
5. 🪞 SELF JOIN : joindre une table avec elle-même
SELECT a.nom AS employe, b.nom AS superviseur
FROM employes a
JOIN employes b ON a.superviseur_id = b.id;
Pratique pour des relations hiérarchiques (ex: employés et superviseurs).
Souhaites-tu que je crée un exemple complet avec des données réelles et le résultat attendu ?
🔍 1. Sélectionner des données
SELECT colonne1, colonne2 FROM table;
• SELECT * FROM utilisateurs; → sélectionne toutes les colonnes.
• SELECT nom, email FROM clients;
🎯 2. Filtrer les résultats
SELECT * FROM table WHERE condition;
• SELECT * FROM produits WHERE prix > 100;
• SELECT * FROM employés WHERE poste = 'Manager';
Opérateurs utiles : =, >, <, >=, <=, !=, LIKE, IN, BETWEEN, IS NULL
🔢 3. Trier les résultats
SELECT * FROM table ORDER BY colonne [ASC|DESC];
• SELECT * FROM articles ORDER BY date DESC;
📊 4. Regrouper des données
SELECT colonne, COUNT(*) FROM table GROUP BY colonne;
• SELECT pays, COUNT(*) FROM clients GROUP BY pays;
🚫 5. Filtrer des groupes
SELECT colonne, COUNT(*) FROM table GROUP BY colonne HAVING COUNT(*) > 5;
• HAVING s’utilise après GROUP BY, contrairement à WHERE.
➕ 6. Insérer des données
INSERT INTO table (col1, col2) VALUES (val1, val2);
• INSERT INTO utilisateurs (nom, email) VALUES ('Alice',
'
[email protected]');
📝 7. Mettre à jour des données
UPDATE table SET col1 = val1 WHERE condition;
• UPDATE produits SET prix = 20 WHERE id = 5;
❌ 8. Supprimer des données
DELETE FROM table WHERE condition;
• DELETE FROM commandes WHERE date < '2024-01-01';
🔗 9. Faire des jointures
SELECT * FROM table1
JOIN table2 ON table1.col = table2.col;
Types de jointures :
• INNER JOIN : lignes qui correspondent dans les deux tables.
• LEFT JOIN : toutes les lignes de gauche + celles qui correspondent à droite.
• RIGHT JOIN : inverse du LEFT JOIN.
• FULL JOIN (si supporté) : toutes les lignes, même sans correspondance.
🧩 10. Sous-requêtes
SELECT * FROM produits
WHERE prix > (SELECT AVG(prix) FROM produits);
• Permet d’utiliser une requête dans une autre requête.
Souhaites-tu que je t'écrive un petit exercice pratique avec une base fictive ?