Vous êtes sur la page 1sur 41

Base de

données
Rappel de cours

Intérêts et avantages de l’utilisation d’une BD


La centralisation Les données sont regroupées dans une structure centrale pour éviter les
redondances et les incohérences des données.
Indépendance Assurer une Indépendance entre données sur disque et utilisateurs
Programme/données (programmes, humains).
Intégration des liaisons les relations entre les données font partie de la base de données et non
entre les données pas des programmes comme le cas de l'organisation en fichiers.
les données doivent être cohérentes entre elles, de plus lorsque des
Intégrité des données
éléments font référence à d'autres, ces derniers doivent être présents.
(ou concurrence d'accès) : les données sont utilisées par beaucoup
Partage de données d’utilisateurs. Chacun doit avoir l’impression qu’il est seul mais les
données doivent rester cohérentes.
Définition d’un SGBD
Un système de gestion de base de données SGBD est un logiciel (ensemble des procédures partagées
par tous les utilisateurs) permettant de décrire, modifier, interroger et administrer une BD.
Fonctions d’un SGBD
un SGBD permet de créer et de décrire les objets d’une Bd à savoir les
Définition de données tables, les utilisateurs, les liens... grâce à un langage de définition de
donnée(LDD).
une manipulation de données peut être un ajout, une modification, une
Manipulation des consultation, une suppression.
données Le SGBD permet d’effectuer ces manipulations grâce à un langage de
manipulation de donnée(LMD).
ce sont des opérations que le SGBD effectue afin d’assurer la cohérence
Intégrité des données des données.

La gestion des accès une base de données étant multiutilisateur. Le SGBD gère l’accès
concurrents simultané à la BD.
le SGBD permet de gérer les droits d’accès à la base : droit de
La confidentialité
consultation, de modification, de mise à jour…..
La sécurité de le SGBD fournis des mécanismes afin d’assurer la sécurité et la reprise
fonctionnement après panne.
Notion de contrainte d’intégrité :
Une contrainte d’intégrité est une règle appliquée à une colonne ou à une table et qui doit être
toujours vérifiée.
Les contraintes de Elles permettent de fixer le caractère obligatoire ou pas d’une colonne et
domaines les règles de validité des valeurs qui peuvent être prises par cette colonne.
Les contraintes Elles permettent de s’assurer que chaque table à une clé primaire.
d’intégrité de tables
Elles permettent de s’assurer que les valeurs introduites dans une
Les contraintes colonne figurent dans une autre colonne en tant que clé primaire. La
d’intégrité référentielles suppression d’un enregistrement d’une table mère A utilisé par une table
fille B est interdite.

-2-
Langage SQL

Manipulation d’une base en mode SQL


Langage de manipulation des données LMD
Insertion INSERT INTO nom_table (colonne1, colonne2,….) VALUES (valeur1,
d’une ligne valeur2, …) ;

Modification UPDATE nom_table SET colonne1=valeur1, colonne2=valeur2, ….


d’une ligne WHERE critère(s) ;

Suppression DELETE FROM nom_table WHERE critère;


d’une ligne
Projection SELECT [DISTINCT] */colonne1, colonne2… FROM nom_table;
Sélection SELECT [DISTINCT] */colonne1, colonne2… FROM nom_table WHERE
critère(s) ;
Dans le critère on peut utiliser les expressions suivantes :
-Les opérateurs de comparaison : =, >, <, >=, <= et <>
-L’opérateur BETWEEN pour les intervalles, borne incluses (BETWEEN 10 AND 20).
-L’opérateur IN pour les listes de valeurs (IN (7,9,23)).
-L’opérateur ISNULL et ISNOTNUUL (solde IS NOT NULL).
-L’opérateur LIKE pour filtrer une chaîne de caractère (% remplace plusieurs caractère _ remplace
un caractère) (nom LIKE ‘a%’ tous les noms qui commence par ‘a’).
-Les opérateurs logiques AND, OR et NOT.
Jointure SELECT [DISTINCT] */colonne1, colonne2… FROM nom_table1[alias],
nom_table2[alias],… WHERE critère(s) ;
SELECT [DISTINCT] */colonne1, colonne2… FROM nom_table1[alias],
Tri nom_table2[alias],… WHERE critère(s) ORDER BY non_colonne1
[ASC/DESC][, nom_colonne2[ASC/DESC],…] ;
-La fonction COUNT qui sert à compter le nombre de lignes du résultat obtenu
par la requête SELECT.
Fonctions de -La fonction SUM qui sert à faire la somme des valeurs d’une colonne dont le
type est numérique.
calculs -La fonction MIN qui sert à déterminer la valeur minimale d’une colonne.
-La fonction MAX qui sert à déterminer la valeur maximale d’une colonne.
-La fonction AVG qui sert à déterminer ma moyenne des valeurs numérique
d’une colonne.
La commande GROUP BY est utilisée en SQL pour grouper plusieurs résultats et utiliser
une fonction de totaux sur un groupe de résultat.
De façon générale, la commande GROUP BY s’utilise de la façon suivante
SELECT colonne1, fonction(colonne2) FROM table GROUP BY colonne1 ;
GROUP BY Exemple :
Pour obtenir le coût total de chaque client en regroupant les commandes des mêmes
clients, il faut utiliser la requête suivante :
SELECT client, SUM(tarif) FROM achat GROUP BY client ;
La condition HAVING en SQL est presque similaire à WHERE à la seule différence que
HAVING permet de filtrer en utilisant des fonctions telles que SUM(), COUNT(),
AVG(), MIN() ou MAX().
HAVING L’utilisation de HAVING s’utilise de la manière suivante :
SELECT colonne1, SUM(colonne2) FROM nom_table GROUP BY colonne1
HAVING fonction(colonne2) operateur valeur ;

-3-
Langage SQL

Exemple :
Si dans cette table on souhaite récupérer la liste des clients qui ont commandé plus de
40DT, toutes commandes confondues alors il est possible d’utiliser la requête suivante :
SELECT client, SUM(tarif) FROM achat GROUP BY client HAVING SUM(tarif) >
40 ;
Langage de définition des données LDD
CREATE TABLE nom_table
(définition_Colonne | définition_contrainte, …)
La clause définition colonne permet de préciser les caractéristiques d’une
colonne :
Nom_colonne type [[NOT] NULL][DEFAULT valeur][contrainte_colonne]
Type :
INT(n) numérique à n chiffres
DECIMAL (n,m) numérique à n chiffres dont m décimales
VARCHAR (n) chaine de caractères dont la taille maximale est n
DATE date ou heure
NULL : colonne n’est pas obligatoire
NOTNULL : colonne obligatoire
DEFAULT : permet d’attribuer une valeur par défaut à une colonne
L’option contrainte_colonne permet de préciser une contrainte d’intégrité
relative à une colonne.
PRIMARY KEY
REFERENCES nom_table [(nom_colonne)][ON DELETE CASCADE]
Création CHECK (condition)
d’une table PRIMARYKEY : spécifier que la colonne est une clé primaire.
REFERENCES : spécifier que la colonne est une clé étrangère.
CHECK : associer une condition qui doit être vérifiée pour chaque valeur
insérée.
Exemple : Contrainte de clé étrangère

** Pour une contrainte sur une table :


FOREIGN KEY (colonne1, colonne2,...) REFERENCES table_mère
[(les_colonnes_clé_primaire)] [ON DELETE CASCADE]
** Pour une contrainte sur une colonne :
REFERENCES table_mère [(les_colonnes_clé_primaire)] [ON DELETE
CASCADE]
Les options :
ON DELETE CASCADE : Indique que la suppression d'une ligne de table_mère
va entraîner automatiquement la suppression des lignes qui la référencent dans la
table fille.
ON UPDATE CASCADE : modifie la clé étrangère si on modifie la clé primaire
La commande ALTER TABLE
ALTERTABLE nom_table
[ADD COLUMN définition_colonne]
Modifier la
[ADD CONSTRAINT définition_contrainte]
structure [MODIFY définition_colonne]
d’une table [DROPCOLUMN nom_colonne]
[DROPCONSTRAINT nom_contrainte]
[ENABLE|DISABLE nom_contrainte]
[ADDCOLUMN définition_colonne] : permet d’ajouter une colonne

-4-
Langage SQL
[ADDCONSTRAINT définition_contrainte] : permet d’ajouter une contrainte
[MODIFY définition_colonne] : permet de modifier les caractéristiques d’une
colonne
[DROPCOLUMN nom_colonne] : permet de supprimer une colonne
[DROPCONSTRAINT nom_contrainte] : permet de supprimer une contrainte.
[ENABLE|DISABLE nom_contrainte] : permet d’activer ou désactiver une
contrainte.
Langage de contrôle des données LCD
CREATE USER nom_utilisateur IDENFIED BY mot_de_passe ;
Création d’un Exemple :
CREATE USER nom_utilisateur IDENFIED BY mot_de_passe ;
utilisateur Créer l’utilisateur user1 avec le mot de passe ‘’123456’’.
CREATE USER user1 IDENFIED BY ‘’123456’’;
GRANT droit1, droit2, …, droitn
TO utilisateur1, utilisateur2, …, utilisateurp
[WITH ADMIN OPTION]
Il est à noter que toute table n'est initialement accessible que par l'utilisateur qui
l'a créée.
On peut utiliser ALL pour designer tous les droits et PUBLIC pour designer tous
les utilisateurs. L'option WITH ADMIN OPTION autorise le nouvel utilisateur
à accorder les droits reçus a d'autres utilisateurs
Exemple :
Donner tous les droit à l’utilisateur ‘’user1’’
Attribution GRANT ALL TO ‘’user1’’ ;
des droits Donner le droit de sélection et de à tous les utilisateurs :
GRANT SELECT TOPUBLIC ;
Des droits sur des objets de la base de données dits droits objet : Ce sont des droits
permettant à leurs détenteurs d'effectuer des opérations sur des objets la base de
données, tel que des tables, des vues.
La commande SQL permettant d'attribuer un droit objet a un utilisateur est la
suivante :
GRANT droit1, droit2, …, droitn
ON objet
TO utilisateur1, utilisateur2, …, utilisateurp
[WITH GRANT OPTION]
La commande qui permet de supprimer un ou plusieurs droits sur un objet est :
REVOKE droit1, droit2, …, droitn
[ON objet]
Retrait des
FROM utilisateur1, utilisateur2, …,utilisateurn
droits Cette commande permet de retirer des droits système ou objet. La clause ON
objet est utilisée uniquement en cas de retrait de droit objet.
Avec REVOKE aussi on peut utiliser ALL pour designer tous les droits et
PUBLIC pour designer tous les utilisateurs

-5-
Exercices
QCM

Dans le contexte des bases de données et pour chacune des


propositions suivantes, on présente quatre réponses. Valider
chacune de ces réponses, en mettant dans la case correspondante
la lettre "V" si elle est juste ou la lettre "F" si elle est
fausse.
Exercice 1 :
1) Une table créée qui répond aux règles d’intégrité :
doit contenir une clé primaire.
contient au moins une colonne.
peut avoir une clé dont les valeurs ne sont pas obligatoires.
est appelée « table fille », si elle contient au moins une clé étrangère.
2) Dans une table donnée :
une clé étrangère peut être composée de plusieurs colonnes.
il est possible que toutes les colonnes forment sa clé primaire.
une clé étrangère différencie sans ambiguïté les lignes de cette table.
une clé étrangère est utilisée pour assurer le lien avec une autre table.
3) Un SGBD :
permet d’exporter les données d’une table vers un tableur.
permet à un administrateur de la base de données de gérer les profils de ses utilisateurs.
assure l’intégrité des données.
permet la description et la manipulation des données d’une base.
Exercice 2 :
1) Les contraintes de domaine permettent :
l’attribution d’une clé primaire à chaque table.
l’attribution des règles de validité des valeurs d’une colonne.
L’attribution d’une clé primaire à chaque table répond à une contrainte d’intégrité de table.
l’attribution de l’aspect obligatoire (ou non) des valeurs d’une colonne
2) Les contraintes d’intégrité référentielles permettent :
d’assurer des liens entre les tables d’une base de données.
d’enregistrer une base de données.
de s’assurer que les valeurs d’une clé étrangère dans une table, sont les valeurs de la clé
primaire d’une autre table.
L’enregistrement d’une base de données est assuré par le SGBD.
3) L’authentification permet de :
s’assurer de l’identité d’un utilisateur avant de lui donner l’accès à une base de données.
crypter les informations d’une base de données. Le cryptage consiste à coder les
informations. C’est une opération de sécurisation des données d’une base.
s’assurer que les données d’une table ne sont pas redondantes.
C’est le SGBD qui assure la cohérence des données en les organisant dans des tables liées par
des clés.

