
Université de Provence
 Bases de données 
Licence d’Informatique
 TP No 2 
Troisième année
 SQL_PLUS d’Oracle 
 
 
  Page 1 sur 3 
Il est conseillé, pour ce TP, de travailler le plus possible par l’intermédiaire de plusieurs fichiers contenant les 
commandes SQL_PLUS. Il est conseillé de nommer ces fichiers de façon significative, avec une extension 
.sql
. 
Ces fichiers permettront de travailler selon vos besoins en dehors des séances de TP dans les salles en accès 
libre. Attention : n’oubliez pas de vous connecter à capucine via la commande 
ssh capucine
 afin de pouvoir 
utiliser SQL_PLUS. 
1) Création de tables 
Créer les tables correspondant aux relations données ci-dessous (la détermination des types de données adéquats 
est à votre charge, mais, on considère que les heures de départ et d’arrivées sont sans les minutes). On n’oubliera 
pas de créer les clés primaires et les clés étrangères (respectivement via les contraintes 
PRIMARY KEY
 (ci-
dessous en caractères soulignés) et 
FOREIGN KEY … REFERENCES
 (ci-dessous avec un caractère #). 
Ville(numville,nomville,codepostal) 
Train(numtrain,#villedepart,#villearrivee,heuredepart,heurearrivee,jour) 
Passager(numpassager,nompass,age,#reftrain) 
2) Création de données 
Créer un ensemble de données correspondant au schéma précédent (une dizaine de villes, une quinzaine de 
trains, et une trentaine de passagers). Pour créer les valeurs de la colonne jour, il faut utiliser la fonction 
TO_DATE(’val’,’fmt’)
 où 
fmt
 indique le format d’entrée de la date tel que considéré dans 
val
. 
3) Modification de tables et de données 
On étend la relation Passager en lui rajoutant une colonne : 
Passager(numpassager,nompass,age,#reftrain,categorie) 
Répercuter cette modification sur la table Passager correspondante (commande 
ALTER TABLE
). 
Répercuter cette modification sur les données (commande 
UPDATE … SET
) en considérant les étapes suivantes : 
− Déterminer et exécuter une commande SQL_PLUS permettant de compléter automatiquement tous les 
passagers de moins de 18 ans et ceux de plus de 60 ans en leur attribuant la catégorie 2. 
− De même, déterminer et exécuter une commande SQL_PLUS permettant de compléter automatiquement 
tous les passagers dont le nom commence par ‘R’ ou ‘C’ en leur attribuant la catégorie 1 (cf fonctions SQL 
sur les chaînes). 
− Pour tous les passagers restants (ie dont la valeur est 
NULL
), déterminer et exécuter une commande 
SQL_PLUS leur attribuant la catégorie 3. 
4) Ajout de tables 
− Ajouter les tables correspondantes aux relations ci-dessous dans la base de données : outre les contraintes de 
clés, certaines contraintes dites d’intégrité peuvent être écrites via la clause 
CONSTRAINT
 (par exemple, la 
distance entre deux villes ne peut pas être négative). Spécifier certaines contraintes sur ces tables ; modifier 
les tables précédentes pour leur ajouter de telles contraintes d’intégrité. 
Tarif(#train,categorie,prix) 
Distance(#ville1,#ville2,nbkm) 
− Insérer dans la base de données quelques nouveaux tuples pour instancier ces deux tables. Observer le 
comportement de SQL_PLUS lorsque des tuples violant les contraintes d’intégrité sont définis. 
− Ajouter la table correspondant à la relation 
Categorie(numcat,intitule)
 dans la base de données, et 
enfin trois tuples de cette table pour les catégories 1, 2 et 3. Comment répercuter intelligemment cet ajout de 
table sur les définitions des tables 
Passager
 et 
Tarif
 ?