Travaux Pratiques SQL avec Oracle SQL Developer
Travaux Pratiques SQL avec Oracle SQL Developer
Présentation
Dans ces exercices, vous allez :
Utilisez Oracle SQL Developer pour examiner des objets de données dans le
compte HR (déverrouillé préalablement) ou l’environnement APEX sur le site
[Link]
Tous les exercices écrits utilisent l'environnement de développement Oracle
SQL Developer. Vous pouvez aussi utiliser SQL*Plus ou le navigateur Web
sur le site APEX.
Important : utilisez le « Guide Exercices SQL » qui vous a été fourni.
.
Attention : Les données et le nom de certaines tables des exemples qui sont
présentés dans ce document ne correspondent pas exactement à ce qui existe dans
la base de données ou dans le script load_sample.sql, cette dernière ayant été
créée plus récemment.
Exercice 1
1.1 Première partie
1. Démarrez Oracle SQL Developer à l'aide de l'icône correspondante sur le
bureau.
2. Créer une connexion de base de données pour Oracle SQL Developer pour le
schéma HR
3. Dans le navigateur de connexions, visualisez les objets à votre disposition
sous le noeud Tables. Vérifiez que les tables suivantes sont présentes :
COUNTRIES
DEPARTMENTS
EMPLOYEES
JOB_GRADES
JOB_HISTORY
JOBS
LOCATIONS
REGIONS
4. Naviguez dans la structure de la table EMPLOYEES.
5. Visualisez les données de la table DEPARTMENTS.
6. Ouvrir une feuille de calcul SQL Worksheet
1
Frédéric Brunet
INTECH – ESIEA
Enoncés – Travaux Pratiques SQL
2
Frédéric Brunet
INTECH – ESIEA
Enoncés – Travaux Pratiques SQL
1. Créer une interrogation affichant le nom, l'ID de poste, la date d'embauche et l'ID
d'employé de chaque employé, l'ID d'employé apparaissant en premier. Associez
l'alias STARTDATE à la colonne HIRE_DATE.
Enregistrez votre instruction SQL dans un fichier nommé ex_01_05.sql afin de
pouvoir fournir ce fichier au département des ressources humaines.
Testez l'interrogation enregistrée dans le fichier ex_01_05.sql afin de vérifier qu'elle
s'exécute correctement.
3
Frédéric Brunet
INTECH – ESIEA
Enoncés – Travaux Pratiques SQL
3. Créer des en-têtes de colonne plus descriptifs pour son état sur les employés.
Copiez l'instruction enregistrée dans ex_01_05.sql dans une nouvelle feuille de
calcul SQL Worksheet. Nommez les en-têtes de colonne respectivement : Emp #,
Employee, Job et Hire Date.
Exécutez à nouveau votre interrogation.
Créer un état listant tous les employés avec leur ID de poste. Affichez le nom
concaténé avec l'ID de poste (en séparant les deux par une virgule et un espace) et
intitulez la colonne Employee and Title.
4
Frédéric Brunet
INTECH – ESIEA
Enoncés – Travaux Pratiques SQL
Présentation de l'exercice 2
Dans cet exercice, vous allez générer de nouveaux états à l'aide d'instructions
utilisant les clauses WHERE et ORDER BY. Vous allez inclure des variables avec le
« et commercial & » afin de rendre les instructions SQL génériques et de pouvoir les
réutiliser.
Exercice 2
Créer des interrogations.
1. Créer un état affichant le nom et le salaire des employés qui gagnent plus de 12
000 $. Enregistrez vos instructions SQL dans le fichier ex_02_01.sql. Exécutez votre
interrogation.
2. Ouvrez une nouvelle feuille de calcul SQL Worksheet. Créez un état affichant le
nom et le numéro de département correspondant à l'ID d'employé 176. Exécutez
l'interrogation.
5
Frédéric Brunet
INTECH – ESIEA
Enoncés – Travaux Pratiques SQL
4. Créez un état affichant le nom, l'ID de poste et la date d'embauche des employés
nommés Matos et Taylor. Triez les données par ordre croissant en fonction de la
date d'embauche.
8. Créez un état affichant le nom et l'intitulé de poste de tous les employés qui n'ont
pas de manager.
6
Frédéric Brunet
INTECH – ESIEA
Enoncés – Travaux Pratiques SQL
11. Créer des états sur la base d'un manager. Créez une interrogation invitant
l'utilisateur à indiquer un ID de manager, et générant l'ID d'employé, le nom, le
salaire et le département des employés de ce manager. Trier l'état en fonction d'une
colonne sélectionnée. Vous pouvez tester les données avec les valeurs suivantes :
7
Frédéric Brunet
INTECH – ESIEA
Enoncés – Travaux Pratiques SQL
12. Affichez le nom de tous les employés dont le nom comprend la lettre "a" en
troisième position.
13. Affichez le nom de tous les employés dont le nom comporte un "a" et un "e".
14. Affichez le nom, le poste et le salaire de tous les employés dont le poste est
vendeur ou commis aux stocks, et dont le salaire n'est pas égal à 2 500 $, 3 500 $
ou 7 000 $.
8
Frédéric Brunet
INTECH – ESIEA
Enoncés – Travaux Pratiques SQL
9
Frédéric Brunet
INTECH – ESIEA
Enoncés – Travaux Pratiques SQL
Exercice 3
1.3 Première partie
1. Ecrivez une interrogation permettant d'afficher la date système. Nommez la
colonne Date.
2.
10
Frédéric Brunet
INTECH – ESIEA
Enoncés – Travaux Pratiques SQL
6. Réécrivez l'interrogation de sorte que l'utilisateur soit invité à saisir la lettre par
laquelle le nom doit commencer. Par exemple, si l'utilisateur saisit "H" (en majuscule)
à l'invite, le résultat doit afficher tous les employés dont le nom commence par la
lettre "H".
11
Frédéric Brunet
INTECH – ESIEA
Enoncés – Travaux Pratiques SQL
12
Frédéric Brunet
INTECH – ESIEA
Enoncés – Travaux Pratiques SQL
8. Créez une interrogation permettant d'afficher les huit premiers caractères du nom
des employés, ainsi que le montant de leur salaire avec des astérisques. Chaque
astérisque représente un millier de dollars. Triez les données par salaire décroissant.
Nommez la colonne EMPLOYEES_AND_THEIR_SALARIES.
13
Frédéric Brunet
INTECH – ESIEA
Enoncés – Travaux Pratiques SQL
Exercice 4
1. Créez un état qui produit les éléments suivants pour chaque employé :
<employee last name> earns <salary> monthly but wants
<3 times salary.>. Intitulez la colonne Dream Salaries
14
Frédéric Brunet
INTECH – ESIEA
Enoncés – Travaux Pratiques SQL
15
Frédéric Brunet
INTECH – ESIEA
Enoncés – Travaux Pratiques SQL
Exercice 5
Indiquez la validité des trois affirmations ci-après. Entourez la réponse correcte.
1. Les fonctions de groupe opèrent sur plusieurs lignes et produisent un résultat par
groupe.
Vrai/Faux
2. Les fonctions de groupe prennent en compte les valeurs NULL dans les calculs.
Vrai/Faux
3. La clause WHERE restreint les lignes avant inclusion dans un calcul de groupe.
Vrai/Faux
Le département des ressources humaines a besoin des états suivants :
4. Déterminez le salaire le plus élevé, le salaire le plus bas, le salaire cumulé et le
salaire moyen pour tous les employés. Intitulez respectivement les colonnes
Maximum, Minimum, Sum et Average. Arrondissez les résultats à l'entier le plus
proche.
Enregistrez l'instruction SQL dans le fichier ex_05_04.sql. Exécutez l'interrogation
16
Frédéric Brunet
INTECH – ESIEA
Enoncés – Travaux Pratiques SQL
8. Trouvez la différence entre le salaire le plus élevé et le salaire le plus bas. Intitulez
la colonne DIFFERENCE.
17
Frédéric Brunet
INTECH – ESIEA
Enoncés – Travaux Pratiques SQL
10. Créez une interrogation permettant d'afficher le nombre total d'employés et, pour
ce total, le nombre d'employés embauchés en 1995, 1996, 1997 et 1998. Créez les
en-têtes de colonne appropriés.
18
Frédéric Brunet
INTECH – ESIEA
Enoncés – Travaux Pratiques SQL
Exercice 6
1. Ecrivez une interrogation produisant l'adresse de tous les départements. Utilisez
les tables LOCATIONS et COUNTRIES.
Affichez dans les résultats l'ID de lieu, la rue, la ville, le département et le pays.
Utilisez une jointure naturelle (NATURAL JOIN) pour produire les résultats.
19
Frédéric Brunet
INTECH – ESIEA
Enoncés – Travaux Pratiques SQL
4. Créez un état permettant d'afficher le nom et le numéro des employés, ainsi que le
nom et le numéro de leur manager. Intitulez respectivement les colonnes Employee,
Emp#, Manager et Mgr#. Enregistrez l'instruction SQL sous le nom
ex_06_04.sql. Exécutez l'interrogation.
20
Frédéric Brunet
INTECH – ESIEA
Enoncés – Travaux Pratiques SQL
7. Le département des ressources humaines a besoin d'un état sur les niveaux de
poste et les salaires. Pour vous familiariser avec la table JOB_GRADES, affichez
d'abord sa structure. Créez ensuite une interrogation affichant le nom, le poste, le
nom de département, le salaire et le niveau de tous les employés.
21
Frédéric Brunet
INTECH – ESIEA
Enoncés – Travaux Pratiques SQL
22
Frédéric Brunet
INTECH – ESIEA
Enoncés – Travaux Pratiques SQL
23
Frédéric Brunet
INTECH – ESIEA
Enoncés – Travaux Pratiques SQL
Exercice 7
1. Le département des ressources humaines a besoin d'une interrogation qui invite
l'utilisateur à indiquer un nom d'employé. L'interrogation affiche alors le nom et la
date d'embauche de tous les employés travaillant dans le même département que
l'employé indiqué (en excluant ce dernier). Par exemple, si l'utilisateur saisit Zlotkey,
cherchez tous les employés qui travaillent avec Zlotkey (en excluant Zlotkey).
2. Créez un état qui affiche le numéro d'employé, le nom et le salaire de tous les
employés qui gagnent plus que le salaire moyen. Triez les résultats par ordre
croissant sur la base du salaire.
3. Ecrivez une interrogation qui affiche le numéro d'employé et le nom de tous les
employés qui travaillent dans un département comprenant un employé dont le nom
contient la lettre "u". Enregistrez l'instruction SQL sous le nom ex_07_03.sql.
Exécutez votre interrogation.
24
Frédéric Brunet
INTECH – ESIEA
Enoncés – Travaux Pratiques SQL
4. Le département des ressources humaines a besoin d'un état qui affiche le nom,
l'ID de département et l'ID de poste de tous les employés dont l'ID de lieu de
département est 1700.
5. Créez pour les ressources humaines un état affichant le nom et le salaire de tous
les employés dont le manager est King.
25
Frédéric Brunet
INTECH – ESIEA
Enoncés – Travaux Pratiques SQL
6. Créez pour les ressources humaines un état affichant l'ID de département, le nom
et l'ID de poste de tous les employés du département Executive
26
Frédéric Brunet
INTECH – ESIEA
Enoncés – Travaux Pratiques SQL
Exercice 8
1. Le département des ressources humaines a besoin de la liste des ID des
départements qui ne contiennent pas l'ID de poste ST_CLERK. Utilisez les
opérateurs ensemblistes pour créer cet état.
3. Produisez la liste des postes des départements 10, 50 et 20, dans cet ordre.
Affichez l'ID de poste et l'ID de département à l'aide des opérateurs ensemblistes.
27
Frédéric Brunet
INTECH – ESIEA
Enoncés – Travaux Pratiques SQL
4. Créez un état répertoriant l'ID d'employé et l'ID de poste des employés dont
l'intitulé de poste actuel est identique à l'intitulé de poste initial lors de leur embauche
par l'entreprise. (Ces employés ont changé de poste, puis sont revenus à leur poste
d'origine.)
28
Frédéric Brunet
INTECH – ESIEA
Enoncés – Travaux Pratiques SQL
Exercice 9
Ecrire des instructions SQL permettant d'insérer, de mettre à jour et de supprimer
des données relatives aux employés. Vous allez tester ces instructions sur la table
MY_EMPLOYEE avant de les livrer.
29
Frédéric Brunet
INTECH – ESIEA
Enoncés – Travaux Pratiques SQL
6. Insérez dans la table les deux lignes suivantes du tableau de données fourni à
l'étape 3 en exécutant l'instruction INSERT du script que vous avez créé.
30
Frédéric Brunet
INTECH – ESIEA
Enoncés – Travaux Pratiques SQL
18. Annulez l'opération DELETE la plus récente, mais pas l'opération INSERT
précédente.
21. Modifiez le script ex_09_05.sqlde sorte que la valeur USERID soit générée
automatiquement par concaténation de la première lettre du prénom et des sept
premiers caractères du nom. La valeur USERID doit être générée en minuscules.
Ainsi, le script n'invitera pas à saisir cette valeur. Enregistrez le script sous le nom
31
Frédéric Brunet
INTECH – ESIEA
Enoncés – Travaux Pratiques SQL
ex_09_21.sql.
26. Vérifiez que la nouvelle ligne a été ajoutée avec le USERID correct.
32
Frédéric Brunet
INTECH – ESIEA
Enoncés – Travaux Pratiques SQL
Exercice 10
1. Créez la table DEPT conformément aux indications du tableau ci-après.
Enregistrez l'instruction dans un script nommé ex_10_01.sql, puis exécutez ce script
pour créer la table. Vérifiez que la table a bien été créée.
33
Frédéric Brunet
INTECH – ESIEA
Enoncés – Travaux Pratiques SQL
34
Frédéric Brunet
INTECH – ESIEA
Enoncés – Travaux Pratiques SQL
Exercice 11
1.4 Première partie
35
Frédéric Brunet
INTECH – ESIEA
Enoncés – Travaux Pratiques SQL
7. Vous avez besoin d'une séquence pouvant être utilisée avec la colonne PRIMARY
KEY de la table DEPT. La séquence doit commencer à 200 et présenter une valeur
maximum de 1 000.
La séquence doit croître par incréments de 10. Nommez-la DEPT_ID_SEQ.
8. Pour tester la séquence, écrivez un script permettant d'insérer deux lignes dans la
table DEPT.
Nommez le script ex_11_08.sql. Veillez à utiliser la séquence que vous avez créée
pour la colonne ID. Ajoutez deux départements : Education et Administration. Vérifiez
vos ajouts.
Exécutez les commandes enregistrées dans le script.
36
Frédéric Brunet