-7-
QCM

4) Une clé primaire dans une table peut être :


formée par plusieurs colonnes.
une clé étrangère dans une ou plusieurs autres tables.
une clé primaire dans une autre table.
Exercice 3 :
1) La modification des données d’une table peut se faire à travers l’utilisation :
d’un formulaire.
d’un état.
d’une requête SQL.
d’une page Web statique.
2) En langage SQL, la commande SELECT permet de :
modifier les données d’une table.
Faire la jointure entre les tables d’une base de données.
Lister un sous ensemble de colonnes d’une table.
Lister les lignes d’une table répondant à un critère donné.
3) Pour attribuer les droits de sélection et d’insertion sur la table Eleve de l’utilisateur
User12, l’administrateur de cette base de données peut utiliser la requête SQL :
GRANT TO User12 Select, Insert ON Eleve ;
GRANT Select, Insert ON Eleve TO User12;
CREATE Select, Insert ON Eleve TO User12;
GRANT All ON Eleve TO User12;
Exercice 4:
1) La requête SQL : SELECT Nom FROM Eleves WHERE Nom LIKE ’J%’; permet
d'afficher tous les noms des élèves qui :
Commencent par la lettre J.
Contiennent une seule fois la lettre J.
Se terminent par la lettre J.
Contiennent la lettre J.
2) En langage SQL, la commande DROP TABLE permet :
La suppression des contraintes d'intégrité sur une table uniquement.
La suppression d’une table.
La suppression d’une colonne d’une table.
La suppression d’une ou de plusieurs lignes d’une table.
3) Pour créer le nouvel utilisateur Eleve12 d’une base de données avec le mot de passe
Pswd12, l’administrateur de cette base peut utiliser la requête SQL :
CREATE Eleve12 IDENTIFIED BY ‘Pswd12’ ;
GRANT Eleve12 IDENTIFIED BY ‘Pswd12’ ;
CREATE USER Eleve12 IDENTIFIED BY ‘Pswd12’ ;
CREATE USER Eleve12 ;

-8-
QCM

Exercice 5 :
1) Le Langage de Définition des Données (LDD) permet :
de modifier les données d’une base de données. C’est le rôle du LMD
de créer la structure d’une table.
d’ajouter des contraintes d’intégrité à une table.
de supprimer une table.
2) Le Langage de Manipulation des Données (LMD) permet :
de supprimer des données d’une table.
de rechercher des données dans une base de données.
de modifier la structure d’une table. C’est le rôle du LDD
d'insérer des données dans une table.
Exercice 6 :
1) Pour mettre à jour une base de données, on peut utiliser :
un formulaire.
un état.
une requête SQL.
2) En langage SQL, la clause ORDER BY est utilisée pour :
trier les données d’une table dans un ordre donné.
ordonner des lignes sélectionnées d’une table.
ordonner des colonnes sélectionnées d’une table.
3) Une colonne clé étrangère :
peut contenir des doublons
peut-être une partie d’une clé primaire d’une autre table.
peut contenir des valeurs "NULL".
4. En langage SQL, la clause DISTINCT appliquée à une colonne, permet
d’éliminer les doublons dans les résultats d’une requête de sélection.
de supprimer des données d’une table.
de rechercher les valeurs différentes dans une colonne.
Exercice 7 :
1) En langage SQL, la clause "ON DELETE CASCADE" permet :
de supprimer les doublons d’une table.
d’appliquer des contraintes d’intégrité référentielle de suppression en cascade.
de supprimer les lignes dépendantes dans la table "Fille" lorsqu’une ligne de la table "Mère"
est supprimée.
2) En langage SQL, la clause DEFAULT :
peut être appliquée à une colonne définie comme clé primaire.
permet d’attribuer une valeur par défaut comme valeur initiale à une colonne.
est appliquée lorsque la colonne est obligatoire.
3) En langage SQL, la clause CHECK :
permet de rechercher une valeur donnée dans la colonne.
est une contrainte qui doit être vérifiée par toutes les valeurs d’une colonne.
est optionnelle dans la description d’une table.

-9-
QCM

4) La confidentialité est l’une des piliers de la sécurisation des bases de données, elle se
base sur :
la définition d’un profil d’accès à la base de données pour chaque utilisateur.
la définition des droits et des privilèges de chaque utilisateur.
la gestion des mécanismes de sauvegarde et de restauration des données.
Exercice 8 :
1) Quelle clause SQL permet d’effectuer un tri sur les données sélectionnées
WHERE
ORDER BY
GROUP BY
2) A quoi sert une clé primaire ?
Rendre un champ non modifiable
Identifier chaque enregistrement de manière unique
Verrouiller la base de données
3) Dans une requête SQL, quel est le sens de l’expression WHERE Nom LIKE 'Be_' ?
Tous les noms qui commencent par Be
Tous les noms qui ne commencent pas par Be
Tous les noms de 3 caractères qui commencent par Be
4) La fonction COUNT permet-elle de réaliser le total des valeurs d’un champ numérique
?
OUI
NON
Exercice 9 :
1) Dans une requête SQL CHECK
permet de rechercher un attribut ayant une valeur donnée.
est une contrainte associée à une condition qui doit être vérifiée par toutes les valeurs de
l’attribut.
permet de rechercher un attribut clé ayant une valeur donnée.
2) Parmi les requêtes SQL suivantes, quelles sont celles qui donnent le nombre de tuples
dans la relation R (AC, A2, A3) ?
SELECT COUNT (*) FROM R ;
SELECT SUM (*) FROM R ;
SELECT COUNT (AC) FROM R ;
3) Parmi les requêtes SQL suivantes, quelles sont celles qui donnent la somme des
valeurs de l’attribut A2 de la relation R (AC, A2, A3) ?
SELECT AC , SOMME (*) FROM R GROUP BY AC ;
SELECT SUM (*) FROM R ;
SELECT SUM (A2) FROM R ;
4) La requête suivante appliquée sur la relation R (AC, A2, A3) :
SELECT COUNT (*) FROM R GROUB BY AC;
donne le nombre de tuples
donne la somme des tuples
ne donne rien

