Sous-requête d'existence EXISTS

Introduction

Cette sous-requête permet de vérifier que la sous-requête contient au moins un tuple.

Syntaxe

CTRL+C pour copier, CTRL+V pour coller
1
SELECT <projections>
2
FROM <relations>
3
WHERE EXISTS 
4
 (<requête imbriquée>)
SELECT <projections>
FROM <relations>
WHERE EXISTS 
 (<requête imbriquée>)

La requête imbriquée faisant référence à des propriétés (éventuellement non projetées) de la requête principale.

Exemple

CTRL+C pour copier, CTRL+V pour coller
1
SELECT Chercheur.Nom
2
FROM Chercheur
3
WHERE EXISTS
4
 (SELECT * 
5
FROM Universite 
6
WHERE Universite.Nom=Chercheur.Universite)
SELECT Chercheur.Nom
FROM Chercheur
WHERE EXISTS
 (SELECT * 
 FROM Universite 
 WHERE Universite.Nom=Chercheur.Universite)

RemarqueProjection dans la sous-requête

Puisque la sous-requête n'est destinée qu'à valider l'existence d'un tuple, il est inutile de procéder à une projection particulière pour cette sous-requête. On utilise donc en général la clause SELECT * pour une sous-requête avec une clause EXISTS.

RemarqueNOT EXISTS

On peut tester la non présence de tuple dans la sous-requête en utilisant la clause NOT EXISTS à la place de la clause EXISTS.