0% ont trouvé ce document utile (0 vote)
66 vues3 pages

Atelier 8 SQL

Ce chapitre décrit les sous-requêtes SQL, y compris leur définition, leurs différents types et leurs utilisations. Les sous-requêtes peuvent être imbriquées dans des requêtes SELECT, INSERT, UPDATE ou DELETE. Il existe trois grands types de sous-requêtes: monoligne, multilignes et corrélées.

Transféré par

Zbedi Chaima
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
66 vues3 pages

Atelier 8 SQL

Ce chapitre décrit les sous-requêtes SQL, y compris leur définition, leurs différents types et leurs utilisations. Les sous-requêtes peuvent être imbriquées dans des requêtes SELECT, INSERT, UPDATE ou DELETE. Il existe trois grands types de sous-requêtes: monoligne, multilignes et corrélées.

Transféré par

Zbedi Chaima
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Chapitre 

8 : Les sous‐requêtes 

 
 
 

Chapitre 8 : 
Les sous‐requêtes 
 

 
 1.1 NOTES DE COURS  
1.1.1 DEFINITION D’UNE SOUS‐REQUETE  
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.

1.1.2 POURQUOI UTILISER LES SOUS-REQUETES ?


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>

Comme on peut utiliser une seule instruction avec une sous-requête :


SELECT last_name
FROM employees
WHERE salary < (select avg(salary)from employees)
La syntaxe générale d’une sous-requête est :
SELECT liste_select
FROM table
WHERE expr operateur (SELECT liste_select FROM table)
- Mettre les sous-requêtes entre parenthèses.
- Placez les sous-requêtes sur le côté droit de la condition de comparaison pour la lisibilité.

1.1.3 TYPES DE SOUS-REQUETES


Il existe trois grands types de sous-requêtes :
- Sous-requêtes monolignes.

SQL : Les Requêtes Imbriquées, PR. Chiheb CHAIEB  Page 1 
 
Chapitre 8 : Les sous‐requêtes 

 
 
 

- Sous-requêtes multilignes
- Sous-requêtes corrélées.

 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 : in , not in, !=all , =any etc.
- 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 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.
SELECT p.last_name, p.department_id
FROM employees p
WHERE p.salary < (SELECT avg(s.salary) FROM employees s
WHERE s.department_id=p.department_id)
 

SQL : Les Requêtes Imbriquées, PR. Chiheb CHAIEB  Page 2 
 
Chapitre 8 : Les sous‐requêtes 

 
 
 

ACTIVITES 
 

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.

b) Afficher les noms de tous les directeurs. (18 lignes)

c) Quels sont les employés qui ont un salaire inférieur au salaire moyen de tous les
employés.(56 lignes)

d) Quels sont les employés qui ont un salaire inférieur au salaire moyen des employés de
leurs départements. (65 lignes)

e) Donner le salaire maximum dans chaque pays.


 

 
 

f) Quels sont les départements qui ont le nombre maximum d’employés ?


 

 
 

SQL : Les Requêtes Imbriquées, PR. Chiheb CHAIEB  Page 3 
 

Vous aimerez peut-être aussi