- 10 -
QCM

Exercice 10 :
1) Si on applique la requête suivante sur la table Ligne_Cmd (NCmd, NP, Qte) avec les
données ci-dessous quel sera le résultat :
SELECT NCmd, COUNT (*) FROM Ligne_Cmd WHERE Qte > 100 GROUB BY NCmd ;
Ligne_Cmd
NCmd NP Qte NCmd NP Qte
C001 P001 250 C004 P002 100
C001 P004 300 C004 P004 150
C001 P006 100 C004 P005 70
C002 P002 200 C004 P008 90
C002 P007 550 C005 P001 650
C003 P001 50 C005 P002 100

NCmd COUNT
C001 3
C002 2
C005 2
NCmd COUNT
C002 2
C005 1
NCmd COUNT
C001 2
C002 2
C004 1
C005 1
2) SELECT NCmd, COUNT (*) FROM Ligne_Cmd WHERE Qte > 100 GROUB BY
NCmd HAVING MAX(Qte)>300;
NCmd COUNT
C001 3
C002 2
C005 2
NCmd COUNT
C002 2
C005 1
NCmd COUNT
C001 2
C002 2
C004 1
C005 1
3) Si on applique la requête suivante sur la relation avec les données de la question
précédente, quel sera le résultat :
SELECT COUNT (*) FROM Ligne_Cmd WHERE Qte > 100;
COUNT 12
COUNT 9
COUNT 6

- 11 -
QCM

Exercice 11 :
1) Placer chaque commande de la liste suivante dans la colonne correspondante au
langage auquel elle appartient :
ALTER, GRANT, SELECT, REVOKE, CREATE, DROP, INSERT, DELETE, UPDATE
Langage de Définition de Langage de Manipulation Langage de Contrôle de
Données(LDD) de Données(LMD) Données(LCD)

1) Compléter le tableau suivant, en mettant le terme convenable (parmi la liste suivante)


devant chaque définition.
SGBD – LMD - Contrainte d’intégrité – Clé primaire – LDD - Formulaire – Clé
étrangère– Etat - authentification – Cryptage – Persistance
Terme Définition
C’est une colonne (ou un ensemble de colonnes) permettant d’identifier de façon
unique chaque enregistrement de la table.
Elle consiste à s’assurer de l’identité d’un utilisateur avant de lui donner l’accès à une
Base de Données.
C’est un logiciel qui permet de décrire, modifier, intégrer et administrer les données
d’une BD.
La capacité de mémoriser et de pouvoir retrouver une donnée.
Est une représentation des enregistrements de la base de données sur papier.
Une règle appliquée à une colonne ou à une table et qui doit être toujours vérifiée.
Exercice 12 :
Pour chacune des propositions suivantes, encadrer l’un des termes proposés entre des
parenthèses afin d’avoir le bon sens des phrases.
a) Une (information, base de données, fiche) peut être définie comme une collection de
données structurées et enregistrées ensembles sans redondances.
b) L’intégrité (de domaine, référentielle, de table) correspond à un ensemble de valeurs
admissibles.
c) Le langage de (définition, contrôle, manipulation) de données permet de définir les
permissions accordées aux différents utilisateurs de la base de données.
d) L’opération de (jointure, projection, sélection) consiste à extraire un sous-ensemble de
colonnes d’une table.
e) La commande SQL (UPDATE, MODIFY, ALTER TABLE) permet de modifier la
structure d’une table existante. Il est ainsi possible d’ajouter, de supprimer ou de modifier une
ou plusieurs colonnes existantes.
f) Les (états, formulaires, requêtes) correspondent à des résultats d’interrogation destinés à
être imprimés.
g) (La traçabilité, La confidentialité, L’authentification) consiste à s’assurer de l’identité
d’un utilisateur avant de lui donner l’accès à une base de données (login, mot de passe, ..).

- 12 -
QCM

Exercice 13 :
Le propriétaire d’une grande pharmacie souhaite installer une application développée autour
d’une base de données. Cette application permet de gérer les ventes et les stocks des
médicaments, des produits cosmétiques et parapharmaceutiques. Afin d’assurer une bonne
exploitation et sécurisation des données entre les différents agents de la pharmacie, le
propriétaire vous demande de l’aider à la mettre en place.
1. Après avoir consulté les applications disponibles sur le marché, le propriétaire a remarqué
que quelques-unes utilisent le mode « Monoposte » et d’autres utilisent le mode «
Client/Serveur ».
a) Quel mode choisissez-vous ? …………………….
b) Définissez ce mode :………………………………………………………….
2. Une fois l’application est installée avec succès et lors de la démonstration de ses
différentes fonctionnalités, on a constaté les deux interfaces suivantes. Donner le nom et la
définition de chaque interface.

- 13 -
QCM

Interface1 :
Nom : …………..
Définition :………………………………………………………………………………
…………………………………………………………………
Interface 2 :
Nom : …………..
Définition :………………………………………………………………………………
…………………………………………………………………
3. Après avoir implémenté la base de données, le propriétaire de la pharmacie souhaite
étudier les risques possibles pour garantir sa sécurité.
Compléter le tableau suivant par le mécanisme de sécurité approprié pour chaque risque
prévu

Exercice 14 :
Pour chacune des propositions citées dans le tableau ci-dessous, compléter la colonne
« validité » par la lettre V si la proposition est correcte ou la lettre F si elle est fausse. En cas
où la proposition est fausse, apporter une correction.
Proposition Validité Correction apportée
Une table peut comporter plusieurs …………………………………………
clés étrangères ……… …………………………………………
…………………………………………
L’authentification rend impossible le …………………………………………
déchiffrement d’une base de donnée ……… …………………………………………
…………………………………………
Le Langage de Définition de Données …………………………………………
(LDD) permet de manipuler le contenu ……… …………………………………………
d’une base de données …………………………………………
Le résultat d’une sélection est un sous- …………………………………………
ensemble de ligne d’une table ……… …………………………………………
…………………………………………

- 14 -
QCM

Exercice 15 :
Dans un contexte de base de données, utiliser les termes ci-dessous pour compléter la
première colonne du tableau en inscrivant devant chaque définition proposée le terme
correspondant.
Transaction, Pertinence, Disable, Contraintes, Attribut, Log, Enable, Enregistrement

Terme Définition
……………… Un fichier texte contenant l’historique des évènements relatif aux accès
à la base de données
……………… Les règles qu’un SGBD applique automatiquement pour garantir la
cohérence, la pertinence et la validité des données.
……………… Une propriété d’un sujet susceptible d’être enregistrée dans une base de
données
……………… Une option SQL permettant de désactiver une contrainte d’intégrité.
Exercice 16 :
Dans le contexte de base de données et pour chacune des propositions suivantes, mettre dans
la case correspondante la lettre V si la réponse est correcte ou la lettre F dans le cas contraire.
1- L’extraction d’un sous ensemble de colonnes d’une table correspond à une :
jointure
Projection
sélection
2- En SQL, pour automatiser la modification de la valeur d’une clé étrangère dans une
table fille à la suite de la modification de la valeur de la clé primaire de la table mère
correspondante, on ajoute la clause ON UODATE CASCADE à la définition de la :
Clé primaire dans la table mère
Clé étrangère dans la table fille
Clé primaire de la table fille
3- L’intégrité d’une base de données consiste à :
Garantir la cohérence des données
Définir un ensemble de règles (valeur, référence, unicité)
Définir les données d’une façon unique
En SQL, la clause GROUPE BY permet
De regrouper, selon un critère, des lignes d’une ou plusieurs tables
De regrouper, selon un critère, des colonnes d’une ou plusieurs tables
D’effectuer des calculs sur un groupe de résultats à l’aide des fonctions d’agrégat

- 15 -
Exercices SQL

