Vous êtes sur la page 1sur 11

TP TP TP TP Oracle Oracle Oracle Oracle

1



Fascicule des Travaux Pratiques Fascicule des Travaux Pratiques Fascicule des Travaux Pratiques Fascicule des Travaux Pratiques
ORACLE ORACLE ORACLE ORACLE


Module Module Module Module : Bases des Donnes : Bases des Donnes : Bases des Donnes : Bases des Donnes



Elabor par Elabor par Elabor par Elabor par : Mme. KHARRAT CHAKER Fatma : Mme. KHARRAT CHAKER Fatma : Mme. KHARRAT CHAKER Fatma : Mme. KHARRAT CHAKER Fatma







TP TP TP TP Oracle Oracle Oracle Oracle
2
TP 1 : Algbre relationnelle et dbut SQL

Exercice 1 :
Soit le schma relationnel :
EMP(Matr, NomE, Poste, DatEmb, Sup, Salaire, Commission, NumDept)
DEPT(NumDept, NomDept, Lieu)
PROJET(CodeP, NomP)
PARTICIPATION(Matr, CodeP, Fonction)
Donnez la suite d'oprations lmentaires de l'algbre relationnelle pour obtenir les
donnes qui correspondent aux listes suivantes :
1. Matricules et des noms des employs qui ont t embauchs avant le 1er
janvier 1995.
2. Noms des employs qui ont le poste de secrtaire.
3. Noms des employs avec le nom du dpartement o ils travaillent.
4. Noms des employs qui travaillent dans le dpartement FINANCES.
5. Numros de dpartement qui ont des ingnieurs.
6. Noms des employs qui gagnent plus que leur suprieur.
7. Matricules des employs qui participent tous les projets.
8. Noms des employs qui participent tous les projets.
9. Numros des dpartements qui participent tous les projets.
10. Noms de dpartements qui ont tous les postes.
11. Noms des employs qui ne participent aucun projet.
12. Noms des dpartements qui ont des ingnieurs et des secrtaires.
Exercice 2 : cration de tables
Crer les deux tables PROJET et PARTICIPATION pour traduire le schma relationnel
donn l'exercice 1 (gestion des employs et des projets).
TP TP TP TP Oracle Oracle Oracle Oracle
3
Comme ces 2 tables seront utilises par tous les TP suivants, faites valider cet
exercice par l'enseignant avant de continuer.

Exercice 3 : Quelques interrogations simples
1. Slectionner toutes les colonnes de toutes les ranges de la table EMP.
2. Afficher la liste des matricules.
3. Afficher les noms des employs du dpartement 20.
4. Trouver le poste des employs dont le salaire est suprieur 1300 DT.
5. Afficher le nom des commerciaux, et la somme totale perue (salaire +
commission).
Exercice 4 : Interrogations sur une seule table
1. Liste des divers postes, en n'affichant chaque poste qu'une seule fois.
2. On considrera qu'une commission NULL correspond un employ qui ne
touche aucune commision (donc commission = 0).
Noms des employs dont le salaire est infrieur la commission. Noms des
employs dont le salaire est suprieur la commission.
3. Noms des employs qui ne touchent pas de commission.
4. Noms des employs dont la 2me lettre est un E.
5. Numros de dpartement dont au moins un employ touche une commission.
6. Noms des employs qui touchent entre 600 et 1000 DT.




TP TP TP TP Oracle Oracle Oracle Oracle
4
TP 2 : Modification des donnes ; transactions ; contraintes
d'intgrit ; jointures

