Part III
Part III
Part III
2023
Table des matières
1. Introduction à SQL ................................................................................................................ 5
1.1 Concepts de base ........................................................................................................... 5
1.1.1 Base de données ..................................................................................................... 5
1.1.2 SGBD ....................................................................................................................... 5
1.1.3 Le langage SQL ........................................................................................................ 5
1.2 Architecture du serveur oracle ...................................................................................... 6
1.3 Instance Oracle .............................................................................................................. 6
1.4 Schéma ........................................................................................................................... 7
1.5 Schéma de démonstration ............................................................................................. 7
2. Récupération des données avec la requête SQL SELECT de base ........................................ 9
2.1 Notes de cours ............................................................................................................... 9
2.1.1 La commande DESCRIBE ......................................................................................... 9
2.1.2 Rêquete SELECT de base ......................................................................................... 9
2.2 Requêtes ...................................................................................................................... 10
3. Données restreintes et Tri de données .............................................................................. 13
3.1 Notes de cours ............................................................................................................. 13
3.1.1 Données restreintes ............................................................................................. 13
3.1.2 Le tri ...................................................................................................................... 13
3.1.3 Les variables de substitution ................................................................................ 14
3.2 Requêtes ...................................................................................................................... 14
4. Fonctions Monolignes ........................................................................................................ 17
4.1 Notes de cours ............................................................................................................. 17
4.1.1 Fonctions de chaînes de caractères ..................................................................... 17
4.1.2 Fonctions numériques .......................................................................................... 18
4.1.3 Fonctions sur les dates ......................................................................................... 18
4.2 Requêtes ...................................................................................................................... 20
5. Fonctions de conversion et Expressions conditionnelles ................................................... 22
5.1 Notes de cours ............................................................................................................. 22
5.1.1 Fonctions de conversion ....................................................................................... 22
5.1.2 Fonctions générales .............................................................................................. 24
5.1.3 Expressions conditionnelles ................................................................................. 25
5.2 Requêtes ...................................................................................................................... 28
6. Fonctions de groupe ........................................................................................................... 31
6.1 Notes de cours ............................................................................................................. 31
6.1.1 Définition des fonctions de groupe ...................................................................... 31
6.1.2 La clause GROUP BY.............................................................................................. 32
6.1.3 La clause HAVING ................................................................................................. 33
6.2 Requêtes ...................................................................................................................... 34
7. Les sous-requêtes ............................................................................................................... 36
7.1 Notes de cours .............................................................................................................36
7.1.1 Définition d’une sous-requête.............................................................................. 36
7.1.2 Pourquoi utiliser les sous-requêtes ? ................................................................... 36
7.1.3 Types de sous-requêtes.......................................................................................... 37
7.2 Requêtes ...................................................................................................................... 39
Bibliographie ............................................................................................................................... 40
Introduction à SQL
Chapitre 1
1.Introduction à SQL
Une base de données informatique est un ensemble de données qui ont été stockées sur un
support informatique, et organisées et structurées de manière à pouvoir facilement consulter
et modifier leur contenu.
Une base de données seule ne suffit donc pas, il est nécessaire d'avoir également :
un système permettant de gérer cette base.
un langage pour transmettre des instructions à la base de données (par l'intermédiaire du
système de gestion).
1.1.2 SGBD
La plupart des SGBD sont basés sur un modèle Client-Serveur. C'est-à-dire que la base de
données se trouve sur un serveur, et pour interagir avec cette base de données, il faut utiliser
HAMMAMI Hamza 5
Introduction à SQL
un logiciel "client" qui va interroger le serveur et transmettre la réponse que le serveur lui
aura donnée, ce langage est le SQL.
SQL (Structured Query Language ou Set Query Language) est la norme standard internationale
pour la gestion des données stockées dans les bases de données relationnelles.
Le langage SQL est un standard, c'est-à-dire que quel que soit le SGBD utilisé, on se servira du
langage SQL. Mais, il y a en fait quelques petites variantes d'un SGBD à l'autre, mais cela
concerne généralement les commandes les plus avancées.
Un serveur Oracle est composé d'une instance Oracle et d'une base de données Oracle.
L’accès à la base de données se fait à travers l’instance Oracle (voir figure 1.1).
L’instance Oracle est un ensemble de processus et de structures de mémoire. Elle existe dans
le CPU et dans la mémoire du nœud de serveur temporairement.
SGA (System Global Area) est une zone mémoire utilisée pour partager les informations entre
les différents processus Oracle.
Une instance peut être démarré ou arrêtée. Les utilisateurs d’une base de données établissent
des sessions sur l’instance, et l’instance gère ensuite tous les accès à la base de données. Il est
impossible dans l’environnement Oracle pour tout utilisateur d’avoir un contact direct avec la
base de données.
Pour Oracle, une instance ne gère qu’une seule base de données tandis que pour Microsoft
SQL Server, Sybase et autres, l’instance peut gérer plusieurs bases de données.
HAMMAMI Hamza 6
Introduction à SQL
1.4 SCHEMA
Oracle lie chaque objet (table, index, vue,…) au compte utilisateur qui l’a créé. On parle alors
de propriétaire de l’objet ou schéma. Un schéma est donc, un compte utilisateur qui possède
des tables, des indexes et autres objets. Un utilisateur est associé à un seul schéma.
Tout au long de ce support, il y a des exemples d'exécution du code SQL sur des tables de
données. Ces exemples utilisent des tables d’un schéma de démonstration fourni par Oracle :
le schéma HR. C’est un schéma composé de sept tables qui simulent une application de
ressources humaines simple. La figure 1.2 montre les colonnes de chaque table dans le schéma
HR.
Deux des relations représentées sur la figure 1.2 peuvent ne pas être immédiatement
compréhensibles.
Tout d'abord, il existe une relation réflexive un à plusieurs entre EMPLOYEES et EMPLOYEES.
Cela signifie que de nombreux employés peuvent avoir un même chef, mais le chef est
également un employé. Cette relation est mise en œuvre par la colonne manager_id dans
EMPLOYEES qui représente l’EMPLOYEE_ID du chef.
HAMMAMI Hamza 7
Introduction à SQL
HAMMAMI Hamza 8
Chapitre 2 : Récupération des données avec la requête SQL SELECT de base
Chapitre 2
La commande DESCRIBE donne des informations sur la table comme le nom de la table, le
propriétaire de la table, des détails sur les colonnes qui la composent et sa taille de stockage
physique sur le disque.
La syntaxe de cette commande :
Le mot clé DESCRIBE peut être raccourci à DESC. Si vous décrivez une table qui appartient au
schéma auquel vous avez connecté, la partie <SCHEMA> de la commande peut être omise.
La requête SELECT se base sur les concepts de la théorie des relations : projection, sélection
et jointure. Ce chapitre traite la projection, c’est-à-dire, limiter les colonnes affichées par la
requête SELECT.
2.2 REQUETES
HAMMAMI Hamza 10
Chapitre 2 : Récupération des données avec la requête SQL SELECT de base
HAMMAMI Hamza 11
Chapitre 2 : Récupération des données avec la requête SQL SELECT de base
i) Afficher les lignes suivantes à partir de la table JOBS en utilisant les colonnes JOB_ID et
JOB_TITLE:
HAMMAMI Hamza 12
1. Chapitre 3 : Données restreintes et Tri de données
Chapitre 3
Ce chapitre discute le deuxième concept de la théorie des relations sur lequel se base la
requête SELECT, c’est la sélection. Elle consiste à réduire le nombre de lignes affichées par la
requête SELECT. Cette réduction se fait à l’aide de :
La clause WHERE.
Des opérateurs de comparaison : =, <=, BETWEEN, IN, ANY, ALL, LIKE et IS NULL.
Des opérateurs logiques : AND, OR et NOT.
3.1.2 LE TRI
Pour trier le résultat de la requête SELECT, if faut utiliser la clause ORDER BY, c’est la dernière
clause de la requête SELECT :
HAMMAMI Hamza 13
1. Chapitre 3 : Données restreintes et Tri de données
Une variable de substitution permet d’utiliser une requête plusieurs fois. Elle stocke
temporairement une valeur en utilisant le caractère & ou &&. Elle peut être utilisée pour
substituer une valeur à tout élément de la requête SQL : nom d’une table, nom d’une colonne,
les conditions de WHERE, la clause ORDER BY.
3.2 REQUETES
Dans chaque cas, on demande d’écrire une requête SQL pour l’opération considérée :
a) Donner les noms des employés dont le salaire est égal à 10000.
b) Afficher les noms des employés dont le JOB_ID est égal à SA_REP.
c) Afficher les noms des employés dont la date d'embauche (hire_date) est égale à
07/06/02.
d) Afficher les noms des employés dont le salaire est inférieur ou égal à 2500.
e) Afficher les noms des employés dont le salaire est compris entre 2500 et 3000.
f) Donner les noms des employés dont le salaire est égal à 1000 ou 4000 ou 6000.
g) Afficher les pays (COUNTRIES) dont la cinquième lettre du nom est ‘i’.
HAMMAMI Hamza 14
1. Chapitre 3 : Données restreintes et Tri de données
h) Donner les noms des employés dont la valeur de commission_pct est nulle.
i) Obtenir les employés dont le prénom commence par ‘J’, le nom contient la lettre ‘o’, la
valeur de leur commission_pct est supérieure à 0.1 et qui ont été recruté après le 1 juin
1996.
j) Obtenir les employés dont le prénom commence par ‘B’ ou bien la valeur de leur
commission_pct est supérieure à 0.35.
k) Obtenir les employés dont le poste (job_id) est ni IT_PROG ni SA_REP ni ST_CLERK.
l) Afficher les employés dont le poste est égal à SA_MAN ou MK_MAN. Le résultat doit être
trié par ordre croissant selon la colonne commission_pct.
m) Obtenir le même résultat que la requête précédente mais trié dans l’ordre décroissant
selon la colonne commission_pct.
n) Obtenir le même résultat que la requête précédente mais les lignes contenant des valeurs
nulles dans la colonne de tri sont affichées à la fin.
HAMMAMI Hamza 15
1. Chapitre 3 : Données restreintes et Tri de données
o) Pour chaque employé afficher son nom, son salaire et le numéro de son département. Le
résultat doit être affiché par ordre croissant du numéro de département puis par ordre
décroissant du salaire.
r) Afficher le numéro et le nom de l’employé ainsi qu’une autre colonne spécifiée par
l’utilisateur (utilisée aussi comme colonne de tri). Le résultat doit satisfaire une condition
donnée par l’utilisateur (Utiliser uniquement la table EMPLOYEES).
HAMMAMI Hamza 16
2. Chapitre 4 : Fonctions Monolignes
Chapitre 4
4.Fonctions Monolignes
Fonction Résultat
Lower('Cours SQL') cours sql
Upper('Cours SQL') COURS SQL
Initcap('Cours SQL') Cours Sql
Fonctions de manipulations des chaînes de caractères : concat, substr, left, right, length,
instr, lpad, rpad, trim, rtrim, ltrim, replace.
Fonction Résultat
Concat('Hello', 'World') HelloWorld
Substr('HelloWorld',1,5) Hello
Left ('HelloWorld',5) Hello
Right ('HelloWorld',5) World
Length('HelloWorld') 10
Instr('HelloWorld', 'W') 6
Lpad(salary,10,'*') *****24000
Rpad(salary, 10, '*') 24000*****
Replace ('JACK and JUE','J','BL') BLACK and BLUE
Trim('H' FROM 'HelloWorld') elloWorld
HAMMAMI Hamza 17
2. Chapitre 4 : Fonctions Monolignes
Exemples
ROUND(45.39) = 45
ROUND(45.8) = 46
ROUND(45.39, 1) = 45.4
ROUND(45.926, 2) = 45.93
ROUND(45.923,-1) = 50
ROUND(44.923,-1) = 40
ROUND(1666.923,-2)= 1700
Exemples
TRUNC (45.39) = 45
TRUNC (45.8) = 45
TRUNC (45.39,1) = 45.3
TRUNC(45.926,2) = 45.92
TRUNC(45.923,-1) = 40
TRUNC(1666.923,-3) = 1000
Exemple
MOD(1600, 300) = 100
Le format d'affichage par défaut de la date est DD-MON-YY. Il existe plusieurs fonctions qui
opèrent sur les dates, telles que :
Exemple
MONTHS_BETWEEN ('01-SEP-95','11-JAN-94') = 19.6774194
ADD_MONTHS (date_debut, nombre_mois) : retourne une date calculée par l’ajout d’un
nombre de mois à une date donnée. Le nombre de mois peut être négatif.
HAMMAMI Hamza 18
2. Chapitre 4 : Fonctions Monolignes
Exemple
ADD_MONTHS (‘31-JAN-96', 1) = 29-FEB-96
Exemple
NEXT_DAY ('01 -SEP-95','FRIDAY') = 08-SEP-95
LAST_DAY (date) : retourne la date du dernier jour du mois de la date passée comme
paramètre.
Exemple
LAST_DAY ('01-FEB-95') = 28-FEB-95
ROUND et TRUNC :
On suppose que sysdate = '25/07/03'
Fonction Résultat
Round(SYSDATE,'MONTH') 01/08/03
Round(SYSDATE,'YEAR') 01/01/04
Trunc(SYSDATE,'MONTH') 01/07/03
Trunc(SYSDATE,'YEAR') 01/01/03
HAMMAMI Hamza 19
2. Chapitre 4 : Fonctions Monolignes
4.2 REQUETES
Dans chaque cas, on demande d’écrire une requête SQL pour l’opération considérée :
b) Obtenir le résultat suivant pour les employés dont le job_id se termine par REP :
…
33 lignes.
c) Pour chaque employé du département 60, afficher son nom et les huit premiers
caractères de son nom suivis du ‘_US’(en majuscule).
d) Pour chaque directeur commercial (SA_MAN), afficher son last_name, son salary et le
nombre de jours travaillés (sans et avec arrondissement à l’entier le plus proche).
f) Le département financier veut majorer les salaires de ses employés de 1.13123. Afficher
le résultat suivant :
h) Afficher pour chaque employé ayant comme job_id la valeur it_prog, son nom et le
nombre de jours travaillés dans son premier mois d’emploi.
HAMMAMI Hamza 21
Chapitre 5 : Fonctions de conversion et expressions conditionnelles
Chapitre 5
5. Fonctions de conversion et
Expressions conditionnelles
De A
VARCHAR2 ou CHAR NUMBER
VARCHAR2 ou CHAR DATE
NUMBER VARCHAR2 ou CHAR
DATE VARCHAR2 ou CHAR
Exemples
SELECT mod ('11',2) FROM dual
Le serveur Oracle convertit la chaîne de caractères '11' en entier 11 puis retourne l’entier 1.
HAMMAMI Hamza 22
Chapitre 5 : Fonctions de conversion et expressions conditionnelles
Exemples
SELECT to_char(00001) FROM dual
La requête retourne la chaîne de caractères '1'.
Exemple
SELECT to_char (sysdate, ’MONTH YYYY’) FROM dual
Si sysdate =’17/09/2016’ alors cette requête retourne SEPTEMBRE 2016.
Exemples
SELECT to_date ('25-12-2010') FROM dual
HAMMAMI Hamza 23
Chapitre 5 : Fonctions de conversion et expressions conditionnelles
Exemples
SELECT to_number('$1,000.55') FROM dual
FONCTION NVL
NVL(original, sinul)
NVL retourne le paramètre original s’il n’est pas nul, sinon elle retourne le paramètre sinul.
Exemples
SELECT nvl (9876) FROM dual
Retourne une erreur car il manque un paramètre.
FONCTION NVL2
Exemples
SELECT nvl2(null, 1234, 5678) FROM dual
Retourne 5678.
HAMMAMI Hamza 24
Chapitre 5 : Fonctions de conversion et expressions conditionnelles
FONCTION NULLIF
Exemples
SELECT NULLIF(2016, 2016) FROM dual
Retourne NULL.
FONCTION COALESCE
Exemples
SELECT coalesce(null, null, null, 'a string') FROM dual
Retourne le paramètre ‘a string’ car c’est le premier paramètre non nul.
FONCTION DECODE
HAMMAMI Hamza 25
Chapitre 5 : Fonctions de conversion et expressions conditionnelles
Si expr1 est égale à comp1 alors la requête retourne iftrue1. Sinon si expr1 est égale à comp2
alors elle retourne iftrue2, et ainsi de suite. Si rien ne correspond elle retourne iffalse si elle
existe sinon null.
Exemples
SELECT decode(123,123, '123 is a match') FROM dual
123 est égal à 123, alors la requête retourne '123 is a match'.
FONCTION CASE
1ère version
Exemple
SELECT CASE substr(1234,1,3) WHEN '134' THEN'1234 is a match'
WHEN '1235'THEN '1235 is a match'
WHEN concat('1','23') THEN
concat('1','23')||' is a match'
ELSE 'no match'
END value
FROM dual
La requête retourne '123 is a match'.
HAMMAMI Hamza 26
Chapitre 5 : Fonctions de conversion et expressions conditionnelles
2ème version
CASE
WHEN condition1 THEN return_expr1
[WHEN condition2 THEN return_expr2
…
WHEN conditionN THEN return_exprN
Else ilfalse]
END
Exemple
SELECT CASE WHEN substr(1234,1,3) = '134' THEN'1234 is a match'
WHEN substr(1234,1,3) = '1235'THEN '1235 is a match'
WHEN substr(1234,1,3) = concat('1','23') THEN
concat('1','23')||' is a match'
ELSE 'no match'
END value
FROM dual
HAMMAMI Hamza 27
Chapitre 5 : Fonctions de conversion et expressions conditionnelles
5.2 REQUETES
Dans chaque cas, on demande d’écrire une requête SQL pour l’opération considérée :
c) Pour tous les employés dont le nom commence par ‘E’, afficher leurs noms, leurs salaires,
leurs commission_pct et leurs commissions mensuelles = commission_pct*salary+1000.
HAMMAMI Hamza 28
Chapitre 5 : Fonctions de conversion et expressions conditionnelles
d) Pour tous les employés dont le nom commence par ‘G’, afficher le résultat suivant.
e) Afficher les colonnes suivantes pour chaque employé ayant un prénom de longueur 4 et si
son email est égal à la concaténation de la première lettre de son prénom et son nom en
majuscule, alors afficher ’Match Found’ sinon afficher ‘Email does not match pattern ‘.
f) Pour chaque employé ayant depatment_id égal à 90, afficher son nom et son employee_id
ainsi que sa commission_pct. Si elle est nulle afficher son manager_id et s’il est nul afficher
’no commission and no manager’.
HAMMAMI Hamza 29
Chapitre 5 : Fonctions de conversion et expressions conditionnelles
…
14 lignes
h) On veut majorer les salaires des employés selon leurs job_id comme suit :
Job_id Majoration
IT_PROG 0.1
ST_CLERK 0.15
SA_REP 0.2
Autres 0
Ecrire de deux manières une requête qui affiche pour chaque employé son nom, son job_id,
son ancien salaire et son nouveau salaire.
HAMMAMI Hamza 30
Chapitre 6 : Fonctions de groupe
Chapitre 6
6.Fonctions de groupe
Les fonctions de groupe ou fonctions agrégatives opèrent sur des groupes pour donner un
résultat pour chaque groupe. On ne peut pas utiliser une fonction de groupe dans la clause
WHERE.
Les fonctions de groupe sont : AVG, SUM, MIN, MAX, COUNT, STDDEV, et VARIANCE. La
syntaxe générale est :
Exemples
SELECT AVG (salary), MAX (salary), MIN (salary), SUM (salary),
COUNT (salary)
FROM Employees
HAMMAMI Hamza 31
Chapitre 6 : Fonctions de groupe
Exemple
SELECT COUNT (DISTINCT department_id) FROM employees
Elle retourne 11. C’est le nombre de valeurs distinctes et non nulles de department_id.
Exemple
SELECT department_id, max (salary), count (*)
FROM Employees
GROUP BY department_id
ORDER BY department_id
Exemple
SELECT department_id , job_id, max (salary), count (*)
FROM Employees
GROUP BY department_id, job_id
ORDER BY department_id, job_id
HAMMAMI Hamza 32
Chapitre 6 : Fonctions de groupe
La clause HAVING ne peut être spécifiée que si la clause GROUP BY est présente. Elle est
évaluée après avoir effectué les regroupements et exécuté les fonctions de groupe.
Exemple
SELECT department_id, count (*)
FROM job_history
WHERE department_id in (50, 60, 80, 110)
GROUP BY department_id
HAVING count(*)>1
HAMMAMI Hamza 33
Chapitre 6 : Fonctions de groupe
6.2 REQUETES
Dans chaque cas, on demande d’écrire une requête SQL pour l’opération considérée :
a) On veut afficher des informations sur les employés dont le job_id est SA_REP : le plus petit
salaire, le plus grand salaire, les dates de recrutement du premier employé et du dernier
employé.
c) Afficher pour chaque département, son numéro et la somme des commissions de ses
employés. On ne considère pas les commissions nulles.
d) Afficher pour chaque département, son numéro, ses job_id et la somme des commissions
des employés dans chaque job_id. On ne considère pas les commissions nulles.
e) Obtenir le nombre des employés qui ont quitté leur emploi, regroupés par l'année de
sortie. Leurs emplois (job_id) sont également nécessaires. Le résultat doit être classé par
ordre décroissant du nombre d'employés dans chaque groupe puis par ordre croissant de
l’année de sortie.
HAMMAMI Hamza 34
Chapitre 6 : Fonctions de groupe
g) La même requête précédente mais on exclut les job_id qui contiennent ‘MAN’.
HAMMAMI Hamza 35
Chapitre 7 : Les sous-requêtes
Chapitre 7
8.Les sous-requêtes
Une sous-requête est une requête imbriquée dans une instruction SELECT, INSERT, UPDATE
ou DELETE ou à l'intérieur d'une autre sous-requête. Une sous-requête peut renvoyer un
ensemble de lignes ou simplement une ligne. Une sous-requête scalaire est une requête qui
renvoie exactement une valeur : une seule ligne, avec une seule colonne. On peut utiliser une
sous-requête dans les clauses suivantes :
- SELECT : utilisée pour la projection de colonnes.
- FROM.
- WHERE.
- HAVING.
Il y a plusieurs situations où on aura besoin d’utiliser le résultat d'une requête dans une autre.
Exemple
Quels sont les noms des employés qui ont un salaire inférieur au salaire moyen ?
Cela peut être répondu par deux instructions, ou par une seule instruction avec une sous-
requête.
L'exemple suivant utilise deux instructions :
SELECT avg(salary) FROM employees
SELECT last_name FROM employees
WHERE salary < résultat de la requête précédente>
HAMMAMI Hamza 36
Chapitre 7 : Les sous-requêtes
SELECT liste_select
FROM table
WHERE expr operateur (SELECT liste_select FROM table)
SOUS-REQUETES MONOLIGNE
- Retournent une seule ligne
- Utilisent des opérateurs de comparaison mono-ligne : =, <, >, <=, >=, <>.
- La sous-requête (requête interne) s'exécute (une seule fois) avant la requête
principale (requête externe).
- Le résultat de la sous-requête est utilisé par la requête principale.
Exemple :
SELECT last_name, job_id, salary
FROM employees
WHERE salary = (SELECT min(salary) FROM employees)
SOUS-REQUETES MULTILIGNES
- Retournent plusieurs lignes.
- Utilisent des opérateurs de comparaison à multilignes :
- La sous-requête (requête interne) s'exécute (une seule fois) avant la requête
principale (requête externe).
- Le résultat de la sous-requête est utilisé par la requête principale.
Opérateur Signification
IN égal à n'importe quelle valeur dans une liste
NOT IN différente de n'importe quelle valeur dans une liste
ANY doit être précédé de =,<>,>, <, <=,> =. Renvoie des lignes
qui correspondent à n’importe quelle valeur d'une liste.
ALL doit être précédé de =,<>,>, <, <=,> =. Renvoie des lignes
qui correspondent à toutes les valeurs d'une liste.
HAMMAMI Hamza 37
Chapitre 7 : Les sous-requêtes
Exemple :
SELECT employee_id, last_name, job_id, salary
FROM employees
WHERE salary < ANY (SELECT salary FROM employees
WHERE job_id = 'IT_PROG')
AND job_id <> 'IT_PROG’
SOUS-REQUETES CORRELEES
Une sous-requête corrélée fait référence à des colonnes dans la requête principale,
donc son résultat dépend de la requête principale. Cela rend impossible l'évaluation
de la sous-requête avant d'évaluer la requête principale.
Exemple :
Considérez une requête qui affiche tous les employés dont le salaire est inférieur au
salaire moyen de leur département. Dans ce cas, la sous-requête doit être exécutée
pour chaque employé afin de déterminer le salaire moyen de son département Il est
nécessaire de passer le numéro de département de l'employé à la sous-requête.
HAMMAMI Hamza 38
Chapitre 7 : Les sous-requêtes
7.2 REQUETES
Dans chaque cas, on demande d’écrire une requête SQL pour l’opération considérée :
a) Afficher les employés ayant le salaire minimal.
c) Quels sont les employés qui ont un salaire inférieur au salaire moyen de tous les
employés ?
d) Quels sont les employés qui ont un salaire inférieur au salaire moyen des employés de
leurs départements ?
HAMMAMI Hamza 39
Bibliographie
LORENTZ , D. (s.d.). Oracle Database SQL Reference, 10g. Oracle Press.
WATSON, J., & RAMKLASS, R. (s.d.). OCA Oracle Database 11g. SQL Fundamentals I. Exam
Guide. Oracle Press.
Webographie
http://didier.deleglise.free.fr/dba/archi/archi_main.htm. Consulté Août 2018.
https://openclassrooms.com/courses/administrez-vos-bases-de-donnees-avec-mysql.
Octobre 2018
https://www.cbtnuggets.com/it-training/oracle-database-11g-sql-fundamentals-1-1z0-051.
Consulté Septembre 2018.
https://code.google.com/archive/p/adf-samples-demos/downloads. Consulté Août 2018.
HAMMAMI Hamza 40