Le langage LDD
Exercice 1 :
1 - Créer une table Personnes avec les champs suivants :
Champs Type
Réf Numérique
Nom Texte
Prenom Texte
DateNaiss Date
Genre texte
NB : Réf est la clé primaire.
2 - Ajouter un champ Ville de type texte à la table Personnes
3 - Supprimer le champ Prénom de la table Personnes
4- Supprimer la table Personnes
Exercice 2 :
On considère la représentation textuelle suivante :
Client (IdCli, NomCli, AdrCli, CPCli, VilleCli, TelCli, FaxCli)
Commandes (NumCom, DateCom, QteCom, MontantCom, #IdCli)
Questions :
1- Créer les deux tables correspondantes.
2- Supprimer le champ FaxCli de la table Client
3- Ajouter un champ TVACom à la table Commende. Il contiendra un nombre
correspondant au montant de la TVA pour cette commande.
4- Supprimer la table Client
Exercice 3 :
Soit la représentation textuelle suivante :
CLIENT (numC, nomC, pnomC, adC)
PRODUIT (numP, libelléP, pu, stock)
REPRESENTANT (numR, nomR, pnomR, tauxcom)
COMMANDE (numCom, dateCom, numC, numR)
LIGNE_COMMANDE (numCom, numP, qtecom)
Questions :
- Apporter les modifications suivantes à cette base de données
 numP est une clef primaire dans la table PRODUIT
 numC et numR dans la table COMMENDE sont deux clefs étrangères des tables
CLIENT et REPRESENTANT.
 numCom et numP de la table LIGNE_COMMANDE sont deux clefs primaires
et étrangères faisons référence aux table COMMANDE et PRODUIT.

- 16 -
Exercices SQL

Exercice 4 :
Soit la liste des instructions en mode SQL suivante :
CREATE TABLE Segment nSalle varchar(7),
(indIP varchar(11), PRIMARY KEY (nPoste));
nomSegment varchar(20) NOT NULL,
etage INT(1), CREATE TABLE Logiciel
CONSTRAINT pk_Segment PRIMARY KEY (nLog varchar(5) PRIMARY KEY,
(indIP)); nomLog varchar(20) NOT NULL,
dateAch DATETIME,
CREATE TABLE Salle version varchar(7),
(nSalle varchar(7), typeLog varchar(9),
nomSalle varchar(20) NOT NULL, prix DECIMAL(6,2) CHECK (prix >= 0));
nbPoste INT(2),
indIP varchar(11), CREATE TABLE Installer
CONSTRAINT pk_salle PRIMARY KEY (nPoste varchar(7),
(nSalle)); nLog varchar(5),
numIns INT(5) AUTO_INCREMENT,
CREATE TABLE Poste dateIns DATE DEFAULT NOW(),
(nPoste varchar(7), delai DECIMAL(8,2),
nomPoste varchar(20) NOT NULL, PRIMARY KEY(numIns));
indIP varchar(11), CREATE TABLE Types
ad varchar(3) CHECK (ad BETWEEN '000' (typeLP varchar(9), nomType varchar(20),
AND '255'), PRIMARY KEY(typeLP));
typePoste varchar(9),

ALTER TABLE Segment


ADD (nbSalle INT(2) DEFAULT 0, nbPoste INT(2) DEFAULT 0);
ALTER TABLE Logiciel ADD nbInstall INT(2) DEFAULT 0;
ALTER TABLE Poste ADD nbLog INT(2) DEFAULT 0;
ALTER TABLE Poste ADD CONSTRAINT fk_Poste_indIP_Segment
FOREIGN KEY(indIP) REFERENCES Segment(indIP);
ALTER TABLE Poste ADD CONSTRAINT (nSalle) REFERENCES Salle(nSalle);
ALTER TABLE Poste ADD CONSTRAINT fk_Poste_typePoste_Types
FOREIGN KEY(typePoste) REFERENCES Types(typeLP);
ALTER TABLE Installer ADD CONSTRAINT fk_Installer_nPoste_Poste
FOREIGN KEY(nPoste) REFERENCES Poste(nPoste);
ALTER TABLE Installer ADD CONSTRAINT fk_Installer_nLog_Logiciel
FOREIGN KEY(nLog) REFERENCES Logiciel(nLog);
Question :
Donner la représentation textuelle de cette base de données

- 17 -
Exercices SQL

Exercice 5 :
Soit la base de données suivante :

Liste des colonnes

(1) valeur par défaut est la date du jour


(2) date retour supérieur à date location
Liste des liens entre les tables

Question :
- Créer les tables on mode SQL

- 18 -
Exercices SQL

Le langage LMD
Exercice 1 :
On considère la base de données relationnelle définie par les relations suivantes
CLIENT (numC, nomC, pnomC, adC)
PRODUIT (numP, libelléP, pu, stock)
REPRESENTANT (numR, nomR, pnomR, tauxcom)
COMMANDE (numCom, dateCom, #numC, #numR)
LIGNE_COMMANDE (#numCom, #numP, qtecom)
Formuler en SQL les requêtes suivantes
1- Quels sont les noms et prénoms des divers représentants ?
…………………………………………………………………………………
……………………………………………………………………………………
2- Quels sont les produits (numP, libelléP) qui sont en rupture de stock (la quantité en
stock est inférieure à 100) ?
……………………………………………………………………………………
……………………………………………………………………………………
3- Quels sont les représentants ayant vendu des produits au client de nom ‘’DRIDI’’ ?
……………………………………………………………………………………
……………………………………………………………………………………
4- Quel est le nombre de représentants ?
……………………………………………………………………………………
……………………………………………………………………………………
5- Quel est le montant de la commande numC = 112 ?
……………………………………………………………………………………
……………………………………………………………………………………
6- Quel est la quantité moyenne commandée de produit numP=15 par commande du
1/01/2012 au 31/12/2012 ?
……………………………………………………………………………………
……………………………………………………………………………………
7-Combien d’articles différents sont dans la commande numC = 112 ?
……………………………………………………………………………………
……………………………………………………………………………………
Exercice 2 :
Soit la base de données FABRICATION dont le schéma est donnée ci-dessous.
PIECE (NOP, DESIGNATION, COULEUR, POIDS)
SERVICE (NOS, INTITULE, LOCALISATION)
COMMANDE (NOP#, NOS#, QUANTITE)
Interrogation de la base de données en langage SQL :
1- Numéro des pièces, désignation qui ont une couleur rouge.
…………………………………………………………………………………………………………………
…………………………………………………………………………………

- 19 -
Exercices SQL

2- Numéro des pièces, désignation qui ont une couleur rouge et qui ont un poids > 100
Kg.
…………………………………………………………………………………………………………………
…………………………………………………………………………………
3- Numéro des services, intitulé qui se trouvent dans la ville de ‘’Tunis’’.
…………………………………………………………………………………………………………………
…………………………………………………………………………………
4- Numéro des services qui ont commandé la pièce P1 et la pièce P3.
…………………………………………………………………………………………………………………
…………………………………………………………………………………
5- Numéro des services qui ont commandé la pièce P3 avec une quantité inférieure à la
quantité moyenne commandée pour cette pièce.
…………………………………………………………………………………………………………………
…………………………………………………………………………………
6- Numéro des services qui se trouvent à ‘’Tunis’’ et qui ont commandé des pièces de
couleur ‘’bleu’’.
…………………………………………………………………………………………………………………
…………………………………………………………………………………
Exercice 3 :
On considère la base de données relationnelle définie par les relations suivantes :
Compagnie (Comp, Nrue, Rue, ville, nomComp)
Pilote (Brevet, Nom, nbVole, Comp#)
1) Ecrivez l’instruction d’insertion de l’occurrence suivante dans la table Pilote :
(‘PL-3’, ‘LASSOUED Salah’, 1000, ‘TA’)
…………………………………………………………………………………………………
…………………………………………………………………………………………………
2) Ecrivez l’instruction d’insertion de l’occurrence suivante dans la table Compagnie :
(‘TA’, 12,’LAC NORD’, ’Tunis’, ‘Tunis Aire’)
…………………………………………………………………………………………………
…………………………………………………………………………………………………
3) Ecrivez l’instruction qui permet de transformer à 50 le Nrue de l’occurrence ‘TA’ de
la table compagnie.
…………………………………………………………………………………………………
…………………………………………………………………………………………………
4) Nous considérons dans notre schéma la tables Avion
Avion (immat, typeavion, nbHvol, Comp#)
Immat typeAvion nbHVol Comp
F-Wtss Concorde 6570 AF
F-Glfs A320 3500 AF
F-Gtmp A340 3000 AF
T-Ansi A320 104500 TA

- 20 -
Exercices SQL

T-Avez A320 156000 TA


T-Smile A330 198000 TA
F-Gtmp A340 204500 AF
a) Ecrivez l’instruction qui permet de donner tous les types d’avions que les deux
compagnies exploitent.
…………………………………………………………………………………………………
…………………………………………………………………………………………………
b) Ecrivez l’instruction qui permet de donner les types d’avions exploités par la
compagnie ‘AF’.
…………………………………………………………………………………………………
…………………………………………………………………………………………………
c) Ecrivez l’instruction qui permet de donner les couples possibles (avion, pilote) en
considérant les avions et les pilotes de la compagnie ‘AF’.
…………………………………………………………………………………………………
…………………………………………………………………………………………………