Exercice 1 : modification des donnes
1. Crer un nouveau dpartement : 50, COMPTABILITE, TUNIS
2. Crer un nouveau dpartement : 60, DIRECTION
3. Dupliquer l'enregistrement du dpartement 20, en lui donnant le numro de
dpartement 25 (en utilisant un select pour rcuprer les informations sur le
dpartement 20).
4. Le dpartement 60 s'est maintenant tabli dans la ville de MONASTIR.
Enregistrer le fait dans la table DEPT.
5. Promouvoir Mr. Ayachi au poste de PDG, dans le dpartement60.
6. liminer de la table EMP la ligne de Mr. Ayadi qui prend sa retraite.
7. Augmenter de 10 % le salaire de tous les employs du dpartement 10.
8. Mr. Hammami vient d'tre embauch comme commercial au salaire de 1000
DT. L'enregistrer sous le matricule 7910 dans le dpartement 30.
Exercice 2 : modifications un peu plus compliques
1. Enregistrez les participations suivantes aux projets :
1. Au projet SPORTS (vous supposerez que vous connaissez les
matricules et le code du projet SPORTS) : Ayadi, Hammami
2. Au projet QUALITE (sans connatre ni les matricules des employs, ni
le code du projet SPORTS) : Ben Arab, Hammami
2. Enregistrez les nominations de
o Ayadi comme chef du projet SPORTS,
o Hammami comme trsorier.
3. Les dpartements de SFAX sont supprims et leurs employs sont raffects
au dpartement 40. Mettre jour les tables DEPT et EMP.
Exercice 3 : transactions et contraintes
TP TP TP TP Oracle Oracle Oracle Oracle
5
Commencez une nouvelle transaction (ne pas oublier de le faire !!).
1. Supprimez tous les employs sauf ceux du dpartement 10. Si vous n'y arrivez
pas (pourquoi ?), commencez par supprimer les participations aux projets des
employs des dpartements de numros diffrents de 10.
2. Affichez nom, poste, dpartement, salaire, commission pour tout le personnel.
Conservez votre requte dans un fichier emp.sql (commande save de sqlplus).
3. Annulez la transaction en cours. Rcuprez la requte conserve dans le
fichier emp.sql (commande get de sqlplus) et relancez la.
Exercice 4 : contraintes d'intgrit
1. Essayez de supprimer le dpartement 10. Expliquez ce qui se passe. Si vous ne
l'avez pas dj fait, profitez-en pour tudier les instructions (et en particulier
les contraintes) du fichier inibase.sql, qui ont permis la cration des
diffrentes tables.
2. Modifiez la dfinition des tables pour que la suppression du dpartement10
soit autorise et entraine automatiquement la suppression des employs de ce
dpartement.
3. Supprimez le dpartement 10 et vrifiez ce qui s'est pass pour les employs
du dpartement 10.
4. Annulez la transaction et changez les dfinitions des contraintes pour que le
comportement soit le mme qu'au dbut de l'exercice.
Exercice 5 : jointures
1. Affichez le produit cartsien des noms des dpartements par les lieux.
2. Noms des employs et lieu o ils travaillent.
3. Lieu des dpartements (mais pas les noms des dpartements) dans lesquels des
employs touchent une commission, en utilisant une jointure.
4. Noms des suprieurs directs de chaque employ qui a un suprieur (nom des
employs qui ont un suprieur, suivi du nom du suprieur).
5. Noms des employs, avec le nom de leur suprieur direct quand ils en ont un.
6. Nom des employs qui sont le suprieur d'un autre employ.
7. Noms des projets o sont inscrits des employs des dpartements de Tunis.
TP TP TP TP Oracle Oracle Oracle Oracle
6
TP 3: sous-interrogations ; Group by, complments

Exercice 1 : sous-interrogations
1. Lieu des dpartements dans lesquels des employs touchent une commission,
en utilisant cette fois une sous-interrogation et non plus une jointure.
2. Noms et lieux des dpartements dans lesquels il y a au moins un ingnieur.
Pouvez-vous y arriver au moyen d'une jointure ?
Pouvez-vous y arriver au moyen d'une sous-interrogation ?
3. Noms et lieux des dpartements dans lesquels il n'y a pas d'ingnieur.
Pouvez-vous y arriver au moyen d'une jointure ?
Pouvez-vous y arriver au moyen d'une sous-interrogation ?
Exercice 2 : sous-interrogations "avances"
1. A l'aide d'une sous-interrogation synchronise, dressez la liste des employs
qui gagnent moins de 50 % du salaire de leur suprieur direct.
2. Noms des employs qui gagnent plus que tous les commerciaux.
3. Noms des employs qui gagnent plus que tous les commerciaux de leur
dpartement.
Donnez une solution qui donne les noms des employs qui sont dans un
dpartement qui n'a pas de commerciaux (ce qui est une rponse logiquement
valable, n'est-ce pas ?). Donnez une solution qui ne donne pas les noms des
employs qui sont dans un dpartement qui n'a pas de commerciaux.
4. En utilisant une sous-interrogation plusieurs colonnes, dressez la liste des
employs ayant le mme poste et le mme suprieur que Hammami.
Exercice 3 : divisions ?
1. Numros des dpartements qui participent tous les projets (chaque projet a
au moins un employ de ces dpartements).
2. Liste des noms des employs qui participent tous les projets.
3. Numros des dpartements dont tous les employs gagnent plus de 700 DT.
TP TP TP TP Oracle Oracle Oracle Oracle
7
Exercice 4 : fonctions
1. Pour chaque employ, affichez dans une colonne le plus grand du salaire ou de
la commission.
2. En utilisant la table DUAL (table bidon une ligne et une colonne), affichez la
date du jour.
Exercice 5 : mettons un peu d'ordre !
En une seule requte, liste des employs, prsents selon cet ordre (vous pourrez
utiliser la fonction decode) :
d'abord les directeurs par ordre alphabtique,
puis les autres employs par date d'embauche la plus rcente.
Exercice 6 : regroupements
1. Nombre d'employs de chaque dpartement.
2. Total des salaires des employs qui ont le mme suprieur direct que Ayachi.
3. Nom de l'employ qui a le plus gros salaire. Et si l'on veut les noms des
employs qui ont les trois plus gros salaires (avec leur salaire) ?
4. Noms des employs qui ont le plus gros salaire de leur dpartement. Et si l'on
veut la liste des trois plus gros salaires de chaque dpartement ?
Exercice 7 : toujours plus...
1. Liste des numros des dpartements qui ont plus d'employs que le
dpartement 10.
2. Trouver le nom du (ou des) dpartement(s) qui a le plus d'employs.
Exercice 8 : trier
1. Liste des numros de dpartement tris par nombres d'employs.
2. Liste des employs, tris par salaire dcroissant, avec, pour chaque employ,
le nombre d'employs qui gagnent plus.
TP TP TP TP Oracle Oracle Oracle Oracle
8
3. Liste des employs avec, pour chaque employ, son rang dans la hirarchie
des salaires (1 pour celui qui gagne le plus). Essayez ensuite de faire afficher
en plus le salaire de l'employ.
Est-ce que vous pouvez en dduire une mthode pour rsoudre les questions
de l'exercice 6 qui portent sur les 3 plus gros salaires ?
Exercice 9 : quelques complments
1. Liste des noms d'employs dont la 3me lettre n'est ni un R ni un E ni un A.
2. Liste des numros de dpartements dont tous les employs touchent une
commission.
3. Dessinez l'histogramme des salaires : pour chaque employ, on dessine
horizontalement un nombre de '*' proportionnel la valeur du salaire vous
pourrez utiliser les fonctions LPAD et ROUND ).
4. Utilisez une intersection pour trouver les numros des dpartements qui ont
la fois des secrtaires et des ingnieurs (attribut poste).









