cours SQL (Semaine 5), en incluant systématiquement la notation en algèbre
relationnelle suivie du code SQL correspondant, comme pour les exemples
suivants :
📝 Exemple 1 : SELECT * (Tout Sélectionner) Question : Afficher toutes les
informations de tous les livres. Réponse : R 1=L I V R E S
SELECT * FROM LIVRES;
📝 Exemple 2 : Projection de Colonnes Question : Afficher uniquement les titres
et les auteurs des livres. Réponse : R 2=π t it r e ,a u t e u r (L I V R E S)
SELECT titre, auteur FROM LIVRES;
📝 Exemple 3 : SELECT DISTINCT (Éliminer Doublons) Question : Afficher tous les
départements différents des étudiants. Réponse : R 3=π d e p a r t e m en t (E T U D I A N T S)
SELECT DISTINCT departement FROM ETUDIANTS;
📝 Exemple 4 : Condition Simple (Sélection) Question : Afficher les livres publiés
après 2019. Réponse : R 4=σ a n n ee> 2019 (L I V R E S)
SELECT * FROM LIVRES WHERE annee > 2019;
📝 Exemple 5 : Condition avec Égalité Question : Afficher les livres de la
catégorie INFO. Réponse : R 5=σ c o d e a t ¿ I N F O (L I V R E S)
c
′ ′
SELECT * FROM LIVRES WHERE code_cat = 'INFO';
📝 Exemple 6 : Conditions Multiples (AND) Question : Afficher les étudiants de
M2 du département INFO. Réponse : R 6=σ n i v e a u ¿ M 2 ∧ d e p a r t e m en t ¿ I N F O ( ET U D I A N T S)
′ ′ ′ ′
SELECT * FROM ETUDIANTS WHERE niveau = 'M2' AND departement = 'INFO';
📝 Exemple 7 : Conditions Multiples (OR) Question : Afficher les étudiants qui
sont soit en M2, soit du département INFO. Réponse :
R 7=σ n i v e a u ¿ M 2 ∨d e p a r t e m en t ¿ I N F O (E T U D I A N T S)
′ ′ ′ ′
SELECT * FROM ETUDIANTS WHERE niveau = 'M2' OR departement = 'INFO';
📝 Exemple 8 : Opérateurs de Comparaison Question : Afficher les emprunts
d'une durée supérieure ou égale à 14 jours. Réponse : R 8=σ d u r ee ≥14 (E M P R U N T S)
SELECT * FROM EMPRUNTS WHERE duree >= 14;
📝 Exemple 9 : Opérateur IN Question : Afficher les livres de catégorie INFO ou
MATH. Réponse : R 9=σ c o d e a t ∈¿ I N F O , M A T H }(L I V R E S)¿
c
′ ′ ′ ′
SELECT * FROM LIVRES WHERE code_cat IN ('INFO', 'MATH');
📝 Exemple 10 : Opérateur BETWEEN Question : Afficher les livres publiés entre
2018 et 2020 (inclus). Réponse : R 10=σ 2018≤ a n n ee ≤2020 ( L I V R E S )
SELECT * FROM LIVRES WHERE annee BETWEEN 2018 AND 2020;
📝 Exemple 11 : Opérateur LIKE (Recherche de motif) Question : Afficher les
livres dont le titre contient "Algèbre". Réponse : R 11=σ t i t r e LIKE % A l g è b r e % ( L I V R E S)
′ ′
SELECT * FROM LIVRES WHERE titre LIKE '%Algèbre%';
📝 Exemple 12 : Composition Projection + Sélection Question : Afficher les titres
des livres de catégorie INFO. Réponse : R 12=π t i t r e (σ c o d e a t ¿ I N F O (L I V R E S ))
c
′ ′
SELECT titre FROM LIVRES WHERE code_cat = 'INFO';
📝 Exemple 13 : Tri Croissant (ORDER BY ASC) Question : Afficher tous les livres
triés par année de publication (ordre croissant). Réponse : R 13=τ a n n e e↑ (L I V R E S)
SELECT * FROM LIVRES ORDER BY annee ASC;
📝 Exemple 14 : Tri Décroissant (ORDER BY DESC) Question : Afficher les
étudiants triés par nom en ordre alphabétique inverse. Réponse :
R 14=τ n o m ↓ (π n o m , p r e n o m ,n i v e a u (E T U D I A N T S ))
SELECT nom, prenom, niveau FROM ETUDIANTS ORDER BY nom DESC;
📝 Exemple 15 : Tri Multiple Question : Afficher les étudiants triés par niveau
(croissant), puis par nom (croissant). Réponse : R 15=τ n i v ea u ↑ , n o m ↑(E T U D I A N T S)
SELECT nom, prenom, niveau, departement FROM ETUDIANTS ORDER BY niveau
ASC, nom ASC;
📝 Exemple 16 : Limitation de Résultats (LIMIT) Question : Afficher les 3 livres
les plus récents. Réponse : R 16= λ3 (τ a n n ee ↓ (π t i t r e, a u t eu r ,a n n e e (L I V R E S )))
SELECT titre, auteur, annee FROM LIVRES ORDER BY annee DESC LIMIT 3;
Voici la suite des exemples extraits du cours SQL (Semaine 5), présentés selon le
format demandé avec la notation de l'algèbre relationnelle et le code SQL
correspondant :
📝 Exemple 17 : Jointure Interne (INNER JOIN) Question : Afficher le nom des
étudiants et le titre des livres qu'ils ont empruntés. Réponse :
R 17=π n o m ,t i t r e (E T U D I A N T S ⋈ nu m t u d i a n t=n u m t u d i a n t E M P R U N T S ⋈i s b n=i s b n L I V R E S )
e e
SELECT [Link], [Link]
FROM ETUDIANTS
JOIN EMPRUNTS ON ETUDIANTS.num_etudiant = EMPRUNTS.num_etudiant
JOIN LIVRES ON [Link] = [Link];
📝 Exemple 18 : Jointure avec Alias Question : Simplifier l'écriture de la requête
précédente en utilisant des alias pour les tables. Réponse :
SELECT [Link], [Link]
FROM ETUDIANTS e
JOIN EMPRUNTS m ON e.num_etudiant = m.num_etudiant
JOIN LIVRES l ON [Link] = [Link];
📝 Exemple 19 : Fonctions d'Agrégation (COUNT) Question : Compter le nombre
total d'étudiants inscrits. Réponse :
R 19= A G R E G A T (E T U D I A N T S ,C OU N T (¿))
SELECT COUNT(*) FROM ETUDIANTS;
📝 Exemple 20 : Agrégation avec Filtre Question : Compter le nombre de livres
publiés après 2018. Réponse : R 20= A G R E G A T (σ a n n ee>2018 (L I V R E S),C OU N T (¿))
SELECT COUNT(*) FROM LIVRES WHERE annee > 2018;
📝 Exemple 21 : Fonctions Numériques (AVG, SUM, MAX, MIN) Question :
Afficher la durée moyenne, totale, maximale et minimale des emprunts. Réponse :
R 21= A G R E G A T (E M P R U N T S , A V G(d u r e e), S U M (d u r e e), M A X (d u r e e ), M I N (d u r e e))
SELECT AVG(duree), SUM(duree), MAX(duree), MIN(duree) FROM EMPRUNTS;
📝 Exemple 22 : Groupement (GROUP BY) Question : Afficher le nombre
d'étudiants par département. Réponse :
R 22= A G R E G A T (E T U D I A N T S , d e p a r t e m e n t , C O U N T (¿))
SELECT departement, COUNT(*)
FROM ETUDIANTS
GROUP BY departement;
📝 Exemple 23 : Groupement Multiple Question : Afficher le nombre d'étudiants
par département et par niveau. Réponse :
R 23= A G R E G A T (E T U D I A N T S , d e p a r t e m e n t , ni v e au , C O U N T (¿))
SELECT departement, niveau, COUNT(*)
FROM ETUDIANTS
GROUP BY departement, niveau;
📝 Exemple 24 : Filtrage de Groupes (HAVING) Question : Afficher les
départements qui comptent plus de 2 étudiants. Réponse :
SELECT departement, COUNT(*)
FROM ETUDIANTS
GROUP BY departement
HAVING COUNT(*) > 2;
📝 Exemple 25 : Sous-requête (IN) Question : Afficher les noms des étudiants qui
ont effectué au moins un emprunt. Réponse :
R 25=π n o m (σ n u m t u d i a nt ∈π
e nu me t ud i an t ( E M P R U N T S) ( E T U D I A N T S))
SELECT nom FROM ETUDIANTS
WHERE num_etudiant IN (SELECT num_etudiant FROM EMPRUNTS);
📝 Exemple 26 : Opération UNION Question : Combiner la liste des auteurs de
livres et des noms d'étudiants (sans doublons). Réponse :
R 26=π a u t eu r (L I V R E S)∪ π n o m (E T U D I A N T S)
SELECT auteur FROM LIVRES
UNION
SELECT nom FROM ETUDIANTS;
📝 Exemple 27 : Opération INTERSECT Question : Trouver les ISBN des livres qui
sont à la fois dans la table LIVRES et dans la table EMPRUNTS. Réponse :
R 27=π i s b n (L I V R E S)∩ π i s b n (E M P RU N T S)
SELECT isbn FROM LIVRES
INTERSECT
SELECT isbn FROM EMPRUNTS;
📝 Exemple 28 : Opération EXCEPT (Différence) Question : Trouver les ISBN des
livres qui n'ont jamais été empruntés. Réponse :
R 28=π i s b n (L I V R E S )− π i s b n (E M P R U N T S)
SELECT isbn FROM LIVRES
EXCEPT
SELECT isbn FROM EMPRUNTS;