- 21 -
Sujets

(bac 2018 section de contrôle)


Exercice 1 :
La première colonne du tableau ci-après représente des actions à réaliser sur une base de
données. On vous demande de :
1- Compléter la deuxième colonne du tableau par le nom de la commande SQL
approprié à la commande décrite.
2- Compléter la colonne langage SQL en mettant une croix (X) dans la case du langage
SQL approprié.
Langage SQL
Action à réaliser Commande SQL
L.D.D. L.M.D. L.C.D.
Supprimer une table
Ajouter des données à une table
Ajouter un utilisateur
Supprimer des données d’une table
Modifier les données d'une table
Ajouter des droits à un utilisateur
NB :
L.D.D : Langage de Définition de Données
L.M.D : Langage de Manipulation de Données
L.C.D : Langage de Contrôle de Données
Exercice 2 :
Soit la représentation textuelle d'une base de données simplifiée qui gère les espèces
végétales d'une pépinière.
TYPEPLANTE (IdTyp, LibTyp)
CATEGORIE (IdCat, LibCat)
PLANTE (IdPlan, NomPlan, Couleur, Expo, PrixUnit, IdTyp#, IdCat#)
PARCELLE (IdParc, Surface)
PLANTER (IdParc#, IdPlan#, Qte)
Description des colonnes des tables
Nom de description Nom de description
colonne colonne
idTyp Identifiant du type de la plante Couleur de la plante (‘R’ : Rouge,
couleur
Libelle du type de la plante (exemple : ’B’ :Blanc, ‘V’ :Ver, etc)
libTyp
Verte, Grasse, Grainée, etc) Exposition de la plante (exemple :
idCat Identifiant de la catégorie de la plante expo ‘O’ :Ombre, ‘M’ : Mi-ombre,
Libelle de la cathègorie de la plante ‘S’ :Soleil)
LibCat (exemple : Plante de jardin, Plante PrixUnit Prix unitaire de la plante
décorative, Plante médicinal, etc)
idPlan Identifiant de la plante idParc Identifiant de la parcelle
NomPlan Nom de la plante
surface Surface de la parcelle
Quantité de la plante dans une parcelle
Qte
(en unités)

- 22 -
Sujets

A. Écrire les requêtes SQL pour :


1. afficher les noms des plantes de couleur rouge et dont l'exposition est Mi-Ombre.
…………………………………………………………………………………………………
…………………………………………………………………………………………………
…………………………………………………………………………………………………
2. afficher toutes les plantes (Nom, couleur et prix) de catégorie 'Plante de jardin'.
…………………………………………………………………………………………………
…………………………………………………………………………………………………
…………………………………………………………………………………………………
3. afficher les noms par ordre alphabétique des plantes qui se trouvent sur la parcelle
dont l'identifiant est 'PA10'.
…………………………………………………………………………………………………
…………………………………………………………………………………………………
…………………………………………………………………………………………………
4. mettre à jour la table concernée par la livraison de 1000 unités de plantes identifiées
par le code 'PL55' à partir de la parcelle d'identifiant 'PA105'.
…………………………………………………………………………………………………
…………………………………………………………………………………………………
…………………………………………………………………………………………………
5. afficher par couleur (Couleur et quantité totale) des plantes disponibles en quantité
totale supérieure ou égale à 100 unités.
…………………………………………………………………………………………………
…………………………………………………………………………………………………
…………………………………………………………………………………………………
6. ajouter une contrainte d'intégrité de domaine permettant d'autoriser uniquement les
valeurs 'O', 'M' ou 'S' dans la colonne Expo de la table PLANTE.
…………………………………………………………………………………………………
…………………………………………………………………………………………………
…………………………………………………………………………………………………
B. L'administrateur se propose de supprimer toutes les plantes dont le nom commence par
'Ja' et ayant comme libellé de type 'Grasse'.
1. Ecrire la requête SQL correspondante.
…………………………………………………………………………………………………
…………………………………………………………………………………………………
…………………………………………………………………………………………………
2. Citer tous les cas possibles afin d'exécuter cette requête.
…………………………………………………………………………………………………
…………………………………………………………………………………………………
…………………………………………………………………………………………………

- 23 -
Sujets

Exercice 3 :
L’entreprise ENNAJDA se propose d’implémenter une base de données afin de gérer la
vente et la pose de capteurs en matière de protection contre les incendies, les intrusions et les
inondations. Toute activité commerciale de l’entreprise fait l’objet d’un contrat.
Pour chacun de ses clients, la société ENNAJDA retient les informations suivantes : un code,
une raison sociale et un numéro de téléphone.
On note également, qu’un client peut avoir plusieurs locaux. Pour cela, chaque contrat, est
identifié par un numéro, il est établi à une date précise, et il spécifie pour chaque local, le ou
les capteurs à installer. Chaque local, identifié par deux coordonnées GPS, est caractérisé par
un numéro de téléphone.
Pour chaque capteur, identifié par un code, on fixe un tarif et on définit un libelle qui peut
être : incendie, intrusion ou inondation.
Travail demandé :
Afin de concevoir cette base de données ; on vous demande de :
1. Déduire la liste des colonnes (nom de la colonne, description, type et sujet)
2. Donner une représentation textuelle de la base de données tout en précisant les clés
primaires et les clés étrangères.

- 24 -
Sujets

(bac 2018 section principal)


Exercice 1
Lors des tests préalables avant l’exploitation d’une base de données, nous relevons des
anomalies. Pour chaque numéro d’anomalie compléter la colonne réponse par la lettre
correspondante à la fonction d’un S.G.B.D non respectée.
Anomalies Réponse Fonctions
Il existe deux enregistrements
Manipulation
1 d'une même table ayant le 1 a des données
même identifiant

L'application ne permet pas de


répondre à tous les besoins de Gestion des accès
2 recherche sur les données de la 2 b concurrents
base

Une partie des données de la


Sécurité
3 base est perdue à la suite d'une 3 c du fonctionnement
coupure de courant

Des colonnes nécessaires à la


Définition
4 description d'un sujet ne 4 d des données
figurent pas dans la base

Des données secrètes sont


Intégrité
5 consultées par tous les 5 e des données
utilisateurs de la base

La mise à jour d'une même


table peut se faire
6 simultanément par deux
6 f Confidentialité
utilisateurs de la base

Exercice 2 :
Soit la représentation textuelle simplifiée d'une base de données qui gère les annonces de
ventes de véhicules publiées par des clients sur un site de ventes en ligne.
CONSTRUCTEUR (IdConst, NomConst)
MODELE (IdMod, NomMod, IdConst#)
VEHICULE (ImmatVeh, PuisFisc, Energie, Couleur, IdMod#)
VENDEUR (IdVend, Email, Tel, NomReg)
ANNONCE (RefAnn, DateAnn, PrixVente, IdVend#, ImmatVeh#)

- 25 -
Sujets

Description des colonnes des tables


Nom de description
Nom de description
colonne
IdConst Identifiant du constructeur colonne
NomConst Nom du constructeur IdVend Identifiant du vendeur
IdMod Identifiant du modèle Email Email du vendeur
NomMod Nom du modèle Tel Telephone du vendeur
ImmatVeh Immatriculation du véhicule Nom de la région du
NomReg
Puissance fiscale du véhicule (4 :4CV, vendeur
PuissFisc
5 :CV,6 :6CV, ect) RefAnn Référence de l’annonce
Energie du véhicule (‘E’ :Essence, ‘D’ : Diesel, DateAnn Date de l’annonce
Energie
‘G’ : Gaz, ‘H’ :Hibride) PrixVente Prix de vente du véhicule
Couleur du véhicule (‘R’ : Rouge, ‘B’ : Blanc,
Couleur
‘L’ :Bleu, ‘N’ :Noir, ect)
Partie A :
Ecrire les requêtes SQL pour :
1. Créer la table MODELE avec la description suivante :
Nom de colonne Type et taille Contrainte
IdMod Texte 6 caractères Clé primaire
NomMod Texte de 30 caractères Obligatoire
IdConst Texte de 4 caractères Clé étrangère
……………………………………………………………………………………………….
………………………………………………………………………………………………….
………………………………………………………………………………………………….
………………………………………………………………………………………………….
2. diminuer de 10 % les prix de vente des véhicules ayant une puissance fiscale supérieure
ou égale à 6 chevaux (6CV).
………………………………………………………………………………………………….
………………………………………………………………………………………………….
………………………………………………………………………………………………….
………………………………………………………………………………………………….
3. supprimer toutes les annonces effectuées avant l'année 2010.
………………………………………………………………………………………………….
………………………………………………………………………………………………….
………………………………………………………………………………………………….
………………………………………………………………………………………………….
4. afficher la liste des annonces de véhicules (Nom du modèle, puissance fiscale, énergie,
couleur et prix de vente) classée par ordre décroissant des prix de vente.
………………………………………………………………………………………………….
………………………………………………………………………………………………….
………………………………………………………………………………………………….
………………………………………………………………………………………………….
5. afficher tous les noms distincts de modèles de véhicules roulant au DIESEL et dont le
prix de vente est inférieur ou égal à 50000 Dinars.
………………………………………………………………………………………………….

- 26 -
Sujets

………………………………………………………………………………………………….
………………………………………………………………………………………………….
………………………………………………………………………………………………….
6. afficher, pour chaque modèle, son identifiant et le nombre d'annonces correspondant.
………………………………………………………………………………………………….
………………………………………………………………………………………………….
………………………………………………………………………………………………….
………………………………………………………………………………………………….
Partie B :
Après analyse de la structure de la base, il s'avère nécessaire de recourir à la création d'une
nouvelle table décrite par : REGION (IdReg, Libelle).
1. Nommer la contrainte d'intégrité à respecter pour prendre en compte l'ajout de cette table
dans la base.
………………………………………………………………………………………………….
2. Suite à la création de la table REGION par l'administrateur, des modifications devront
être apportées sur une autre table de la base.
a) Donner la nouvelle représentation textuelle de la table concernée.
………………………………………………………………………………………………….
b) Écrire l'ensemble des requêtes SQL permettant ces modifications.
………………………………………………………………………………………………….
………………………………………………………………………………………………….
………………………………………………………………………………………………….
………………………………………………………………………………………………….
Exercice 3 :
Les prix Nobel sont des récompenses décernées chaque année à des lauréats. Ces prix sont
attribués par catégorie, pour les travaux réalisés par ces lauréats.
On se propose de créer une base de données qui gère l’historique des prix Nobel. Pour cela,
on vous donne les règles de gestion suivantes :
1. Il existe 6 catégories de prix Nobel :
 Physique,
 Chimie
 Médecine ou physiologie
 Littérature
 Paix
 Economie
2. Chaque année, les prix sont attribués à un (ou plusieurs) lauréat(s) pour avoir réalisé
une action déterminée. Nommée ‘’Objet’’ dans l’annexe.
3. Chaque objet de prix Nobel est classé sous l’une des catégories présentées
précédemment.
4. Le pays désigne la nationalité officielle de chaque lauréat ou l’origine géographique
de l’institution lauréate.
Pour illustrer le dictionnaire des données qui devra être pris en compte dans la conception de
la base de données, on donne en annexe, le tableau qui résume l’attribution des prix Nobel

- 27 -
Sujets

par catégorie pour les années 2015 et 2016 : l’année d’obtention, la catégorie du prix. L’objet
du prix, le nom du (ou des) lauréat(s) et le pays officiel de rattachement du (ou des)
lauréat(s).
Travail demandé :
Afin de concevoir cette base de données, on vous demande :
1. Déduire la liste des colonnes (Nom de la colonne, description, type et sujet)
2. Dresser dans un autre tableau, la liste des colonnes représentant les identifiants des
sujets dégagés dans la question précédente (Nom de l’identifiant, description, type et
sujet)
3. Donner une représentation textuelle de la base de données tout en précisant les clés
primaires et les clés étrangères.
Annexe :
Année Catégorie Objet Lauréat pays
Découverte sur les oscillations de Takkaki Kajita japon
Physique neutrinos qui démontre que les
neutrinos ont une masse Arthur B McDonald canada
Tomas Lindahi Suède
Etude mécanistiques de la réaction de
Chimie Paul Modrich USA
l’ADN
Aziz Scacar Turquie
Médecine William C Campbell Irlande
Pour leurs travaux de recherche contre
Ou Satoshi Omura Japon
le paludisme
Physiologie Tu Youyou RPC
2015 Pour son œuvre polyphonique,
Littérature mémorial de la souffrance et du Svetlan Aleksievitch Russie
courage à notre époque
LTDH Tunisie
Pour leur succès dans la mission qui a
abouti à la tenue des élections UTICA Tunisie
Paix présidentielles et législatives ainsi qu’à Conseil de l’ordre national des
la ratification de la nouvelle Tunisie
avocats
constitution en 2014
UGTT Tunisie
Pour son analyse de la consommation,
Economie Angus Deaton Royaume Uni
de la pauvreté et du bien être
David Thouless Royaume Uni
Physique pour leurs recherches sur la matière. F. Duncan Haldane Royaume Uni
J. Michael Kosterlitz, Royaume Uni
Jean-Pierre Sauvage France
inventeurs de minuscules "machines
Chimie Fraser Stoddart Royaume Uni
moléculaires".
néerlandais Bernard Feringa Pays bas
Médecine
Ou pour ses recherches sur l'autophagie Yoshinori Ohsumi Japon
2016 Physiologie
créé, dans le cadre de la grande
tradition de la musique américaine, "de
Littérature Bob Dylan USA
nouveaux modes d'expression
poétique"
pour l'accord de paix signé avec les
Paix Forces armées révolutionnaires de Juan Manuel Santos Colombie
Colombie (FARC)
pour leurs contributions à la théorie du Oliver Hartz USA
Economie
contrat Bengt Holmström Finlande

- 28 -
Sujets

Exercice 1 :
Soit la table avion suivant :
Avion (code, firme, nb_passagee, date_cir)
Question
1- Ecrire les commandes SQL qui permettent :
- Ajouter une colonne nbr_AV (nombre d’avion disponible) à cette table
………………………………………………………………………………………………….
- Modifier la taille de la colonne firme pour qu’elle soit une chaîne de 100 caractères.
………………………………………………………………………………………………….
- La colonne nb_passagee est un entier compris entre 100 et 800.
………………………………………………………………………………………………….
- La colonne firme est une colonne obligatoire.
………………………………………………………………………………………………….
2- Soit les données suivantes dans la table avion :
Code Firme Nb_passagee Date_cir nbr
A320 Airbus 320 16/11/2000 2
A380 Airbus 680 10/10/2009 3
B747 Boeing 700 01/01/2013 4

- Ajouter les informations suivantes à cette table (‘B730’, ‘Boeing’, 200, 03/11/2010, 4)
………………………………………………………………………………………………….
- Donner le résultat des requêtes suivantes :
a- select distinct (firme) from avion ;
………………………………………………………………………………………………….
b- select sum(nbpassagee) from avion where firme =’airbus’;
………………………………………………………………………………………………….
c- select * from avion where date between ‘01/01/2010’ and ‘31/12/2031’;
………………………………………………………………………………………………….
d- select SUM(nb_passagee) from avion group by firme;
………………………………………………………………………………………………….
3- Donner la requête permettant d’obtenir le résultat suivant :
Firme Nombre d’avion
Airbus 5
Boeing 7
………………………………………………………………………………………………….

Code Firme nbpassagee


A380 Airbus 680
B747 Boeing 700
………………………………………………………………………………………………….

- 29 -
Sujets

Exercice 2 :
Soit la base de données "Gestion_Contrats" comportant la table CONTRAT.
L'administrateur de cette base se propose de gérer les privilèges attribués aux utilisateurs
User1, User2 et User3.
Pour ce faire, il lance dans l'ordre chronologique les requêtes SQL suivantes :
- GRANT Select ON CONTRAT TO User1 ;
- GRANT Insert, Update ON CONTRAT TO User2 WITH Grant Option ;
- GRANT ALL ON CONTRAT TO User3 ;
- GRANT Delete ON CONTRAT TO Public ;
- REVOKE Delete ON CONTRAT FROM User1 ;
1- Après l’exécution de toutes les requêtes ci-dessus, indiquer les droits attribués à chaque
utilisateur sur la table CONTRAT en mettant une croix (X) dans les cases
correspondantes.
Utilisateurs Lecture Insertion Modification Suppression
User1
User2
User3
2- L'utilisateur User2 se propose de lancer les requêtes présentées dans le tableau ci-dessous.
En tenant compte des droits attribués ou retirés précédemment, mettre une croix (X) devant
chaque requête qui engendrera un message d'erreur.
Réponse Requête
GRANT Update ON CONTRAT TO User1 ;
GRANT Select ON CONTRAT TO Public ;
GRANT Delete ON CONTRAT TO User1 ;
Exercice 3 :
On souhaite concevoir une base de données relative à une auto-école. Cette auto-école
organisée des leçons identifiées par un numéro, une date et une heure de début.
Chaque leçon est assurée par un moniteur identifier par un numéro, un nom et une date
d’embauche.
Le client qui vas prendre des cours est identifié par un numéro, nom, prénom, adresse, ville,
date de naissance et téléphone.
Chaque leçon se déroule sur une voiture identifier par un matricule, date d’achat, nombre de
kilomètres, une voiture appartient à un model caractérisé par un code, nom, cylindrée et sa
puissance.
Un moniteur peut assurer une ou plusieurs leçons, une leçon est assurée par un seul moniteur
à un seul client. Un client peut pondre une ou plusieurs leçons. Une voiture peut assurer une
ou plusieurs leçons.
Après un nombre de séance chaque client passe un examen identifié par un code sur une voiture
et avec un ingénieur pour une date donnée. Le client peut passer un ou plusieurs examens qui
s’arrêtent lorsqu’il réussit l’examen.
Un ingénieur est identifié par un code, un nom et un prénom.

- 30 -
Sujets

Questions :
1. Etablir la liste des colonnes (nom colonne, description, type)
2. Donner la représentation textuelle tout en précisant les clés primaires et les clés
étrangères.

- 31 -
Sujets

Exercice 1 :
Soit la base de données simplifiée "Gestion_Rallye" permettant à une ligue d'amateurs
de rallye moto de gérer les différentes étapes d'un rallye.
Cette base de données est décrite par la représentation textuelle suivante :
PILOTE (NumPil, NomPil, PrePil, DateNaisPil)
VILLE (CodeVil, NomVil)
ETAPE (NumEtp, CodeVilDep#, CodeVilArr#, DisEtp, DateEtp, CodeType#)
TYPE_ETAPE (CodeType, DesType)
TEMPS (NumEtp#, NumPil#, TempsReal)
1) Suite aux travaux d'entretien entamés sur l'itinéraire de l'étape numéro 5 ayant comme
désignation du type de l'étape "Asphalte", la ligue décide de changer cet itinéraire par un
autre de type "Forêt". Pour prendre en charge cette modification, écrire les requêtes SQL
permettant :
a) de supprimer la contrainte de domaine nommée CD.
……………………………………………………………………………………………….

b) d'ajouter à la table TYPE_ETAPE une nouvelle contrainte de domaine sur la colonne


DesType permettant d'accepter seulement les désignations suivantes : "Montagne",
"Asphalte", "Désert" et "Forêt".
……………………………………………………………………………………………….

c) d’insérer dans la table TYPE_ETAPE la ligne suivante :


CodeType DesType
T4 Forêt
……………………………………………………………………………………………….
d) de mettre à jour la colonne CodeType à « T4 » pour l’étape numéro 5.
……………………………………………………………………………………………….
2) Afin de permettre aux amateurs de suivre de près le déroulement du rallye, la ligue se propose
de mettre à leur disposition un ensemble d’informations. Ecrire les requêtes SQL permettant
d’afficher :
a) la liste des étapes programmées pour la journée du « 01/06/2017 ».
……………………………………………………………………………………………….
b) La liste des pilotes (nom et prénom) participants dans l’étape numéro 7 triée par ordre
croissant selon leurs temps réalisés.
……………………………………………………………………………………………….
c) Le total des distances parcourues dans toutes les étapes qui sont programmées dans la
montagne.
……………………………………………………………………………………………….
d) pour chaque étape du rallye, le meilleur temps réalisé.
……………………………………………………………………………………………….

