Filière : 2TSI 2025/2026
TD 2 - SQL
Problème I – Session 2024 – Filière PSI
Structure de la table Fleurs
La table Fleurs contient des informations sur plusieurs fleurs. Cette table est composée de six champs :
— Le champ codF contient un entier unique permettant d’identifier chaque fleur ;
— Le champ long_sépale contient la longueur du sépale de la fleur ;
— Le champ larg_sépale contient la largeur du sépale de la fleur ;
— Le champ long_pétale contient la longueur du pétale de la fleur ;
— Le champ larg_pétale contient la largeur du pétale de la fleur ;
— Le champ cluster contient un entier qui représente le cluster de la fleur.
codF long_sépale larg_sépale long_pétale larg_pétale cluster
0 4.5 2.3 1.3 0.3 1
1 6.9 3.1 5.1 2.3 2
2 5.7 2.5 5.0 2.0 0
3 5.1 3.5 1.4 0.3 1
4 6.9 3.1 4.9 1.5 2
5 5.6 3.0 4.1 1.3 0
6 5.9 3.0 4.2 1.5 0
7 6.2 3.4 5.4 2.3 2
8 5.4 3.4 1.5 0.4 1
Questions
Q.1 Écrire, en algèbre relationnelle, une requête qui donne pour résultat les longueurs et les largeurs des sépales, les
longueurs et les largeurs des pétales des fleurs du cluster 1 et des fleurs du cluster 2.
Q.2 Écrire, en langage SQL, une requête qui donne pour résultat les longueurs et les largeurs des sépales, les longueurs
et les largeurs des pétales des fleurs du cluster 0 et des fleurs du cluster 2, triés dans l’ordre décroissant des
longueurs des sépales.
Q.3 Écrire une requête SQL qui donne pour résultat la moyenne des longueurs des sépales, la plus grande largeur
des sépales, la plus petite longueur des pétales et le compte des différents clusters.
Q.4 Écrire une requête SQL qui donne pour résultat les différents clusters, la longueur du pétale du centroïde de
chaque cluster, triés dans l’ordre croissant des clusters.
Q.5 Écrire une requête SQL qui donne pour résultat les différents clusters, le compte de fleurs dans chaque cluster.
Le compte des fleurs doit être composé d’au moins 4 chiffres et se termine par le chiffre 0. Le résultat doit être
trié dans l’ordre décroissant des comptes de fleurs.
Problème II – Session 2019 – Filière TSI
On considère la base de données relationnelle composée de deux tables : la table Pays et la table Villes.
Structure des tables :
Table Pays :
— Le champ code contient un code unique pour chaque pays ;
— Le champ nom_pays contient le nom de chaque pays ;
— Le champ superficie contient la superficie de chaque pays, exprimée en Km2 ;
— Le champ continent contient le continent de chaque pays.
Exemples d’enregistrements dans la table Pays :
code nom_pays superficie continent
MAR Maroc 446550 Afrique
DEU Allemagne 357386 Europe
ITA Italie 301338 Europe
ARG Argentine 2780000 Amérique
RUS Russie 17100000 Asie
©CPGE - Settat 1 Ibtihal BAILAL
Filière : 2TSI 2025/2026
TD 2 - SQL
Table Villes :
— Le champ cod_ville contient un code unique pour chaque ville ;
— Le champ nom_ville contient le nom des villes ;
— Le champ cod_pays contient le code du pays de chaque ville.
Exemples d’enregistrements dans la table Villes :
cod_ville nom_ville cod_pays
CIA Rome ITA
CMN Casablanca MAR
SVO Moscou RUS
RAK Marrakech MAR
TXL Berlin DEU
Questions :
Q.1 Déterminer les clés primaires et les clés étrangères dans les tables Pays et Villes. Justifier votre réponse.
Q.2 Écrire, en algèbre relationnelle, la requête qui donne le résultat suivant : Les noms et les superficies des pays du
continent “Europe”.
Écrire, en langage SQL, les requêtes qui donnent les résultats suivants :
Q.3 Les noms des villes, sans répétition, dans lesquelles le caractère “m” se trouve à la 2ème et à la dernière
position. Exemple : Amsterdam.
Q.4 Les codes et les noms des villes du pays “Espagne”, triés dans l’ordre alphabétique des noms des villes.
Q.5 Les noms des pays, et le nombre de villes dans chaque pays, ayant le nombre de villes compris strictement entre
100 et 1000, triés dans l’ordre décroissant des nombres de villes.
Q.6 Dans certains pays, on peut trouver une ville ayant le même nom que celui de son pays. Donner les noms de ces
pays.
Q.7 Supprimer toutes les villes du pays “Belgique”.
Problème III – Session 2021 – Filière TSI
Dans le but de suivre l’évolution de la pandémie du Covid-19 dans chaque pays, on propose d’utiliser une base de
données composée de 3 tables : Pays, Villes et Quotidien.
a- Structure de la table Pays :
La table Pays est composée de trois champs :
— Le champ codPays de type texte. Ce champ représente la clé primaire de la table Pays.
— Le champ nom de type texte, contient le nom de chaque pays.
Exemples :
codPays nom
DEU Allemagne
FRA France
ESP Espagne
ARN Suède
ITA Italie
b- Structure de la table Villes :
La table Villes est composée de 4 champs :
— Le champ codVille de type texte. Il représente la clé primaire de la table Ville.
— Le champ nom de type texte, il contient le nom de chaque ville.
— Le champ population de type entier, il contient le nombre de personnes dans chaque ville.
— Le champ codP de type texte, il contient le code du pays de chaque ville.
Exemples :
©CPGE - Settat 2 Ibtihal BAILAL
Filière : 2TSI 2025/2026
TD 2 - SQL
codVille nom population codP
CIA Rome 2 844 395 ITA
NAP Napoli 954 244 ITA
PAR Paris 2 148 271 FRA
TXL Berlin 3 748 148 DEU
LYS Lyon 1 669 730 FRA
c- Structure de la table Quotidien :
La table Quotidien est composée de 5 champs :
— Le champ jour de type date, il contient la date de chaque jour.
— Le champ infectés de type entier, il contient le nombre de nouveaux cas de personnes infectées par le virus,
chaque jour dans chaque ville.
— Le champ rétablis de type entier, il contient le nombre de nouveaux cas de personnes guéries du virus, chaque
jour dans chaque ville.
— Le champ décédés de type entier, il contient le nombre de nouveaux cas de personnes décédées à cause du virus,
chaque jour dans chaque ville.
— Le champ codV de type texte, il contient les codes des villes.
Exemples :
jour infectés rétablis décédés codV
2020-07-15 4653 3458 172 CIA
2020-07-15 6074 4892 493 TXL
2020-07-15 1762 2059 651 LYS
2020-07-16 3721 5973 85 CIA
Questions
Q.1 Le jour du 17/09/2020, la ville de code TXL a enregistré 2513 nouveaux cas de personnes infectées, 2847
nouveaux cas de personnes rétablies, et 65 nouveaux cas de personnes décédées.
Écrire, en langage SQL, la requête qui ajoute cet enregistrement dans la table Quotidien.
Q.2 Écrire, en langage SQL, la requête qui donne pour résultat, le compte des villes qui ont enregistré des nombres
de nouveaux cas de personnes infectées, composés d’au moins 5 chiffres, et ce le jour du 27/08/2020.
Q.3 Écrire, en langage SQL, la requête qui donne pour résultat, le nombre de nouveaux cas de personnes infectées,
le nombre de nouveaux cas de personnes rétablies et le nombre de nouveaux cas de personnes décédées, chaque
jour du mois de Septembre 2020, dans toutes les villes du pays Italie.
Q.4 Écrire, en algèbre relationnelle, la requête de la question Q.3.
Q.5 Le taux d’incidence TI pour une ville est égal au nombre de nouveaux cas de personnes infectées dans cette ville,
pendant une période donnée, divisé par la population de cette ville. Le TI s’exprime en nombre de personnes
pour 100 000 personnes.
Écrire, en langage SQL, la requête qui donne pour résultat, les codes des pays, les noms des villes et le TI de
chaque ville, pendant l’année 2020, tels que TI est compris entre 500 et 1000, triés dans l’ordre croissant du
TI.
Q.6 Le taux de guérison TG pour un pays est égal au nombre total de personnes rétablies dans ce pays, divisé par
le nombre total de personnes infectées dans ce même pays. Le TG s’exprime en pourcentage.
Écrire, en langage SQL, la requête qui donne pour résultat, les noms des pays et le TG pour chaque pays, tels
que TG > 70%, triés dans l’ordre décroissant du TG.
Q.7 Le taux de mortalité TM pour une ville est égal au nombre total de personnes décédées dans cette ville, divisé
par le nombre total de personnes infectées dans cette même ville. Le TM s’exprime en pourcentage.
Écrire, en langage SQL, la requête qui donne pour résultat, les noms des pays, le plus petit TM, le plus grand
TM et la moyenne des TM des villes dans chaque pays, triés dans l’ordre croissant du nombre de villes dans
chaque pays.
©CPGE - Settat 3 Ibtihal BAILAL