Qu’est-ce que PostgreSQL Existe ?
L’opérateur EXISTS teste si une ou des lignes existent dans une sous-requête. Cela signifie que l’opérateur est utilisé avec une sous-requête. L’opérateur Exists est dit avoir été rencontré lorsqu’au moins une ligne est trouvée dans la sous-requête. Vous pouvez utiliser cette opération avec les instructions SELECT, UPDATE, INSERT et DELETE.
Dans ce tutoriel PostgreSQL, vous apprendrez ce qui suit:
- Syntaxe
- Avec Instruction SELECT
- Avec Instruction INSERT
- Avec Instruction UPDATE
- Avec Instruction DELETE
- Avec pgAdmin
Syntaxe
Voici la syntaxe de l’instruction PostgreSQL EXISTS:
WHERE EXISTS (subquery);
La syntaxe ci-dessus montre que l’opérateur EXISTS prend un argument, qui est une sous-requête. La sous-requête est simplement une instruction SELECT qui doit commencer par un SELECT * au lieu d’une liste de noms de colonnes ou d’expressions.
Avec l’instruction SELECT
Voyons comment utiliser une instruction SELECT avec l’opérateur EXISTS. Nous avons les tableaux suivants:
Réserver:
Prix:
Exécutez l’instruction suivante:
SELECT *FROM BookWHERE EXISTS (SELECT * FROM Price WHERE Book.id = Price.id);
Cela renvoie les éléments suivants:
La commande ci-dessus doit renvoyer tous les enregistrements de la table de livres dont l’id correspond à l’id de tous les enregistrements de la sous-requête. Une seule pièce d’identité a été appariée. Par conséquent, un seul enregistrement a été renvoyé.
Avec l’instruction INSERT
, nous pouvons utiliser l’opérateur EXISTS dans une instruction INSERT. Nous avons les 3 tableaux suivants:
Livre:
Prix:
Prix2:
Nous pouvons alors exécuter l’instruction suivante:
INSERT INTO PriceSELECT id, priceFROM Price2WHERE EXISTS (SELECT id FROM Book WHERE Book.id = Price2.id);
Le tableau des prix est maintenant le suivant:
La ligne avec un id de 5 dans la table nommée Price2 a été appariée. Cet enregistrement a ensuite été inséré dans le tableau des prix.
Avec l’instruction UPDATE
, nous pouvons utiliser l’opérateur EXISTS dans une instruction UPDATE.
Exécutez la requête suivante:
UPDATE PriceSET price = (SELECT price FROM Price2 WHERE Price2.id = Price.id)WHERE EXISTS (SELECT id, priceFROM Price2WHERE Price2.id = Price.id);
Nous mettons à jour la colonne des prix du tableau des prix. Notre objectif est que les prix des articles partageant une pièce d’identité soient les mêmes. Une seule ligne a été appariée, c’est-à-dire 5.
Cependant, comme les prix sont égaux, c’est-à-dire 205, aucune mise à jour n’a été effectuée. S’il y avait une différence, une mise à jour aurait été faite.
Avec l’instruction DELETE
Une instruction DELETE PostgreSQL peut utiliser l’opérateur EXISTS. Voici un exemple:
DELETE FROM PriceWHERE EXISTS (SELECT * FROM Price2 WHERE Price.id = Price2.id);
Le tableau des prix est maintenant le suivant:
La ligne avec un id de 5 a été supprimée.
Avec pgAdmin
Voyons maintenant comment ces actions peuvent être effectuées en utilisant pgAdmin.
Avec l’instruction SELECT
Pour accomplir la même chose via pgAdmin, procédez comme suit :
Étape 1) Connectez-vous à votre compte pgAdmin.
Étape 2)
- Dans la barre de navigation du bouton gauche de la souris, cliquez sur Bases de données.
- Cliquez sur Démo.
Étape 3) Tapez la requête dans l’éditeur de requêtes:
SELECT *FROM BookWHERE EXISTS (SELECT * FROM Price WHERE Book.id = Price.id);
Étape 4) Cliquez sur le bouton Exécuter.
Il devrait renvoyer ce qui suit:
Avec l’instruction INSERT
Pour accomplir la même chose via pgAdmin, procédez comme suit:
Étape 1) Connectez-vous à votre compte pgAdmin.
Étape 2)
- Dans la barre de navigation du bouton gauche de la souris, cliquez sur Bases de données.
- Cliquez sur Démo.
Étape 3) Tapez la requête dans l’éditeur de requêtes:
INSERT INTO PriceSELECT id, priceFROM Price2WHERE EXISTS (SELECT id FROM Book WHERE Book.id = Price2.id);
Étape 4) Cliquez sur le bouton Exécuter.
Le tableau des prix devrait maintenant être le suivant:
Avec l’instruction de MISE À JOUR
Pour accomplir la même chose via pgAdmin, procédez comme suit:
Étape 1) Connectez-vous à votre compte pgAdmin.
Étape 2)
- Dans la barre de navigation du bouton gauche de la souris, cliquez sur Bases de données.
- Cliquez sur Démo.
Étape 3) Tapez la requête dans l’éditeur de requêtes:
UPDATE PriceSET price = (SELECT price FROM Price2 WHERE Price2.id = Price.id)WHERE EXISTS (SELECT id, priceFROM Price2WHERE Price2.id = Price.id);
Étape 4) Cliquez sur le bouton Exécuter.
Le tableau des prix devrait maintenant être le suivant:
Avec l’instruction DELETE
Pour accomplir la même chose via pgAdmin, procédez comme suit:
Étape 1) Connectez-vous à votre compte pgAdmin.
Étape 2)
- Dans la barre de navigation du bouton gauche de la souris, cliquez sur Bases de données.
- Cliquez sur Démo.
Étape 3) Tapez la requête dans l’éditeur de requêtes:
DELETE FROM PriceWHERE EXISTS (SELECT * FROM Price2 WHERE Price.id = Price2.id);
Étape 4) Cliquez sur le bouton Exécuter.
Le tableau des prix devrait maintenant être le suivant:
Résumé
- L’opérateur EXISTS teste si une ou des lignes existent dans une sous-requête.
- Il est utilisé avec une sous-requête et est dit satisfait lorsque la sous-requête renvoie au moins une ligne.
- Il est utilisé avec les instructions SELECT, UPDATE, INSERT et DELETE.
Téléchargez la base de données utilisée dans ce tutoriel