- 32 -
Sujets

3) Pour éviter le changement des résultats des étapes du rallye, l’administrateur de la base de
données décide de retirer de l’utilisateur User1 le droit de modification sur la table TEMPS.
Sachant que l’utilisateur User1 est déjà créé et bénéficie de tous les droits, écrire une requête
SQL permettant d’effectuer cette tâche.
……………………………………………………………………………………………….
Exercice 2 :
Soit une base de données qui contient les trois tables article, client et facture. Cette base
présente quelques anomalies. Le contenu des tables est le suivant :
table Client table article
code_cl non_cl pre_cl code_art des_art prix_art
123 driri arbi A001 souris 2,500
325 salhi ahmed B111 clavier -15,000
123 rebhi khalil A003 écran 250,000
table facture
num_fact date_fact code_cl code_art
1 10/10/2012 123 A001
2 11/10/2012 325 A001
3 01/01/2013 325 B111
4 02/01/2013 123 B111
5 03/01/2013 123 C235
6 04/01/2013 325 A001
1) Donner les anomalies qui existent dans cette base de données ainsi que la contrainte
d’intégrité non respectée.
…………………………………………………………………………………….……………
…………………………………………………………………………………….……………
…………………………………………………………………………………….……………
…………………………………………………………………………………….……………
…………………………………………………………………………………….……………
…………………………………………………………………………………….……………
…………………………………………………………………………………….……………

