Algèbre Relationnelle
1 Algèbre Relationnelle
- A Relational Model of Data for Large Shared Data Banks, Edgar F. Codd, 1970
- Objectif : Modéliser une base de données ainsi que ses opérations
- Dans un SGBD relationel, tout est question de relation
2 Principaux opérateurs
Opérateur | Description |
---|---|
σ (Sélection) | Filtrer les lignes selon une condition |
π (Projection) | Sélectionner des colonnes spécifiques |
U (Union) | Combiner les lignes de deux relations |
− (Différence) | Retourner les lignes présentes dans une relation mais pas dans l’autre |
∩ (Intersection) | Trouver les lignes communes aux deux relations |
⨝ (Jointure) | Combiner deux relations basées sur une condition |
x (Produit Cartésien) | Combinaison des colonnes |
Sélection
- Permet de filtrer les lignes d’une table selon une condition
- ⚠️ Mot clé SQL associé : WHERE
SELECT *
FROM echecs.joueuse
WHERE elo < 2400;
Projection
- Permet de sélectionner certaines colonnes d’une table.
- Mot clé SQL associé : SELECT
SELECT nom,
prenomFROM echecs.joueuse;
Union
- Combine les lignes de deux tables ayant le même nombre de colonnes et des types compatibles
SELECT nom,
prenomFROM echecs.joueuse
UNION
SELECT nom,
prenomFROM echecs.joueur;
Tip
- UNION : Combine les résultats des requêtes et supprime les doublons
- UNION ALL : Combine les résultats des requêtes et garde tous les doublons
- En général, on prend les mêmes colonnes des 2 côtés
- Possible de faire plusieurs UNION
- ORDER BY à la fin : ordonne le tout
Différence
- Lignes qui se trouvent dans la première relation mais pas dans la seconde
-- Joueuses évoluant dans un club français et pas dans un club belge
SELECT nom,
prenomFROM echecs.joueuse_club_fr
EXCEPT
SELECT nom,
prenomFROM echecs.joueuse_club_be;
Imaginons que vous ayez créé 2 tables :
- joueuses évoluant dans un club français
- joueuses évoluant dans un club belge
Intersection
- Lignes communes aux deux tables
-- Joueuses évoluant dans un club francais et dans un club belge
SELECT nom,
prenomFROM echecs.joueuse_club_fr
INTERSECT
SELECT nom,
prenomFROM echecs.joueuse_club_be;
Jointure
- Permet de combiner deux tables en se basant sur une correspondance entre les colonnes
SELECT j.nom,
j.prenom,AS club
c.nom FROM echecs.joueuse j
JOIN echecs.club c USING (id_club);
Produit Cartésien
SELECT *
FROM echecs.joueuse j,
echecs.club c;-- WHERE j.id_club = c.id_club
Ancienne pratique : utilisé avant à la place des jointures