A retenir :
Fiche de Révision : Bases de Données et SQL
1. Opérations ensemblistes
Définition :
Des opérations qui permettent de combiner ou comparer deux tables :
- Union (U) : Combine deux tables pour inclure toutes les lignes (sans doublons).
- Intersection (∩) : Retourne les lignes communes aux deux tables.
- Différence (-) : Retourne les lignes présentes dans la première table mais pas dans la seconde.
Conditions : Les schémas des tables doivent être compatibles (mêmes colonnes et types).
2. Commandes SQL associées
- UNION : Combine les résultats de deux requêtes.
sql Copier le code SELECT colonne FROM table1 UNION SELECT colonne FROM table2;
- INTERSECT : Sélectionne les valeurs communes aux deux tables.
sql Copier le code SELECT colonne FROM table1 INTERSECT SELECT colonne FROM table2;
- EXCEPT : Exclut les lignes de la deuxième table.
sql Copier le code SELECT colonne FROM table1 EXCEPT SELECT colonne FROM table2;
3. Ensemble minimal d'opérations relationnelles
Pour manipuler des données, il suffit de maîtriser les opérations suivantes :
- Sélection (SELECT)
- Projection (SELECT avec colonnes spécifiques)
- Produit cartésien (CROSS JOIN)
- Union (UNION)
- Différence (EXCEPT)
- Renommage (AS)
4. Tri des résultats : ORDER BY
- ORDER BY : Trie les résultats par une ou plusieurs colonnes.
- Par défaut, le tri est croissant (ASC). Pour un tri décroissant (DESC), il faut le préciser.
- Exemple :
sql Copier le code SELECT * FROM etudiant ORDER BY nom ASC;
5. Fonctions d'agrégation
Les fonctions de groupe opèrent sur un ensemble de valeurs et retournent une seule valeur :
- AVG() : Moyenne
- COUNT() : Compte le nombre d’éléments
- SUM() : Somme des valeurs
- MIN() / MAX() : Valeur minimale ou maximale
- Exemple :
sql Copier le code SELECT AVG(note) FROM notes;
6. Grouper les résultats : GROUP BY
La clause GROUP BY
permet de regrouper les lignes par une ou plusieurs colonnes pour appliquer des fonctions d'agrégation à chaque groupe.
Exemple :
sql Copier le code SELECT idEtud, AVG(note) FROM notes GROUP BY idEtud;
Attention : Toutes les colonnes dans GROUP BY
doivent être présentes dans le SELECT
.
7. Filtrer les groupes : HAVING
La clause HAVING
permet de filtrer les résultats après la création des groupes. Elle fonctionne comme un WHERE
, mais pour les groupes.
Exemple :
sql Copier le code SELECT idEtud, AVG(note) FROM notes GROUP BY idEtud HAVING COUNT(note) >= 2;
8. Différence entre WHERE et HAVING
- WHERE : Filtre les lignes avant la création des groupes.
- HAVING : Filtre après la création des groupes.
Exemples pratiques
- Lister les étudiants et enseignants avec noms communs
sql Copier le code SELECT nom FROM enseignant INTERSECT SELECT nom FROM etudiant;
- Lister les enseignants qui ne sont pas étudiants
sql Copier le code SELECT nom FROM enseignant EXCEPT SELECT nom FROM etudiant;
Récapitulatif visuel :
OpérationDescriptionExemple SQLUNIONCombine toutes les lignesSELECT * FROM A UNION SELECT * FROM B;
INTERSECTSélectionne les lignes communesSELECT * FROM A INTERSECT SELECT * FROM B;
EXCEPTSoustrait les lignes de la deuxième tableSELECT * FROM A EXCEPT SELECT * FROM B;
GROUP BYRegroupe les lignes par critèresSELECT nom, COUNT(*) FROM table GROUP BY nom;
HAVINGFiltre après groupementHAVING COUNT(*) > 1;
ORDER BYTrie les résultatsORDER BY nom DESC;