L2 Info : Bases de données
 
◃  Ch. 2 Interrogation des données avec SQL (DQL)  ▹
 

L'opérateur EXISTS

  • Mis en oeuvre particulière d'une sous-requête synchronisée
  • L'opérateur EXISTS vérifie s'il existe au moins une ligne satisfaisant la sous-requête
  • L'opérateur EXISTS retourne vrai lorsque la sous-requête synchronisée ne renvoie pas un ensemble vide
  • Exemple :
    SELECT * FROM Diplome
    WHERE EXISTS (SELECT * FROM Etudiant
                  WHERE Etudiant.Dip_id = Diplome.Dip_id);
     dip_id | dip_nom | dip_niveau | dip_discipline | prof_id 
    --------+---------+------------+----------------+---------
          1 | Licence | L3         | Informatique   |       3
    (1 row)
  • Cette requête (sans jointure !) retourne la liste des diplômes ayant des étudiants inscrits.
  • Explication : la clause WHERE de la requête principale procède par itération sur chaque ligne de la clause FROM ; lors de chaque itération, la sous-requête ne récupère qu'une seule valeur de l'attribut provenant de la requête principale.