Sous-requête postgresql

Sous-requête postgresql
PostgreSQL est l'un des outils de gestion de base de données les plus puissants et les plus faciles à utiliser. Il fournit des requêtes simples et intuitives, vous permettant de maîtriser et de rappeler facilement les instructions SQL.

Dans ce tutoriel, nous discuterons de la façon d'utiliser les sous-requêtes PostgreSQL. Les sous-questions vous permettent de créer des requêtes SQL complexes qui sont fortement lisibles et faciles à utiliser.

Qu'est-ce qu'une sous-requête?

Dans PostgreSQL, une sous-requête fait référence à une requête dans une requête. Vous pouvez lier des sous-requêtes à des requêtes typiques telles que Select, d'où, de, ayant, et plus.

Une sous-requête est également appelée une requête intérieure.

La syntaxe de base pour une sous-requête PostgreSQL est:

Sélectionnez Col1, Col2 dans TB1 où expr (sélectionnez Col1, Col2 dans TB1);

Dans ce cas, les déclarations à l'intérieur de la parenthèse représentent la sous-requête. Ils s'exécutent avant l'exécution de la requête principale ou extérieure.

Une fois que la sous-requête renvoie le résultat, la requête principale le traite et renvoie les résultats à l'utilisateur.

Dans PostgreSQL, la commande par ne peut pas être utilisée dans une sous-requête.

Exemple de sous-requête postgresql

Illustrons l'utilisation d'une sous-requête en utilisant la clause WHERE. Supposons que nous ayons une base de données des pays avec des colonnes: nom, country_id et représentations à deux lettres.

Nous pouvons utiliser une sous-requête pour obtenir les pays où l'identifiant est supérieur à 800.

Un exemple de requête est ci-dessous:

Sélectionnez Nom, Two_letter, country_id depuis Country Where Country_id in (Select Country_id Where Country_id> 800);

Dans l'exemple ci-dessus, la sous-requête filtre les pays avec un identifiant supérieur à 800 et renvoie le résultat à la requête principale.

Un exemple de résultat est ci-dessous:

Exemple 2

Supposons que nous voulons obtenir des pays avec un identifiant supérieur à 800 et commencer par la lettre U.

Nous pouvons attacher la requête dans une sous-requête en tant que:

Sélectionnez Nom, Two_letter, Country_id depuis Country Where Country_id in (Select Country_id Where Country_id> 800 et Two_letter Like 'U%');

La requête ci-dessus fonctionne de la même manière que celle ci-dessus. Cependant, il vérifie deux conditions à la fois et renvoie le résultat à la requête extérieure.

Exemple 3

Bien que nous ne puissions pas utiliser la clause Order By dans une sous-requête PostgreSQL, nous pouvons utiliser un groupe par requête pour effectuer une fonction similaire.

Par exemple, considérez le tableau de paiement dans la base de données Sakila. Nous pouvons effectuer une action comme:

Sélectionnez le paiement_id, montant DEPUIS Paiement où le paiement_id DANS (Sélectionnez le paiement_id DEPUIS Groupe de paiement par paiement_id limite 5);

La requête ci-dessus renvoie les résultats groupés par identifiant de paiement.

Exemple 4

Nous pouvons également utiliser PostgreSQL avec d'autres déclarations. Par exemple, nous pouvons supprimer des enregistrements spécifiques renvoyés d'une sous-requête.

Supprimer du film où existe (sélectionner Film_id à partir du film où Film_id> 100);
Sélectionner * dans le film Limite 5;

Dans la requête ci-dessus, nous supprimons le film où le film_id est supérieur à 100.

Il est bon de s'assurer que d'autres personnes utilisant la base de données n'ont pas référencé les enregistrements que vous souhaitez supprimer.

Points de sous-requête

Il y a peu de points à garder à l'esprit lorsque vous travaillez avec des sous-requêtes postgresql.

  1. Enfermer les sous-requêtes avec des parenthèses.
  2. Assurez-vous que la sous-requête renvoie une valeur car la requête extérieure fonctionnera sur le résultat de la sous-requête.
  3. Vous pouvez utiliser des sous-requêtes avec divers opérateurs SQL tant qu'ils ne renvoient pas de valeur nulle.

Fermeture

Dans ce guide, nous avons discuté de la façon de lier les requêtes dans PostgreSQL sans utiliser de requêtes séparées.