Une sous-requête (imbriquée) fait partie de la requête principale. Cette sous-partie est intégrée à la clause «où» dans la déclaration. Une sous-requête est utilisée, tous les «sélections», supprimer », etc. Des déclarations avec certains opérateurs de base comme>,<, and, =, etc. One thing that competes for this command from others is that it doesn't support the use of the “ORDER BY” command inside the subquery because we use a subquery to make the query easier, whereas the use of this clause can make it more complex. However, we can use “order by” clause in the main command. The syntax of the subquery varies for every other statement. The examples used in this guide will be favorable in explaining the respective syntaxes.
Sous-requête et la commande SELECT
Considérez une technologie nommée Technologie. Le tableau est créé en utilisant les instructions «Créer» et «Insérer». Le tableau a 4 attributs (colonne). Afficher le contenu du tableau à l'aide de l'instruction SELECT.
>> Sélectionner * parmi la technologie;Nous appliquerons une sous-requête à ce tableau. Cette sous-requête est liée à l'utilisation de l'instruction «SELECT». La sous-requête fonctionne dans une telle situation où vous devez appliquer plus d'une condition sur une seule table. La requête principale sélectionne une partie de la table, tandis que la sous-requête sélectionne la table de repos. Le concept sera clair après avoir compris l'exemple donné. L'instruction SELECT elle-même est utilisée de plusieurs manières dans une sous-requête. Toutes les méthodes possibles sont expliquées ici une par une. Laissez-nous commencer les exemples.
>> sélectionnez T1.Nom, T1.année (sélectionnez Min (ID) à partir de T2 où T1.id = t2.id) Subquery1 de Technology T1;L'explication de cette requête a nécessité le concept de création d'objets. À partir de la requête, il est clair que les noms de colonne de la table sont accessibles via la lettre de référence, connue sous le nom d'objet dans la plupart des endroits. La première commande de sélection, la commande principale, récupére deux noms de colonnes et l'année via «T1», tandis que la 3ème colonne dépend de la sous-requête. Une autre commande de sélection est utilisée pour récupérer l'ID du tableau technologique, dont le nom est défini comme «Subquery1». Ici, une condition est appliquée; Les ID sont affichés dans la table résultante si la condition est satisfaite. Une autre vue de la table est créée qui est récupérée par «T2». Premièrement, la comparaison se fait entre les ID de T1 et T2. Lorsque les deux ID sont les mêmes, affichez-les dans le résultat avec les deux autres colonnes. En d'autres termes, la colonne entière de l'ID sera sélectionnée car la colonne est la même dans les deux tables.
En passant vers l'exemple suivant «Sélectionner», cet exemple est simple par rapport au dernier, car il n'y a pas d'utilisation d'un objet d'accès supplémentaire. Comme nous le savons d'abord, la sous-questionnaire est exécutée par le système. Dans la sous-questionnaire, la condition est appliquée sur une colonne du tableau, où le numéro de modèle doit être supérieur à 3. Lorsque le système obtient les facteurs résultants de la sous-questionn. Par exemple, toutes les autres données des colonnes seront affichées conformément au résultat de la sous-requête, respectivement.
>> Sélectionner * à partir de la technologie où id in (sélectionnez ID à partir de la technologie où les modèles> 3);Vous pouvez voir qu'une seule ligne est supprimée de la table qui ne remplissait pas la condition. Une chose que vous devez avoir dans votre esprit est la question de savoir pourquoi nous avons utilisé la sous-questionn. La réponse est que la sous-quête divise la requête complexe en parties isolées. Les mesures de précision augmentent la nième plus dans la sous-requête que d'utiliser une seule commande.
Nous avons maintenant basculé vers une autre table nommée «échantillon 1". Le tableau a trois colonnes; L'un est l'âge. Nous appliquerons d'abord une déclaration de sélection simple pour calculer l'âge moyen de la personne, car cet âge moyen sera utilisé plus loin dans le tableau.
>> SELECT * dans Sample1; >> Sélectionnez AVG (âge) de Sample1;AVG (nom de la colonne) est une fonction intégrée de Postgres. Ici, une sous-requête est utilisée; La requête affichera les personnes avec un âge supérieur à l'âge moyen calculé. La sous-requête rapportera l'âge moyen de l'âge de la colonne.
>> Sélectionner * parmi un échantillon1 où l'âge> (sélectionnez AVG (âge) dans Sample1);2 lignes sont sélectionnées car ces âges étaient supérieurs à l'âge moyen.
Sous-requête avec l'utilisation de l'insertion
Jusqu'à présent, nous avons utilisé la sous-redroise sur une seule table. Mais maintenant, il y a un exemple d'utilisation de la requête principale sur une table et de la sous-requête sur l'autre. À cette fin, nous avons utilisé deux tables ici. L'un est un logiciel, et l'autre est un système. Retrouvez l'enregistrement via l'instruction SELECT pour les deux tables.
>> Sélectionner * dans le logiciel;Nous allons maintenant appliquer la sous-requête aux tables données.
Sélectionnez la déclaration car la requête principale peut également être utilisée dans ce cas. Mais dans cet exemple, «insérer» est utilisé. Cette instruction ajoutera une ligne dans une table concernant la valeur dans la ligne d'une autre table en utilisant une clause «où».
>> Insérer dans le logiciel (ID, nom) Sélectionnez ID, nom dans le système où le système.ID> 5 et système.name = 'windows';Le "système«Les valeurs de la table sont insérées dans la table« logiciel »en correspondant à la fois l'ID et les noms des tableaux. Chaque colonne de la table différente est spécifiée via le nom du tableau. La sous-requête repose sur le «sélectionner»Déclaration ici pour récupérer l'enregistrement en deux colonnes de la table.
Alterner la table avec la sous-requête
Considérons maintenant un autre nom de table, «Sample1», ayant des noms, des identifiants et des âges de personnes. Et l'autre tableau est le même que dans l'exemple précédent «système".
La requête de mise à jour est utilisée pour modifier la table en remplaçant la précédente par la nouvelle donnée dans la commande. Tandis que dans le cas de la sous-requête, la valeur n'est pas directement donnée. Il est récupéré à partir de la sous-requête appliquée dans le deuxième tableau.
>> mettre à jour sample1 set name = (sélectionnez nom dans le système où le système.id = échantillon1.identifiant);Cette commande «échantillon 1»La table est mise à jour en sélectionnant le nom dans la table« Système »où les deux ID sont les mêmes. Le tableau d'échantillon résultant montre les deux lignes. Comme ID et le nom ont été sélectionnés, la colonne d'âge est donc restée intacte.
Sous-requête et supprimer la déclaration
Une instruction Delete est utilisée pour supprimer les valeurs d'une table de l'autre. Comme nous avons utilisé les deux mêmes tables, les valeurs utilisées pour mettre à jour un autre tableau seront supprimées.
>> Supprimer du système où existent (sélectionnez le nom de Sample1 où le système.id = échantillon1.identifiant );Lorsque nous récupérons le tableau après la suppression, nous pouvons voir qu'une seule ligne est laissée en utilisant le 'sélectionner' déclaration.
Conclusion
"Sous-requête postgresql"Est une caractéristique importante de cette plate-forme pour garder les requêtes facilement compréhensibles. Dans cet article, nous avons discuté de l'utilisation de la sous-requête dans chaque perspective des commandes sélectionnées, insérer, mettre à jour et supprimer. J'espère que cet effort vous aidera tout en utilisant des commandes postgresql.