Vous êtes sur la page 1sur 3

DEPARTEMENT D’INFORMATIQUE

FACULTE DES SCIENCES ET TECHNIQUES FILIERE : BCG


UNIVERSITE SIDI MED BEN ABDELLAH SECTION : A-B-C
ANNEE 2019-2020

Série TD N°3 - Solution


Objectif de la série : Langage SQL sous MS Access : LDD (CREATE, ALTER, DROP) et
LMD (INSERT, UPDATE, DELETE).
Soient les tables suivantes :

Module Etudiant
numM Intitulé numE nomPre dateNais
1 Biologie animale E01 Charifi Youssef 15-05-1995
2 Bases de données E02 Alami Ali 01-01-1996
3 Géodynamique externe E03 Bennani Omar 29-06-1995
…. ….. …. …. …

Notes
numE numM noteTP noteExam
E01 2 11,5 13.0
E02 3 16,25 15,5
E01 3 10,0 13,5
E03 1 9,5 8,0
…. ….. …. ….

1. Création des tables


Créez les tables : Etudiant et Notes

Create table Etudiant(


numE char(4),
nomPre char(30),
dateNais date)

Create table Notes(


numE char(4),
numM integer,
noteTP float,
noteExam float)

2. Modification de la structure d’une table


Ecrire la requête SQL pour :
2.1 Augmenter la taille de la colonne : nomPre, de la table Etudiant, à 50 caractères.
Alter table Etudiant Alter nomPre char(50)
2.2 Ajouter la colonne email à la table Etudiant.
Alter table Etudiant add email char(40) ;
2.3 Supprimer la colonne email à la table Etudiant.
Alter table Etudiant drop email

~ 1/2~
3. Définition des contraintes d’intégrité au moment de la création de la table
Créer une nouvelle version de la table Etudiant, nommée Etudiant2, mais cette fois-ci
avec les contraintes d’intégrité suivantes :
 numE : est une clé primaire.
 NomPre : est un champ non vide toujours renseigné.
 dateNais : est un champ unique et toujours renseigné.
N’oublier pas d’attribuer des noms à ces contraintes

Plusieurs solutions possibles. L’objectif est d’utiliser les 3 méthodes pour ajouter des
contraintes

Create table Etudiant2(


numE char(4),
nomPre char(30) constraint nn NOT NULL,
dateNais date NOT NULL,
constraint c_pk primary key(numE),
constraint c_uni unique(dateNais))

4. Suppression des contraintes


Donner les commandes SQL permettant de supprimer toutes les contraintes définies
dans la table Etudiant2.

Alter table Etudiant2 drop constraint c_pk


Alter table Etudiant2 drop constraint c_uni

On ne peut pas supprimer les contraintes NOT NULL avec « alter…..drop ». Pour les
supprimer il faut utiliser : Alter table Etudiant2 alter nomPre char(30)

5. Suppression des tables


A l’aide du SQL, supprimer la table Etudiant2.
Drop table Etudiant2
6. Définition des contraintes d’intégrité après création des tables
Formulez les requêtes SQL pour ajouter, avec des noms de contraintes, les
contraintes suivantes :
 numM de la table Module : est une clé primaire.
 intitulé de la table Module : est un champ non vide toujours renseigné.
 numE de la table Notes : est une clé étrangère.
 (numE, numM) de la table Notes : est une clé primaire.

Alter table Module add constraint module_pk primary key(numM)


Alter table Module alter intitule char(50) Not Null

~ 2/2 ~
Alter table Notes add constraint notes_fk foreign key(numE) references
Etudiant(numE)

Alter table Notes add constraint notes_pk primary key(numE,numM)

7. Ajout des données à une table : INSERT


Ecrire les requêtes SQL pour :
7.1. Insérer la 1ère ligne de la table « Etudiant »
Insert into Etudiant (numE , nomPre, dateNais)
Values( 'E01', 'Charifi Youssef', #15-05-1995#)
7.2. Insérer la 1ère ligne de la table « Notes »
Insert into Notes (numE , numM, noteTP, noteExam)
Values( 'E01', 2, 11.5, 13.0)

7.3 Est-ce qu’on peut ajouter cette ligne : (E100, 3, 15, 13,5) dans la table « Notes »?
Justifier.
Non, car l’étudiant 100 ne se trouve pas dans la table Etudiant.
7.4 Est-ce qu’on peut ajouter cette ligne : (E01, 3, 11, 13,5) dans la table « Notes »?
Justifier.
Non, car il existe déjà une ligne dans la table Notes avec la même valeur de la clé
primaire (E01, 3)
8. Modification des lignes d’une table : UPDATE
Ecrire les requêtes SQL pour :
8.1 Modifier la note de TP de l’étudiant : E01 dans le module 3 en 11.75
Update Notes
Set noteTP=11.75
Where numE=”E01”
And numM=3
8.2. Est-ce qu’on peut remplacer le numéro de l’étudiant « E02 » par « E06 » dans la
table Notes ? Justifier.
Non, car E06 ne se trouve pas dans la table étudiant
9. Surpression des lignes d’une table : DELETE
Ecrire les requêtes SQL pour :
9.1 Supprimer l’étudiant E02. Est-ce qu’on peut supprimer cet étudiant ? Justifier.
Delete from Etudiant where numE= ‘’E02 ‘’
Non, car il est déjà référencé dans la table notes
9.2 Est-ce qu’on peut supprimer l’étudiant E07 ? Justifier.
Non, car il n’existe pas

~ 3/2~

Vous aimerez peut-être aussi