2) Ecrire les requêtes SQL permettant de corriger les structures des tables puis donner la
représentation textuelle de la base de données.
…………………………………………………………………………………….……………
…………………………………………………………………………………….……………
…………………………………………………………………………………….……………
…………………………………………………………………………………….……………
…………………………………………………………………………………….……………
…………………………………………………………………………………….……………
…………………………………………………………………………………….……………
…………………………………………………………………………………….……………
…………………………………………………………………………………….……………
…………………………………………………………………………………….……………

- 33 -
Sujets

Exercice 3 :
Le stockage en ligne est l’un des multiples services du « Cloud Computing » recouvrant
l’ensemble des solutions de stockage distant. En effet, vos données, au lieu d’être stockées sur
vos disques durs ou mémoires, sont disponibles sur des serveurs distants qui sont accessibles
par Internet et gérés par des prestataires (appelés aussi fournisseurs Cloud). Chacun des
prestataires est identifié par un matricule et est caractérisé par un nom, une adresse et un
numéro de téléphone.
Les serveurs, d’un prestataire donné, possèdent chacun une adresse IP unique, un DNS, une
fréquence du processeur et une capacité de stockage.
Les prestataires fournissent chacun des offres à leurs clients. Pour chaque offre, on trouve un
code, un slogan sous forme d’un texte, une capacité de stockage, un prix forfaitaire annuel et
une taille maximale par fichier. Pour s’abonner chez un prestataire, un client doit choisir l’une
des offres fournies en fonction de ses besoins puis signer un contrat. Il doit mentionner son
nom, son prénom, son adresse et son numéro de téléphone avant qu’un identifiant unique ne
lui soit automatiquement attribué.
Un client peut signer plusieurs contrats pour des offres différentes. Chaque contrat est identifié
par une référence unique, une date de début et une période de validité exprimée en nombre de
mois.
Questions : On se propose d’implémenter une base de données simplifiée permettant la
gestion des prestataires Cloud. Pour cela, on vous demande :
1) d’élaborer la liste des colonnes (nom de la colonne, description, type de données).
2) une représentation textuelle de la base de données.

- 34 -
Sujets

Exercice 1 :
A. Pour chacune des propositions suivantes, répondre par (V) si la réponse est juste ou par (F)
si elle est fausse.
a. Une requête de sélection peut :
- extraire plusieurs lignes.
- renvoyer un seul résultat.
- modifier les données obtenues suite à son exécution.
b. La commande ALTER TABLE permet :
- d’ajouter une table à la base de données.
- de modifier les données d’une table de la base de données.
- de modifier la structure d’une table de la base de données.
c. La suppression d’une table est réalisée avec la commande :
- ERASE.
- DELETE.
- DROP TABLE.
d. Le cryptage d’une base de données consiste à :
- créer un mot de passe pour accéder à la base de données.
- compresser les données de la base.
- coder la base de données.
B. Pour chacun des traitements suivants, mettre une croix (X) dans la colonne du langage de
base de données qui lui correspond :
N.B. : Un langage de base de données peut être :
• L.D.D. : Langage de Définition de Données
• L.M.D. : Langage de Manipulation de Données
• L.C.D. : Langage de Contrôle de Données
Langage de base de données
Traitement
L.D.D. L.M.D. L.C.D.
Ajouter une contrainte de domaine à une table.
Ajouter des données dans une table.
Retirer les privilèges d’un utilisateur.
Supprimer une table.
Modifier des lignes d’une table.
Créer un utilisateur.
Sélectionner des lignes d’une table.
Modifier la taille d’un champ.

- 35 -
Sujets

