Académique Documents
Professionnel Documents
Culture Documents
Architecture client/serveur
Dans une architecture client/serveur, une base de données est considérée comme une
ressource partagée par un ensemble d'applications situées sur les postes clients.
La machine qui gère cette base de données est appelée «Serveur »
1
Base de données : Présentation
2
Base de données : Présentation
Formée par un ou plusieurs champs, qui existe aussi dans une autre table comme clé primaire. Il assure la liaison
(association) entre les deux tables.
Les contraintes
1. Une contrainte est une règle appliquée à une colonne ou à une table et qui doit être toujours vérifiée à fin
d’assurer l’intégrité des données.
1. On distingue trois types de contraintes :
1. Contrainte d’intégrité de tables : Permet d’assurer l’unicité des lignes des tables. Chaque table
doit avoir une la clé primaire.
2. Contrainte d’intégrité référentielle : Permet d’assurer qu’une clé secondaire d’une table est
reliée à une clé primaire d’une autre table. Elle est représentée sous forme de lien entre tables.
3. Contrainte de domaine : s’assurer de la validité des valeurs des colonnes (obligatoire ou pas,
supérieur à zéro , ….)
Série n°1
Exercice 1 :
3
Base de données : Présentation
Exercice 2 :
Exercice 3 :
Exercice 5 :
Que présente chaque colonne de la table élève ? …………………………..
En se basant sur le tableau suivant, par quoi est décrit chaque champs ? …………………………………..
Nom: Elève
Description: Liste des élèves de lycée zouiet elmagaiz
Exercice 6 :
Dans les tables suivantes, identifier les attributs permettant d’identifier l’entité d’une manière unique.
Table : OUVRIER
Table : FILM
Table : LIVRE
Table : VOITURE
Ci-dessous, on présente le contenu des trois tables Client, Article et Facture d’une base de données. Avec :
Table Facture
Table Client Table Article
N°Fact DateFact CodCl CodArt
CodeArt LibArt PrixArt
125 25/01/2023 123 012365
Codecl Nomcl Prencl 003445 PC HP 1380
126 26/01/2023 426 045696
123 Mrad Amine 004516 PC IBM -1490
127 18/02/2023 456 004516
426 Abbes Amine 012365 PC SIEM. 1320
128 22/02/2023 456 023146
456 Abbes Eya NB : 023146 PC DELL 1200 On
129 03/03/2023 789 111111
789 Nouri Ayoub 045696 PC SIEM. 1300
130 03/03/2023 123 003445
789 Sallami Ahlem 045696 IMP. HP 420
suppose qu’une facture ne concerne qu’un seul
article. Questions : En se basant sur les contenus de ces tables, il apparaît que trois contraintes d’intégrité n’ont pas été
respectées. Préciser l’anomalie et le nom de contrainte non respectée.
………………………………………………………………………………
……………………………………………………………………………….. ……………………………………………………………………………..
………………………………………………………………………………..
……………………………………………………………………………..
………………………………………………………………………………..
………………………………………………………………………………..
……………………………………………………………………………..
………………………………………………………………………………..
2. Créer cette base de données en lui attribuant le nom "BD num de groupe".
3. Créer les différentes tables en précisant la clé primaire pour chacune d’elles et en se référant à la définition des
champs présentée dans le tableau suivant :
6
Base de données : Présentation
7
Base de données : Présentation
C1 Numérique 8 OUI
C2 texte 10 OUI
C5 numérique 10 OUI
C6 texte 20 OUI
Create table t1 (
C1 int(8) primary key,
C2 varchar(10) not null, Create table t2 (
C3 décimal(4.2) default 1000.23 , C5 int(10) primary key,
C4 date check (c4 <= curdate( )), C6 varchar(20) not null) ;
C5 int(10) references T2(c5) on delete cascade) ;
8
Base de données : Présentation
Retenons : La commande du langage SQL permettant de créer une table est la commande CREATE TABLE.
La forme générale de cette commande est la suivante :
CREATE TABLE nom_table(
Nom_Colonne Type_colonne[[NOT]NULL][DEFAULT valeur ][Contraintes sur colonne (1)],
…. ,
[Contraintes sur la table(2)] ) ;
(1) (2)
CONSTRAINT nom_contrainte Se sont des contraintes fonctionnant sur plusieurs champs à la fois
4. Les types de données : Pour chaque colonne, il faut préciser le type de données parmi les types
suivants:
5. Contraintes d’intégrité :
Les contraintes d’intégrité doivent être exprimées dès la création de la table grâce aux mots clés suivants:
Clause Rôle
Exemples:
1. Pour ajouter une colonne Tel à la table clients :
ALTER TABLE clients ADD COLUMN (tel int(8) ) ;
2. Pour modifier le type de la colonne age en type date :
ALTER TABLE clients MODIFY Age DATE;
3. Pour supprimer la colonne email de la table clients
ALTER TABLE clients DROP COLUMN email ;
4. Supposons que la table clients a été crée sans clé primaire, pour ajouter donc la contrainte d’intégrité clé
primaire pour cette table on utilise la commande suivante :
ALTER TABLE clients ADD PRIMARY KEY (cin) ;
5. Pour supprimer la clé primaire de la table detail_commande :
ALTER TABLE detail_commande DROP PRIMARY KEY ;
10
Base de données : Présentation
6. Pour désactiver une contrainte d'intégrité on utilise l’option DISABLE. Lorsqu'une contrainte est désactivée, le
SGBD ne va plus effectuer le contrôle imposé par cette contrainte. Par exemple pour désactiver la clé primaire
de la table clients
ALTER TABLE clients DISABLE PRIMARY KEY ;
Lorsque cette clé primaire est référencée dans une ou plusieurs autres tables, il faut supprimer les clés étrangères dans les
tables qui s'y référent avant de procéder à la suppression de la clé primaire.
7. L'option ENABLE permet de réactiver une contrainte d'intégrité. Lorsqu'une contrainte est réactivée, le SGBD
va de nouveau effectuer le contrôle imposé par cette contrainte.
Par exemple pour réactiver la clé primaire de la table clients
ALTER TABLE clients ENABLE PRIMARY KEY ;
2-La suppression d'une table :
Elle se fait en suivant la syntaxe suivante: Exemple:
DROP TABLE Nom_table; 8. Pour supprimer la table clients :
DROP TABLE clients ;
11
Base de données : Présentation
12
Base de données : Présentation
7. Ajouter une contrainte pour la colonne DATE_acq de la table véhicule pour qu’elle soit comprise entre 1990 et 2016
8. Ajouter la valeur par défaut « Tunis » à la colonne ville de la table Client
9. Supprimer la clé primaire de la table location puis définir les 3 colonnes NCIN_Cli, Immat_vehicule et date_loc
comme clé primaire
10. Désactiver la contrainte clé primaire de la table client
11. Réactiver cette contrainte
12. Créer une table loc puis la supprimer
14
Base de données : Présentation
1. Syntaxe :
INSERT INTO nom_table [(liste des colonnes)] VALUES (valeurs) ;
2. Remarques :
1. Les valeurs saisies doivent respecter l’ordre, le type et les contraintes d’intégrité.
2. Les chaînes de type caractères ou de type date sont mises entre apostrophes (‘ ‘) et la date doit être sous la forme
AAAA-MM-JJ .
3. Exemple :
INSERT INTO Location (Immat_Vehicule, NCIN_Cli , Date_Loc , Duree_Loc, Cout_Loc )
VALUES ('118TN2064', '04215488','2006-06-12',6,100);
INSERT INTO Client (NCIN_Cli, Nom_Cli , Prenom_Cli, Ville) VALUES ( 'O4215488' ,'Aouadi', 'Anis','Tunis');
1. Suppression de lignes :
1. Syntaxe :
15
Base de données : Présentation
Syntaxe
SELECT [DISTINCT] *|liste_champs
FROM table;
1. Distinct : permet d’afficher un seul exemplaire des lignes identiques du résultat trouvé.
2. *: désigne tous les champs de la table
3. La liste des champs sert comme entête de colonnes (alias)
4. S’il y a plus qu’un champ à spécifier il faut les séparer par des virgules.
Exemple
SELECT *
FROM Client ;
16
Base de données : Présentation
FROM table
WHERE condition;
On peut utiliser plusieurs opérateurs pour construire une condition ; <, >, <=, >=, <>, =
On peut combiner plusieurs conditions ; AND, OR et NOT.
Un texte est encadré par deux apostrophes (‘ ‘).
On peut utiliser aussi :
2. BETWEEN : pour encadrer une valeur. Exemple: BETWEEN 100 AND 200
3. IN : pour créer une liste. Exemple: IN (‘Paris’, ‘Montréal’, ‘London’)
4. IS NULL : la valeur est nulle
5. IS NOT NULL : la valeur n’est pas nulle
6. LIKE : pour utiliser les caractères génériques Exemple : LIKE ‘_A%’
Exemple
SELECT *
FROM Location
WHERE Duree_Loc>= 3;
SELECT Prenom_Cli
FROM Client
WHERE Nom_cli IN (‘Ahmed’, ‘Mahmoud’, ‘Mohamed’);
SELECT *
FROM Client
WHERE Ville LIKE '%Menzel';
1. 'Menzel%' commence par Menzel
2. '%Men%' contient le mot Men
3. '_M%' dont le 2ème caractère est M
4. Ville LIKE [B-D]% à On sélectionne les villes dont la première lettre du nom est entre le B et le D.
SELECT * FROM Client
WHERE adr_Cli IS NULL;
17
Base de données : Présentation
Table client
Table vehicule
……………………………………………………………………………………………………….
…………………………………………………………….
……………………………………………………………………………………………………….
……………………………………………………………………………………………………….
……………………………………………………………………………………………………….
……………………………………………………………………………………………………….
……………………………………………………………………………………………………….
……………………………………………………………………………………………………….
……………………………………………………………………………………………………….
………………………………………………………………………………………………………………………………
……….
3. Supprimer la ligne suivante :
……………………………………………………………………………………………………….
……………………………………………………………………………………………………….………………
2. Modifier le NCIN_Cli 04215488 en 04215487 dans la table client.
……………………………………………………………………………………………………….
……………………………………………………………………………………………………….
……………………………………………………………………………………………………….………………………
3. Ajouter 5dt au coût de location de toutes les voitures et les clients.
……………………………………………………………………………………………………….
……………………………………………………………………………………………………….………………
4. Mettre à jour le nom et le prénom de client dont le NCIN_Cli="05986732" à "Nefzi" "Aymen".
……………………………………………………………………………………………………….
……………………………………………………………………………………………………….
……………………………………………………………………………………………………………………………….
19
Base de données : Présentation
………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………
…………………………………………………………………………
…………………………………………………………………………………………………………………
b-Créer la table traite
………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………
………………………………………………
2. D’ insérer les données suivantes à notre base:
Table Patient
Table Séjour
………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………
………………………………………………
3. Ajouter 2 ans à l’âge de patient ayant le numéro "133".
20
Base de données : Présentation
………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………
………………………………………………………………………………………
4. Attribuer la nouvelle adresse "Nabeul" aux patients qui avaient comme adresse "Tunis"
………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………
………………………………………………………………………………………
5. Supprimer tous les séjours ayant pour numéro de chambre "5" ou une date_deb entre " 01-01-2007" et "18-02-
2007".
………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………
………………………………………………………………………………………
6. Ajouter 20 jours à la date_fin de séjour du patient ayant le numéro "6754"
………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………
………………………………………………………………………………………
7. Supprimer tous les enregistrements de la table Sejour.
…………………………..………………………………………………………………………………………
…………………………………………………………………………………………………………………
9. Afficher les noms , les prénoms et le numéro de tel des médecins de spécialité « pédiatrie »
………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………
2. Modifier cette requête en affichant uniquement leur nom prénom et adresse
………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………
3. Ecrire une requête SQL qui permet d’afficher les clients habitant à tunis.
………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………
………………………………………………………………………………………
4. Créer une requête qui permet d’afficher les véhicules ayant la marque « Peugeot »
………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………
………………………………………………………………………………………
5. Modifier la dernière requête pour afficher les véhicules de marque « Peugeot » acquises en 2005
21
Base de données : Présentation
………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………
………………………………………………………………………………………
6. Ecrire une requête SQL qui permet d’afficher les locations ayant une durée supérieure à 10 jours.
………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………
………………………………………………………………………………………
7. Créer une requête qui permet d’afficher les locations ayant une durée de 6 ou 7 jours
………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………
……………………………………………………………………………………
C . Tri:
SELECT [DISTINCT] *|liste_champs
FROM table1
WHERE condition
ORDER BY colonne1[ASC|DESC] [, colonne2[ASC|DESC]..];
Exemple
SELECT noemp, nomemp, fonction, salaire
FROM employe
WHERE num_dep = 30
ORDER BY salaire asc ;
Exemple
1. Afficher le nombre de chauffeurs
SELECT COUNT(*)
FROM Chauffeur ;
2. Afficher le prix maximal et minimal des voyages
SELECT MAX(prix), MIN(prix)
FROM voyage ;
3. Afficher la Moyenne des couts de location
SELECT AVG(Cout_Loc)
FROM Location;
4. Afficher le nombre des locations
SELECT COUNT(*)
FROM Location;
5. Afficher le nombre des clients
SELECT COUNT(Nom_Cli)
FROM Client;
6. Afficher le nombre des clients qui ont loué une voiture
SELECT COUNT( DISTINCT NCIN_Cli)
FROM Location;
23
Base de données : Présentation
Table Voyage
Table Voyageur Colonne Type Taill contraintes
Colonne Type Taille contraintes e
Table réservation
Table Voyage
24
Base de données : Présentation
Questions :
1. Lancer mysql et créer la base gestion_voyages
2. Exprimer en SQL les requêtes suivantes :
1. Projection :
1. R1 : lister la table voyageur
2. R2 : Afficher le prénom, nom et la date de naissance de tous les voyageurs
3. Restriction :
1. R3 : Afficher la liste des voyageurs dont l’adresse est Sfax
2. R4 : Afficher la liste des voyageurs qui sont né en novembre1978
3. R5 : Afficher les noms, prénom et adresses des voyageurs qui sont originaires de (Tunis, Sfax,
Sousse)
………………………………………………………………....
9. R11 : Afficher la liste des voyageurs dont la deuxième lettre du prénom est « a »
………………………………………………………………..
…………………………………………………………………
………………………………………………………………....
10. Tri :
11.R12 : Afficher la liste des voyageurs triée selon les noms dans un ordre croissant
………………………………………………………………..
…………………………………………………………………
………………………………………………………………....
12.R13 : Afficher la liste des voyages triée selon les numéros dans un ordre décroissant
………………………………………………………………..
…………………………………………………………………
………………………………………………………………....
13.R14 : Afficher la liste des voyageurs triée selon les numéros dans un ordre croissant et les noms
dans un ordre décroissant
………………………………………………………………..
…………………………………………………………………
………………………………………………………………....
14. Utilisation des fonctions :
26
Base de données : Présentation
…………………………………………………………………
………………………………………………………………....
3. R19 : Afficher la date de naissance du plus vieux voyageur et celle du plus jeune.
………………………………………………………………..
…………………………………………………………………
4. R20 : Afficher la somme des tarifs.
………………………………………………………………..
…………………………………………………………………
5. R21 : Afficher la moyenne des tarifs.
………………………………………………………………..
…………………………………………………………………
6. R22 : Afficher le plus grand tarif.
………………………………………………………………..
…………………………………………………………………
7. R23 : Afficher le plus faible tarif.
………………………………………………………………..
…………………………………………………………………
8. R24 : Afficher le nombre des réservations confirmées par voyage
………………………………………………………………..
…………………………………………………………………
………………………………………………………………..
Correction série 1
Exercice 2 :
27
Base de données : Présentation
Exercice 3 :
Exercice 5 :
Que présente chaque colonne de la table élève ? des propiétés
En se basant sur le tableau suivant, par quoi est décrit chaque champs ? type taille contraintes...
Nom: Elève
28
Base de données : Présentation
Exercice 6 :
Dans les tables suivantes, identifier les attributs permettant d’identifier l’entité d’une manière unique.
Table : OUVRIER
Table : FILM
Table : LIVRE
Table : VOITURE
29
Base de données : Présentation
Table Facture
Table Client Table Article
N°Fact DateFact CodCl CodArt
CodeArt LibArt PrixArt
125 25/01/2023 123 012365
NB : On suppose qu’une facture 003445 PC HP 1380 ne
concerne qu’un seul article. 126 26/01/2023 426 045696
Questions : En se basant sur les 004516 PC IBM -1490
127 18/02/2023 456 004516
contenus de ces tables, il 012365 PC SIEM. 1320
apparaît que trois contraintes 128 22/02/2023 456 023146
d’intégrité n’ont pas été 023146 PC DELL 1200
respectées. Préciser l’anomalie et le 129 03/03/2023 789 111111
nom de contrainte non respectée. 045696 PC SIEM. 1300
130 03/03/2023 123 003445
045696 IMP. HP 420
Correction TP n°2
1. CREATE TABLE Client(
NCIN_Cli VARCHAR(8) PRIMARY KEY,
Nom_Cli VARCHAR(20) NOT NULL,
5. ALTER TABLE Vehicule ADD CONSTRAINT Vc CHECK (Annee_Acq BETWEEN 1990 AND 2016);
CORRECTION DE L’APPLICATION
2-Alter table matches ADD COLUMN ( lieu int(20))
3-Alter table matches MODIFY lieu varchar
8
9-drop table arbitres
Correc tp3
4. UPDATE Location
SET Cout_Loc= Cout_Loc+5 ;
5. UPDATE Client
SET Nom_Cli='Nefzi', Prenom_Cli='Aymen'
WHERE NCIN_Cli='05986732' ;
Correction Application
La base de données d’un hôpital contient entre autres les tables suivantes :
Patient (num_patient, nom_patient, prenom_patient, adr_patient,age)
Medecin (code_med, nom_med, prenom_med, tel_med, specialite)
Sejour (num_sej, num_chambre, date_deb, date_fin, num_patient#)
Traite (num_patient#, code_med#, date_deb_trait)
32
Base de données : Présentation
Table Séjour
UPDATE Patient
33
Base de données : Présentation
3. Attribuer la nouvelle adresse "Nabeul" aux patients qui avaient comme adresse "Tunis"
UPDATE Patient
SET adr_patient = "Nabeul"
Where adr_patient = "Tunis";
4. Supprimer tous les séjours ayant pour numéro de chambre "5" ou une date_deb entre " 01-01-2007" et "18-02-
2007".
DELETE FROM séjour
(remarque : dans cette question on a supprimé juste les lignes de la table séjour, la table existe encore , mais
pour supprimer toute la table on utilise la commande drop table séjour)
Select nom_cli,prenom_cli,ville
from clients
3. Ecrire une requête SQL qui permet d’afficher les clients habitant à tunis.
7. Créer une requête qui permet d’afficher les locations ayant une durée de 6 ou 7 jours
Where duree_loc =6
Or duree_loc =7
WHERE adr='sfax'
35
Base de données : Présentation
36
Base de données : Présentation
Correction tp1
37
Base de données : Présentation
38
Base de données : Présentation
39
Base de données : Présentation
40
Base de données : Présentation
41
Base de données : Présentation
42
Base de données : Présentation
43
Base de données : Présentation
44
Base de données : Présentation
45
Base de données : Présentation
46
Base de données : Présentation
47
Base de données : Présentation
5)
6)
48
Base de données : Présentation
49
Base de données : Présentation
7)
50
Base de données : Présentation
8)
51
Base de données : Présentation
52
Base de données : Présentation
53
Base de données : Présentation
54
Base de données : Présentation
Correction TP2
55
Base de données : Présentation
4- ajouter colonne
6- supprimer colonne
7- ajouter contrainte
56
Base de données : Présentation
Correction tp3
2-
57
Base de données : Présentation
58
Base de données : Présentation
3-
4-
59
Base de données : Présentation
5-
60
Base de données : Présentation
Correction tp 4
61
Base de données : Présentation
62
Base de données : Présentation
63
Base de données : Présentation
64
Base de données : Présentation
6-
65
Base de données : Présentation
7-
66
Base de données : Présentation
67
Base de données : Présentation
68
Base de données : Présentation
69
Base de données : Présentation
70
Base de données : Présentation
71
Base de données : Présentation
72
Base de données : Présentation
73
Base de données : Présentation
74
Base de données : Présentation
75
Base de données : Présentation
76
Base de données : Présentation
77
Base de données : Présentation
R1
R2
78
Base de données : Présentation
R3
R4
79
Base de données : Présentation
R6 :
80