PostgreSQL EXISTE AVEC SELECT Operator (Exemple)

โšก Rรฉsumรฉ intelligent

PostgreSQL EXISTS est un opรฉrateur boolรฉen qui teste si une sous-requรชte corrรฉlรฉe renvoie une ligne, permettant aux instructions SELECT, INSERT, UPDATE et DELETE de filtrer efficacement les donnรฉes en fonction de la prรฉsence ou de l'absence d'enregistrements correspondants.

  • ๐Ÿ“‹ syntaxe: WHERE EXISTS (sous-requรชte) renvoie vrai lorsque la sous-requรชte produit au moins une ligne.
  • ๐Ÿ”— Sous-requรชte corrรฉlรฉe : EXISTS relie les requรชtes internes et externes, en faisant correspondre les lignes sur une clรฉ partagรฉe.
  • | Court-circuit : La fonction EXISTS s'arrรชte ร  la premiรจre ligne correspondante, ce qui lui permet de bien s'adapter aux grands tableaux.
  • (I.e. Quatre dรฉclarations : Cet opรฉrateur fonctionne ร  l'intรฉrieur des requรชtes SELECT, INSERT, UPDATE et DELETE.
  • ๐Ÿ›ก๏ธ N'EXISTE PAS : Exclut en toute sรฉcuritรฉ les lignes et รฉvite le piรจge NULL qui interrompt NOT IN.
  • ๐Ÿค– Requรชtes IA : Les assistants gรฉnรจrent des clauses EXISTS et signalent les risques de performance liรฉs aux sous-requรชtes corrรฉlรฉes.

PostgreSQL EXISTE avec Select Operator

Qu'est-ce qui EXISTE dans PostgreSQL?

Le PostgreSQL EXISTE L'opรฉrateur EXISTS vรฉrifie l'existence d'une ou plusieurs lignes dans une sous-requรชte. Il est donc utilisรฉ conjointement avec une sous-requรชte. On considรจre que l'opรฉrateur EXISTS a รฉtรฉ trouvรฉ lorsqu'au moins une ligne est prรฉsente dans la sous-requรชte. Vous pouvez utiliser cette opรฉration avec les instructions SELECT, UPDATE, INSERT et DELETE.

PostgreSQL Syntaxe de requรชte EXISTS

Voici la syntaxe du PostgreSQL Instruction EXISTE :

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 un Instruction SELECT cela devrait commencer par un SELECT * au lieu d'une liste de noms de colonnes ou d'expressions.

PostgreSQL EXISTS avec instruction SELECT

Voyons comment utiliser une instruction SELECT avec l'opรฉrateur EXISTS. Nous avons les tables suivantes :

Livre:

PostgreSQL EXISTS avec instruction SELECT

Le prix :

PostgreSQL EXISTS avec instruction SELECT

Exรฉcutez l'instruction suivante :

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

Cela renvoie les รฉlรฉments suivants :

PostgreSQL EXISTS avec rรฉsultat de l'instruction SELECT

La commande ci-dessus doit renvoyer tous les enregistrements de la table Book dont l'identifiant correspond ร  l'identifiant de tous les enregistrements de la sous-requรชte. Un seul identifiant correspondait. Par consรฉquent, un seul enregistrement a รฉtรฉ renvoyรฉ.

PostgreSQL EXISTS avec instruction INSERT

Nous pouvons utiliser l'opรฉrateur EXISTS dans un Instruction INSERT. Nous avons les 3 tableaux suivants :

Livre:

PostgreSQL EXISTS avec instruction INSERT

Le prix :

PostgreSQL EXISTS avec instruction INSERT

Prix2 :

PostgreSQL EXISTS avec instruction INSERT

Nous pouvons alors exรฉcuter l'instruction suivante :

INSERT INTO Price
SELECT id, price
FROM Price2
WHERE EXISTS (SELECT id
              FROM Book
              WHERE Book.id = Price2.id);

Le tableau des prix est dรฉsormais le suivant :

PostgreSQL EXISTS avec rรฉsultat de l'instruction INSERT

La ligne avec un identifiant de 5 dans le tableau nommรฉ Price2 a รฉtรฉ mise en correspondance. Cet enregistrement a ensuite รฉtรฉ insรฉrรฉ dans la table des prix.

PostgreSQL EXISTE avec instruction UPDATE

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

Exรฉcutez la requรชte suivante :

UPDATE Price
SET price = (SELECT price
              FROM Price2
              WHERE Price2.id = Price.id)
WHERE EXISTS (SELECT id, price
FROM Price2
WHERE Price2.id = Price.id);

PostgreSQL EXISTE avec instruction UPDATE

Nous mettons ร  jour la colonne prix du tableau Prix. Notre objectif est que les prix des articles partageant un identifiant soient les mรชmes. Une seule ligne correspondait, soit 5.

Cependant, comme les prix sont รฉgaux, soit 205, aucune mise ร  jour n'a รฉtรฉ effectuรฉe. S'il y avait une diffรฉrence, une mise ร  jour aurait รฉtรฉ effectuรฉe.

PostgreSQL EXISTS avec instruction DELETE

A PostgreSQL L'instruction DELETE peut utiliser l'opรฉrateur EXISTS. Voici un exemple :

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

Le tableau des prix est dรฉsormais le suivant :

PostgreSQL EXISTS avec instruction DELETE

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

PostgreSQL Instruction EXISTS utilisant pgAdmin

En dehors de l'interprรฉteur de commandes SQL, les mรชmes requรชtes EXISTS peuvent รชtre exรฉcutรฉes visuellement via l'interface pgAdmin. Voyons maintenant comment rรฉaliser ces actions avec pgAdmin :

Avec l'instruction SELECT

Voici les รฉtapes ร  suivre pour utiliser une requรชte EXISTS dans PostgreSQL avec une instruction SELECT utilisant pgAdmin :

ร‰tape 1) Connectez-vous ร  votre compte pgAdmin. Ouvrez pgAdmin et connectez-vous ร  votre compte ร  l'aide de vos identifiants.

