Filière : 2TSI3 2025/2026
TD 1 - SQL
Exercice 1 :
On souhaite gérer un petit atelier de maintenance industrielle.
1) Création des tables
Créer les tables suivantes :
— TECHNICIEN(idT, nom, prenom, specialite, date_embauche)
— INTERVENTION(idI, machine, type_panne, date_interv, duree_h, statut)
Contraintes :
— idT et idI sont des clés primaires.
— duree_h est un réel strictement positif.
— statut appartient à {’OUVERTE’, ’EN_COURS’, ’CLOTUREE’}.
— specialite appartient à {’Mecanique’, ’Electrique’, ’Automatisme’}.
2) Insertion des données
Insérer les enregistrements suivants :
Table TECHNICIEN
— (1, ’El Amrani’, ’Youssef’, ’Mecanique’, ’2023-02-10’)
— (2, ’Berrada’, ’Sara’, ’Electrique’, ’2024-09-01’)
Table INTERVENTION
— (101, ’Robot’, ’capteur temperature HS’, ’2025-10-12’, 2.5, ’OUVERTE’)
— (102, ’Convoyeur’, ’courroie detendue’, ’2025-10-15’, 4.0, ’CLOTUREE’)
3) Requêtes de sélection
Écrire les requêtes SQL suivantes :
1. Afficher toutes les interventions.
2. Afficher machine, type_panne des interventions au statut ’OUVERTE’.
3. Afficher les interventions dont la date est comprise entre ’2025-09-01’ et ’2025-12-31’.
4. Afficher les interventions dont le champ machine contient ’Robot’.
5. Afficher les techniciens de spécialité ’Electrique’.
6. Afficher les techniciens dont la spécialité n’est pas dans (’Mecanique’, ’Automatisme’).
7. Afficher les interventions de durée supérieure ou égale à 4 heures.
4) UPDATE / DELETE
1. Mettre le statut à ’EN_COURS’ pour toutes les interventions au statut ’OUVERTE’.
2. Augmenter de 0,5 heure la durée de toutes les interventions de type_panne contenant le mot ’capteur’.
3. Supprimer les interventions ’CLOTUREE’ dont la date est antérieure à ’2024-01-01’.
5) Algèbre relationnelle
On note :
T = TECHNICIEN(idT, nom, prenom, specialite, date_embauche),
I = INTERVENTION(idI, machine, type_panne, date_interv, duree_h, statut).
Donner une expression d’algèbre relationnelle pour :
1. Les noms et prénoms des techniciens de spécialité Electrique.
2. Les machines des interventions au statut OUVERTE.
3. Les machines et dates des interventions dont la date est comprise entre 2025-09-01 et 2025-12-31.
©CPGE Settat 1 Ibtihal BAILAL
Filière : 2TSI3 2025/2026
TD 1 - SQL
Exercice 2 :
On gère un petit stock de pièces détachées.
1) Création des tables
Créer :
— FOURNISSEUR(idF, nom, pays, email)
— PIECE(idP, reference, designation, categorie, prix_unitaire, quantite, actif)
Contraintes :
— email est unique.
— prix_unitaire est strictement positif.
— quantite est un entier ≥ 0.
— actif est booléen (0/1).
— categorie appartient à {’Roulement’, ’Capteur’, ’Courroie’, ’Visserie’}.
2) Insertion
Insérer les enregistrements suivants :
Table FOURNISSEUR
— (10, ’MaghrebParts’, ’Maroc’, ’contact@[Link]’)
— (11, ’IbericaTech’, ’Espagne’, ’sales@[Link]’)
Table PIECE
— (200, ’TSI-CP-019’, ’Capteur pression 0-10bar’, ’Capteur’, 180.0, 12, 1)
— (201, ’TSI-RL-105’, ’Roulement 6205’, ’Roulement’, 35.5, 0, 1)
3) Clés primaires et clés étrangères
1. Indiquer les clés primaires de chacune des tables FOURNISSEUR et PIECE.
2. Cette modélisation ne contient aucune clé étrangère. Proposer une modification minimale des tables afin
d’introduire une relation :
“Chaque pièce est fournie par un fournisseur”.
— Indiquer l’attribut à ajouter (ou modifier) et préciser la clé étrangère correspondante.
— Écrire la contrainte SQL FOREIGN KEY correspondante.
4) Sélection
1. Afficher toutes les pièces actives.
2. Afficher reference, designation, prix_unitaire des pièces de catégorie ’Capteur’.
3. Afficher les pièces dont le prix unitaire est entre 50 et 300.
4. Afficher les pièces dont la référence commence par ’TSI-’.
5. Afficher les fournisseurs dont le pays est dans (’Maroc’, ’France’, ’Espagne’).
6. Afficher les pièces dont la catégorie n’est pas dans (’Visserie’, ’Courroie’).
7. Afficher les pièces en rupture de stock.
5) UPDATE / DELETE
1. Appliquer une augmentation de 5% du prix_unitaire pour la catégorie ’Roulement’.
2. Mettre actif = 0 pour les pièces dont la quantité est égale à 0.
3. Supprimer les pièces inactives dont le prix unitaire est inférieur à 10.
©CPGE Settat 2 Ibtihal BAILAL
Filière : 2TSI3 2025/2026
TD 1 - SQL
6) Algèbre relationnelle
On note :
F = FOURNISSEUR(idF, nom, pays, email),
P = PIECE(idP, ref erence, designation, categorie, prix_unitaire, quantite, actif ).
Exprimer en algèbre relationnelle :
1. Les références et désignations des pièces de catégorie Capteur.
2. Les références des pièces dont le prix unitaire est strictement supérieur à 300.
3. Les noms et emails des fournisseurs situés au Maroc.
Exercice 3 :
On considère la table :
MESURE(idM, capteur, grandeur, valeur, unite, date_mesure)
avec :
— capteur : identifiant du capteur (ex : ’C1’, ’C2’, ’C3’)
— grandeur dans {’Temperature’, ’Pression’, ’Vibration’}
— unite (ex : ’C’, ’bar’, ’mm/s’)
1) Jeu de données
Insérer les enregistrements suivants :
— (1, ’C1’, ’Temperature’, 72.5, ’C’, ’2025-10-03’)
— (2, ’C3’, ’Pression’, 6.8, ’bar’, ’2025-10-20’)
2) Questions SQL
1. Afficher toutes les mesures.
2. Afficher les mesures de grandeur ’Temperature’.
3. Afficher les mesures dont la valeur est entre 20 et 80.
4. Afficher les mesures dont le champ capteur est dans (’C1’, ’C3’).
5. Afficher les mesures dont la grandeur n’est pas dans (’Vibration’).
6. Afficher les mesures dont l’unité contient ’bar’.
7. Afficher les mesures entre ’2025-10-01’ et ’2025-10-31’.
3) Algèbre relationnelle
On note M = MESURE(idM, capteur, grandeur, valeur, unite, date_mesure). Exprimer :
1. Les couples (capteur, valeur) des mesures de température.
2. Les dates des mesures dont la valeur est au moins 80.
3. Les capteurs ayant des mesures en octobre 2025.
©CPGE Settat 3 Ibtihal BAILAL