Exercice 2 :
Soit la base de données intitulée "Gestion_Hébergements" permettant à un fournisseur
de services Internet de gérer les hébergements des sites web de ses clients dans les différents
serveurs. Elle est décrite par la représentation textuelle simplifiée suivante :
SITE (CodeSite, UrlSite, DescSite, TailSite, DHebSite, CodeCat#, CinCl#, NumServ#)
CATEGORIE (CodeCat, LibCat)
CLIENT (CinCl, NomCl, PrenCl, EmailCl, TelCl)
SERVEUR (NumServ, LibServ, IPServ)
N.B. :
- Un site web ne peut être hébergé qu'une seule fois dans le même serveur.
- Un site web doit être d'une seule catégorie.
- Un site web appartient à un seul client.
Nom de la Description de la colonne Nom de la
Description de la colonne
colonne colonne
CodeSite Code du site web NomCl Nom du client
UrlSite Adresse URL du site web (Exemple : www.edunet.tn) PrenCl Prénom du client
Description du site web (Exemple : Portail de EmailCl Adresse Email du client
DescSite l'éducation nationale) TelCl Numéro du téléphone du client
TailSite Taille occupée par le site web exprimée en MégaOctets NumSer Numéro du serveur web
DHebSite Date d'hébergement du site web dans le serveur LibServ Libellé du serveur web
CodeCat Code de la catégorie du site web (Exemple : 'E', 'C', ...) Adresse IP du serveur web
IPServ
Libellé de la catégorie du site web (Exemple : (Exemple : 192.168.16.1)
LibCat
Educatif, Commercial, ...)
CinCl Numéro de la carte d'identité nationale du client
Questions :
1. L’administrateur désire ajouter à cette base de données un nouvel utilisateur, identifié par
Candidat1 et ayant le mot de passe "BacSI".
Ecrire la requête SQL permettant d’ajouter cet utilisateur.
…………………………………………………………………………………………………
2. Ecrire une requête SQL permettant d'attribuer à l'utilisateur déjà crée Candidat1, tous les
droits d'insertion et de sélection sur la table SITE, en lui autorisant d'accorder ces droits reçus
à d'autres utilisateurs.
…………………………………………………………………………………………………
3. L'utilisateur Candidat1, veut modifier l’adresse IP du serveur numéro 10. Un message
d’erreur s’affiche. Dites pourquoi ?
…………………………………………………………………………………………………
4. Un nouveau site éducatif vient d’être hébergé dans le serveur numéro 5.
Ecrire une requête SQL permettant d'ajouter les informations suivantes à la base de données :
CodeSite UrlSite DescSite TailSite DHebSite CodeCat CinCl NumServ
Bac Sciences de
S10 www.BacSI.tn l’Informatique 50 10/05/2018 E 01234567 5

…………………………………………………………………………………………………

- 36 -
Sujets

5. L’administrateur de cette base de données désire ajouter une contrainte sur la colonne CodeCat
de la table CATEGORIE vérifiant la validité des valeurs suivantes : ‘E’, ‘C’, ‘A’ et ‘N’.
Ecrire une requête SQL permettant de réaliser cette tâche.
…………………………………………………………………………………………………
6. Ecrire les requêtes SQL permettant d'afficher :
a. tous les sites web (Url, Description et Taille) appartenant au client identifié par son numéro de
la carte d'identité nationale "12345678", et triés dans l'ordre décroissant de leurs tailles.
…………………………………………………………………………………………………
…………………………………………………………………………………………………

b. tous les sites web commerciaux et leurs clients (URL, Nom du client, Prénom, et Email).
…………………………………………………………………………………………………
…………………………………………………………………………………………………
c. le nombre de sites web éducatifs hébergés durant l'année 2018.
…………………………………………………………………………………………………
…………………………………………………………………………………………………
Exercice 3 :

Questions : On se propose d’implémenter une base de données simplifiée permettant la gestion


des prestataires Cloud. Pour cela, on vous demande :
1) d’élaborer la liste des colonnes (nom de la colonne, description, type de données).
2) une représentation textuelle de la base de données.

- 37 -
Sujets

Exercice 1 :

1. Complétez le tableau ci-dessous par le résultat de chaque requête :

N° Requête Résultat

SELECT CodAdh ‘Code’, NomAdh ‘Nom’,


PrenAdh ‘Prénom’
1 FROM ADHERENT
WHERE GenreAdh=’F’
ORDER BY NomAdh DESC ;

SELECT NomAdh, PrenAdh, NomAct


FROM ADHERENT AD, PRATIQUER P,
ACTIVITE AC
2
WHERE AD.CodAdh = P.CodAdh
AND P.CodAct = AC.CodAct
AND P.CodAct =’A2’;

- 38 -
Sujets

Exercice 2 :
Soit la base de données suivante :
Activité (codeAct, LibAct)
Coach (CodeCo, Nom, Prénom)
Seance (CodeAct#,CodeCo#,DateSe,HeureDeb, HeureFin)
Questions :
1) Ecrire une requête qui permet de créer la table Evaluation
Table Seance
champ type
CodeAct chaîne de 3 caractères
CodeCo Entier
DateSe Date
HeureDeb Heure
HeureFin Heure
…………………………………………………………………………………………………
…………………………………………………………………………………………………
…………………………………………………………………………………………………
……………………………………………
2) Est-ce qu’on peut insérer les occurrences suivantes dans la table Seance (‘’A01’’,1,10-05-
2017,10 :00,12 :00)(‘’A01’’,1,10-05-2017,14 :00,15 :00)
…………………………………………………………………………………………………………..
3) Écrire une requête qui permet d’afficher

- Afficher la liste des séances (DateSe, HeureDeb, HeureFin), relatives à l’activité


‘Dance’, réalisées durant le mois novembre 2016.
- Afficher la liste des activités (LibAct) programmées pour le 10-10-2016
- Afficher la liste des coachs (nom, prénom) qui ont réalisé des activités sans redondance.

Exercice 3 :
1) Pour chacune des commandes suivantes donner la liste des contraintes appliquées sur
la table :
Commandes Liste de contraintes
CREATE TABLE DELEGATION ( …………………………………………
CodeDel Varchar(3) PRIMARY KEY, …………………………………………
LibDel Varchar(40) NOT NULL, …………………………………………
DateDel Date, …………………………………………
PopDel Decimal(9,3), …………………………………………
SupDel Decimal(6,3), …………………………………………
CodeGouv Varchar(2), …………………………………………
CONSTRAINT FOREIGN KEY (CodeGouv) …………………………………………
REFERENCES GOUVERNORAT …………………………………………
(CodeGouv)); …………………………………………
ALTER TABLE DELEGATION ADD …………………………………………
CONSTRAINT CA CHECK SupDel > 0; …………………………………………

- 39 -
Sujets

CREATE TABLE Ordre ( …………………………………………


IdORD int NOT NULL PRIMARY KEY, …………………………………………
NumORD int NOT NULL, …………………………………………
IDPer int …………………………………………
FOREIGN KEY REFERENCES Personne(IDPer)) …………………………………………
;
2) détecter les anomalies dans les commandes SQL suivantes puis proposer une correction :
Commandes Anomalies Correction
CREATE TABLE seance (
IDk int PRIMARY KEY,
IDP int PRIMARY KEY,
nbHeure int);
ALTER TABLE seance ADD
CONSTRAINT dateS date;
DROP FROM seance
WHERE nbHeure <2;

Exercice 4 :
Soit la base de données décrite par le schéma suivant :
PIECE (NOP, DESIGNATION, COULEUR, POIDS)
SERVICE (NOS, INTITULE, LOCALISATION)
COMMANDE (NOP#, NOS#, QUANTITE)
Questions :
1) Créer la table COMMANDE en respectant les contraintes d’intégrité.
2) La QUANTITE est une valeur strictement positive. Ecrire la requête SQL permettant
d’apporter la modification à la table COMMANDE.
3) Ajouter les informations suivantes dans les tables correspondantes :
(‘’P1’’,’’four’’,’’rouge’’,15) (‘’P1’’,’’S01’’,12) (‘’S01’’,’Achat’’,’’Tunis’’)
4) Ecrire les requêtes SQL permettant d’afficher :
- Le nombre de services ayant des commandes.
- Liste des pièces commandées (DESIGNATION,POIDS) par le service ‘’S01’’
- Numéro des services qui ont commandé la pièce ‘P1’ et la pièce ‘P3’
- La quantité moyenne commandée pour la pièce ‘P3’.
- La moyenne des pièces commander par service(INTITULE,
DESIGNATION,moyenne)
5) L’administrateur de cette base de données désir ajouter un nouvel utilisateur pour cette
base dont le nom est ’’util1’’ et le mot de passe ‘’bac2017’’ ;
6) Attribuer les droits d’insertion, de suppression et d’affichage sur la table commande
pour l’utilisateur ‘util1’
7) Supprimer le droit de suppression attribué à l’utilisateur ‘util1’

- 40 -
Sujets

Exercice 5 :
Une agence privée souhaite faire un recensement pour analyser les tendances des jeunes entre
18 et 25 ans dans les domaines du sport et de l’Internet. Afin de collecter les informations
nécessaires, elle a procédé à travers ses agents, au choix d’un échantillon (ensemble de jeunes)
pris aléatoirement où chaque jeune remplit un questionnaire dont un exemple est ci-après :
Informations personnelles
N° CIN : 08194523
Nom : Ben salah Prénom : Mohamed Sexe : Masculin
Date de naissance : 29/09/1995 Adresse : Tunis Niveau d’enseignement :
Universitaire x Secondaire Primaire Analphabète
Sports pratiqués
Sports collectifs : Sports individuels :
x Football Tennis
Handball x Natation
Volleyball x Judo
Basketball Cyclisme
x Rugby Athlétisme
Internet
Service exploités :
Services Nombre d’heures hebdomadaire de connexion
x Réseaux sociaux 14
Message électronique
x Téléchargement de fichier 5
Jeux vidéo
x E-commerce 3
E-learning
Navigateurs :
x Internet explorer x Mozilla Firefox
Google chrome Autres
NB : les sports, les services et les navigateurs Internet sont identifiés par des codes.
Question :
On se propose d’implémenter une base de données permettant de gérer les données des
questionnaires collectées. Pour cela, on vous demande :
1. Etablir la liste des colonnes (nom colonne, description, sujet)
2. La représentation textuelle de cette base de données

- 41 -