ร‰tape 2) Crรฉer une base de donnรฉes de dรฉmonstration.

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

PostgreSQL Instruction EXISTS utilisant pgAdmin

ร‰tape 3) Tapez la requรชte ci-dessous dans l'รฉditeur de requรชte :

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

ร‰tape 4) Cliquez sur le bouton Exรฉcuter.

PostgreSQL Instruction EXISTS utilisant pgAdmin

Il devrait renvoyer ce qui suit :

PostgreSQL Instruction EXISTS utilisant pgAdmin

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)

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

Dรฉclaration EXISTS dans PostgreSQL en utilisant pgAdmin

ร‰tape 3) Tapez la requรชte dans l'รฉditeur de requรชtes :

INSERT INTO Price
SELECT id, price
FROM Price2
WHERE EXISTS (SELECT id
              FROM Book
              WHERE Book.id = Price2.id);

ร‰tape 4) Cliquez sur le bouton Exรฉcuter.

Dรฉclaration EXISTS dans PostgreSQL en utilisant pgAdmin

Le tableau des prix devrait maintenant รชtre le suivant :

Dรฉclaration EXISTS dans PostgreSQL en utilisant pgAdmin

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 de gauche, cliquez sur Bases de donnรฉes.
  2. Cliquez sur Dรฉmo.

Dรฉclaration EXISTS dans PostgreSQL en utilisant pgAdmin

ร‰tape 3) Tapez la requรชte dans l'รฉditeur de requรชtes :

UPDATE Price
SET price = (SELECT price
              FROM Price2
              WHERE Price2.id = Price.id)
WHERE EXISTS (SELECT id, price
FROM Price2
WHERE Price2.id = Price.id);

ร‰tape 4) Cliquez sur le bouton Exรฉcuter.

PostgreSQL Instruction EXISTS utilisant pgAdmin

Le tableau des prix devrait maintenant รชtre le suivant :

PostgreSQL Instruction EXISTS utilisant pgAdmin

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 de gauche, cliquez sur Bases de donnรฉes.
  2. Cliquez sur Dรฉmo.

PostgreSQL Instruction EXISTS utilisant pgAdmin

ร‰tape 3) Tapez la requรชte dans l'รฉditeur de requรชtes :

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

ร‰tape 4) Cliquez sur le bouton Exรฉcuter.

PostgreSQL Instruction EXISTS utilisant pgAdmin

Le tableau des prix devrait maintenant รชtre le suivant :

PostgreSQL Instruction EXISTS utilisant pgAdmin

Tรฉlรฉchargez la base de donnรฉes utilisรฉe dans ce tutoriel

FAQ

La fonction EXISTS vรฉrifie si une sous-requรชte corrรฉlรฉe renvoie une ligne et s'arrรชte ร  la premiรจre correspondance ; elle est donc adaptรฉe aux grandes sous-requรชtes. La fonction IN compare une valeur ร  une liste et convient aux petits ensembles constants.

La fonction NOT IN peut renvoyer zรฉro ligne lorsque la sous-requรชte contient une valeur NULL, car la comparaison devient alors indรฉterminรฉe. La fonction NOT EXISTS ignore les valeurs NULL et รฉvalue correctement chaque ligne, ce qui en fait un choix fiable pour les anti-jointures.

Une sous-requรชte corrรฉlรฉe fait rรฉfรฉrence ร  une colonne de la requรชte externe, par exemple WHERE Book.id = Price.id. La fonction EXISTS vรฉrifie cette correspondance pour chaque ligne de la requรชte externe et renvoie vrai lorsqu'une correspondance est trouvรฉe.

Oui. La fonction EXISTS renvoie vrai dรจs que la sous-requรชte produit une ligne, รฉvitant ainsi d'analyser les suivantes. Ce comportement d'analyse en court-circuit la rend efficace pour les sous-requรชtes volumineuses et corrรฉlรฉes.

Non. La commande EXISTS vรฉrifie uniquement si la sous-requรชte renvoie une ligne ; par consรฉquent, SELECT *, SELECT 1 et SELECT id se comportent de la mรชme maniรจre. La liste des colonnes ร  l'intรฉrieur de la sous-requรชte n'a aucune incidence sur le rรฉsultat.

Indexez les colonnes jointes dans la sous-requรชte, conservez la condition de corrรฉlation sargable et exรฉcutez EXPLAIN ANALYZE. PostgreSQL souvent rรฉรฉcrit EXISTS comme une semi-jointure efficace lorsque les index le prennent en charge.

Les assistants IA transforment les rรจgles en langage naturel en clauses EXISTS, construisent la sous-requรชte correspondante et signalent les erreurs NOT IN NULL. Ils suggรจrent รฉgalement des index et des indications EXPLAIN pour l'optimisation.

Oui. Un copilote IA dรฉtecte les modรจles de sous-requรชtes et rรฉรฉcrit IN en EXISTS ou NOT IN en NOT EXISTS, amรฉliorant ainsi la sรฉcuritรฉ des valeurs NULL et les performances sur les grandes tables.

Rรฉsumez cet article avec :