PostgreSQL EXISTS avec des exemples

Table des matières:

Anonim

Qu'est-ce que PostgreSQL existe?

L'opérateur EXISTS teste si une ou plusieurs lignes existent dans une sous-requête. Cela signifie que l'opérateur est utilisé avec une sous-requête. On dit que l'opérateur Exists a é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 didacticiel PostgreSQL, vous apprendrez ce qui suit:

  • Syntaxe
  • Avec instruction SELECT
  • Avec instruction INSERT
  • Avec instruction UPDATE
  • Avec l'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 SELECT * au lieu d'une liste de noms de colonnes ou d'expressions.

Avec instruction SELECT

Voyons comment utiliser une instruction SELECT avec l'opérateur EXISTS. Nous avons les tableaux suivants:

Livre:

Prix:

Exécutez l'instruction suivante:

SELECT *FROM BookWHERE EXISTS (SELECT *FROM PriceWHERE Book.id = Price.id);

Cela renvoie ce qui suit:

La commande ci-dessus doit renvoyer tous les enregistrements de la table Book dont l'ID correspond à l'ID de tous les enregistrements de la sous-requête. Un seul identifiant a été mis en correspondance. Par conséquent, un seul enregistrement a été renvoyé.

Avec instruction INSERT

Nous pouvons utiliser l'opérateur EXISTS dans une instruction INSERT. Nous avons les 3 tableaux suivants:

Livre:

Prix:

Prix2:

Nous pouvons ensuite exécuter l'instruction suivante:

INSERT INTO PriceSELECT id, priceFROM Price2WHERE EXISTS (SELECT idFROM BookWHERE Book.id = Price2.id);

Le tableau des prix se présente désormais comme suit:

La ligne avec un ID de 5 dans la table nommée Price2 a été mise en correspondance. Cet enregistrement a ensuite été inséré dans la table Price.

Avec instruction UPDATE

Nous pouvons utiliser l'opérateur EXISTS dans une instruction UPDATE.

Exécutez la requête suivante:

UPDATE PriceSET price = (SELECT priceFROM Price2WHERE Price2.id = Price.id)WHERE EXISTS (SELECT id, priceFROM Price2WHERE Price2.id = Price.id);

Nous mettons à jour la colonne des prix de la table des prix. Notre objectif est que les prix des articles partageant un identifiant soient les mêmes. Une seule ligne correspondait, 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é effectuée.

Avec l'instruction DELETE

Une instruction DELETE PostgreSQL peut utiliser l'opérateur EXISTS. Voici un exemple:

DELETE FROM PriceWHERE EXISTS (SELECT *FROM Price2WHERE Price.id = Price2.id);

Le tableau des prix se présente désormais comme suit:

La ligne avec un identifiant de 5 a été supprimée.

Avec pgAdmin

Voyons maintenant comment ces actions peuvent être effectuées à l'aide de pgAdmin.

Avec instruction SELECT

Pour accomplir la même chose via pgAdmin, procédez comme suit:

Étape 1) Connectez-vous à votre compte pgAdmin.

Étape 2)

  1. Dans la barre de navigation sur la gauche, cliquez sur Bases de données.
  2. Cliquez sur Démo.

Étape 3) Tapez la requête dans l'éditeur de requête:

SELECT *FROM BookWHERE EXISTS (SELECT *FROM PriceWHERE Book.id = Price.id);

Étape 4) Cliquez sur le bouton Exécuter.

Il doit renvoyer ce qui suit:

Avec instruction INSERT

Pour accomplir la même chose via pgAdmin, procédez comme suit:

Étape 1) Connectez-vous à votre compte pgAdmin.

Étape 2)

  1. Dans la barre de navigation sur la gauche, cliquez sur Bases de données.
  2. Cliquez sur Démo.

Étape 3) Tapez la requête dans l'éditeur de requête:

INSERT INTO PriceSELECT id, priceFROM Price2WHERE EXISTS (SELECT idFROM BookWHERE Book.id = Price2.id);

Étape 4) Cliquez sur le bouton Exécuter.

Le tableau des prix devrait maintenant être le suivant:

Avec instruction UPDATE

Pour accomplir la même chose via pgAdmin, procédez comme suit:

Étape 1) Connectez-vous à votre compte pgAdmin.

Étape 2)

  1. Dans la barre de navigation sur la gauche, cliquez sur Bases de données.
  2. Cliquez sur Démo.

Étape 3) Tapez la requête dans l'éditeur de requête:

UPDATE PriceSET price = (SELECT priceFROM Price2WHERE 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)

  1. Dans la barre de navigation sur la gauche, cliquez sur Bases de données.
  2. Cliquez sur Démo.

Étape 3) Tapez la requête dans l'éditeur de requête:

DELETE FROM PriceWHERE EXISTS (SELECT *FROM Price2WHERE 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 plusieurs lignes existent dans une sous-requête.
  • Elle est utilisée avec une sous-requête et est dite satisfaite 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 didacticiel