TP TP TP TP Oracle Oracle Oracle Oracle
9
TP 4 : Vues, index, accs concurrents

Exercice 1 : vues
1. Crez une vue VEMP contenant : le matricule, le nom, le numro de
dpartement, la somme de la commission et du salaire baptise GAINS, le lieu
du dpartement.
2. Slectionnez les lignes de VEMP dont le salaire total est suprieur 1000 DT.
3. Essayez de mettre jour le nom de l'employ Hammami travers la vue
VEMP.
4. Crez une vue VEMP10 qui ne contienne que les employs du dpartement 10
de la table EMP (n'utilisez pas l'option CHECK pour cette cration). Insrez
dans cette vue un employ BEN ABDALLH qui appartient au dpartement 20.
Essayez ensuite de retrouver cet employ au moyen de la vue VEMP10, puis
au moyen de la table EMP.
5. Dtruisez cette vue VEMP10 et recrez-la avec l'option CHECK.
6. Essayez d'insrer avec la vue VEMP10 un employ KHARRAT pour le
dpartement 30. Que se passe-t-il ? Essayez de modifier le dpartement d'un
employ visualis l'aide de cette vue.
7. Liste des salaires des employs avec le pourcentage par rapport au total des
salaires de leur dpartement (utilisez une vue qui fournira le total des salaires).
Vous pourrez chercher une autre solution qui n'utilise pas de vue mais un
select embot dans le from.
Exercice 2 : index
1. Crez un index avec unicit des valeurs indexes sur la colonne nomE de la
table EMP et un index sur la colonne dept de la table EMP.
2. Comment savoir quels index ont t crs sur la table EMP ?
3. Supprimez l'index de la colonne NOME.
Exercice 3 : droits
TP TP TP TP Oracle Oracle Oracle Oracle
10
1. Insrez votre propre nom dans la table EMP, avec le numro de matricule et
dpartement que vous voudrez, et validez la transaction par un commit.
2. Arrangez vous avec un autre tudiant : accordez vous mutuellement le droit de
slection sur votre table EMP et allez consulter sa table EMP. Vrifiez que
vous avez bien son nom dans la table EMP.
3. Vrifiez que les ordres INSERT et UPDATE vous sont interdits sur la table
EMP qui ne vous appartient pas. Accordez vous mutuellement l'autorisation de
modification sur la table EMP. Essayez nouveau les ordres INSERT et
UPDATE.
4. Enlevez les autorisations que vous venez d'accorder.

Exercice 4 : accs concurrents
1. Ouvrez deux sessions sous le mme nom.
2. Faites des modifications dans une des sessions et voyez si les modifications
sont connues de l'autre session.
3. Faites un COMMIT des modifications et voyez si les modifications sont
connues de l'autre session.
4. Modifiez une mme ligne dans les deux sessions. Que se passe-t-il ?
5. Faites un COMMIT sur la session qui a fait les modifications en premier. Que
se passe-t-il ?
6. Utilisez un SELECT FOR UPDATE sur une des sessions et essayez de
modifier les lignes bloques avec l'autre session.
Exercice 5 : read only
1. Ouvrez une nouvelle transaction en "READ ONLY".
2. Ouvrez en parallle une deuxime transaction dans laquelle vous modifiez des
salaires.
3. Validez cette deuxime transaction. Voyez-vous les modifications dans la
premire transaction ?
4. Essayez de modifier des donnes dans la premire transaction.
TP TP TP TP Oracle Oracle Oracle Oracle
11
5. Que se serait-il pass si la premire transaction n'avait pas t en "READ
ONLY" ? Vrifiez-le aprs avoir termin la premire transaction.
Exercice 6 : interblocages
1. Ouvrez 2 sessions et provoquez un interblocage en bloquant des tables. Voyez
comment Oracle ragit.
2. Provoquez un blocage en commenant par lancer un update que vous ne
validez pas tout de suite et un blocage en mode share dans l'autre session.
Voyez comment Oracle ragit.