Qu'est-ce que CTE dans PostgreSQL?

Qu'est-ce que CTE dans PostgreSQL?

CTE dans PostgreSQL signifie Expression de la table commune. C'est une façon de tenir temporairement les résultats d'une requête postgresql. Parfois, nous écrivons des requêtes extrêmement complexes qui sont très difficiles à interpréter. Dans de tels cas, l'utilisation de CTE rend nos requêtes plus simples et plus lisibles. Avec l'aide de cet article, nous avons l'intention de vous apprendre l'utilisation du CTE dans PostgreSQL dans Windows 10.

Exemple: Utilisation du CTE dans PostgreSQL:

Nous utiliserons CTE dans PostgreSQL dans Windows 10 dans l'exemple suivant:

Étape n ° 1: Création de tables postgresql:

Tout d'abord, nous créerons deux tables postgresql pour utiliser CTE plus tard pour extraire les résultats souhaités de ces tables. Dans cette illustration, nous souhaitons travailler avec une relation entre les médecins et les patients. Par conséquent, nous créerons un tableau nommé «Doctor» et l'autre nommé «patient».

Pour créer le tableau «Doctor», nous exécuterons la requête postgresql suivante:

# Create Table Doctor (DOC_ID Serial Primary Key, doc_name varchar (255) pas null);

Cette requête créera la table «Doctor» avec deux attributs, je.e. Doc_id et doc_name. Vous pouvez également voir l'ensemble du processus de création de table à partir de l'image ci-dessous:

Maintenant, pour créer le tableau «patient», nous exécuterons la requête postgresql suivante:

# Créer un patient de table (clé primaire série PAT_ID, PAT_NAME VARCHAR (255) Not Null, PAT_TEMP int Not Null, doc_id int Not Null);

Cette requête créera la table «patiente» avec quatre attributs, je.e. PAT_ID, PAT_NAME, PAT_TEMPERATURE (cela représente la température corporelle du patient) et DOC_ID (c'est le même doc_id que nous avons déclaré dans le tableau "Doctor". Ici, il est utilisé comme clé étrangère pour spécifier quels médecins ont traité chaque patient). Vous pouvez également voir l'ensemble du processus de création de table à partir de l'image ci-dessous:

Étape # 2: Enregistrez l'insertion dans les tables postgresql:

Après avoir créé ces tables, nous devons y insérer une quantité suffisante d'enregistrements pour utiliser ces enregistrements pour démontrer l'utilisation du CTE dans PostgreSQL plus tard. Pour insérer des dossiers dans la table «Doctor», nous exécuterons la requête postgresql suivante:

# Insérer dans les valeurs du docteur (1, «Sarah»), (2, «affan»), (3, «irtiza»), (4, «Hina»), (5, «Naila»);

Cette requête insérera simplement les dossiers de cinq médecins différents dans la table «Doctor» comme indiqué dans l'image ci-dessous:

Maintenant, pour insérer des enregistrements dans la table «patient», nous exécuterons la requête postgresql suivante:

# Insérer dans les valeurs des patients (1, 'Saba', 99, 1), (2, 'Sidra', 100, 1), (3, 'Hamza', 100, 2), (4, 'Aslam', 98, 2), (5, «Fizza», 101, 3), (6, «Iqra», 102, 3), (7, «Sadia», 100, 4), (8, «Sobia», 99, 4) , (9, «Salman», 100, 5), (10, «Jawad», 103, 5);

Cette requête insérera les enregistrements de 10 patients différents dans la table «patient» comme indiqué dans l'image ci-dessous:

Note: Vous vous demandez peut-être pourquoi nous avons gardé le nombre de dossiers de la table «patient» plus que le «médecin». Eh bien, un seul médecin peut s'occuper de plusieurs patients à la fois. Cependant, c'est juste pour la démonstration. Vous pouvez conserver le nombre d'enregistrements de ces deux tables égaux si vous le souhaitez.

Étape # 3: Affichez les enregistrements nouvellement insérés dans les tables PostgreSQL:

Avant de poursuivre, nous verrons rapidement les enregistrements insérés dans nos deux tables PostgreSQL. Pour le tableau «Doctor», nous exécuterons la requête postgresql suivante:

# Select * chez Doctor;

Vous pouvez voir tous les enregistrements du tableau «Doctor» à partir de l'image illustrée ci-dessous:

Maintenant, pour le tableau «patient», nous exécuterons la requête postgresql suivante:

# Select * chez le patient;

Vous pouvez voir tous les enregistrements du tableau «patient» de l'image illustrée ci-dessous:

Étape # 4: Utilisez CTE pour afficher tous les enregistrements d'une table PostgreSQL:

Cette étape montrera une utilisation relativement simple du CTE dans PostgreSQL. Nous voulons stocker tous les enregistrements de l'une de nos tables dans une expression de table commune, puis l'afficher simplement sur la console. La requête que nous allons exécuter à cet effet est citée ci-dessous:

# Avec cte_patient AS (sélectionnez PAT_ID, PAT_NAME, PAT_TEMP, DOC_ID FROM PATIENT) SELECT * FROM CTE_PATIent;

Maintenant, nous vous expliquerons toute cette requête tout en discutant de tous ses composants. Le nom de l'expression de la table commune est toujours précédé par le mot-clé «avec» et a été poursuivi par le mot-clé «As». Cela signifie que le nom de notre CTE dans ce cas particulier est «cte_patient». Après le mot-clé «As», nous spécifions toute la requête dont nous souhaitons être stockés dans notre expression de table commune. Dans cet exemple, nous voulons simplement choisir tous les enregistrements comprenant tous les attributs de la table «patient», puis les stocker dans notre CTE. Après cela, nous avons utilisé l'instruction «Select» pour afficher le contenu de ce CTE sur notre console. Cette requête prendra les dix enregistrements de notre table «patient», les stockera temporairement dans CTE_PATIENT, puis affichera le contenu de CTE_PATIENT sur la console comme indiqué dans l'image ci-dessous:

Étape # 5: Utilisez CTE avec la clause «où» dans PostgreSQL:

Maintenant, nous allons passer à une utilisation relativement complexe du CTE dans PostgreSQL, je.e. Nous utiliserons CTE avec la clause «où» dans PostgreSQL. Dans cet exemple modifié, nous visons à vérifier la température de tous les patients, puis à afficher les noms et les identifiants des seuls patients qui ont de la fièvre. La requête qui servira cet objectif est la suivante:

# Avec cte_patient as (sélectionnez pat_id, pat_name, (cas lorsque PAT_TEMP 100 Ensuite, la température de la «fièvre») de la température du patient) sélectionnez PAT_ID, PAT_NAME, TEMPÉRATURE DE CTE_PATIENT WHERE Température = 'Fever' Ordre par PAT_NAME;

Dans cette requête, nous avons utilisé l'instruction «case» sur la variable de température. La condition principale de cette déclaration est que si la température du patient est inférieure ou égale à 100, elle sera considérée comme normale, alors que si elle est supérieure à 100, alors le patient aura de la fièvre. Après cela, nous avons simplement utilisé l'instruction «Select» pour afficher le PAT_ID, PAT_NAME et la température de tous ces patients de notre expression de table commune qui ont de la fièvre. De plus, nous avons également commandé nos résultats par ordre alphabétique selon le nom du patient, comme indiqué dans l'image ci-dessous:

De la même manière, si vous souhaitez afficher les noms et les identifiants de tous ces patients sur la console dont la température corporelle est normale, alors vous devez modifier légèrement la requête susmentionnée comme suit:

# Avec cte_patient comme (sélectionnez pat_id, pat_name, (cas lorsque Pat_temp 100 alors «fièvre» Température) Température du patient) Sélectionnez PAT_ID, PAT_NAME, TEMPÉRATURE DE CTE_PATIENT WHERE Température = «Normal» Ordre par PAT_NAME;

Tous les patients de notre tableau «patient» dont la température corporelle sont normaux sont indiqués dans l'image ci-dessous:

Conclusion:

Ce guide a parlé de l'utilisation du CTE dans PostgreSQL dans Windows 10. Pour développer cette utilisation, nous avons d'abord créé un exemple simple, puis nous y avons introduit une complexité afin que les lecteurs puissent mieux comprendre comment le CTE fonctionne avec les tables PostgreSQL. Une fois que vous passerez en détail cet exemple complet, vous pourrez apprendre la syntaxe de base des CTE dans PostgreSQL ainsi que d'autres détails techniques, et après, vous pourrez utiliser efficacement les CTES pour rendre vos requêtes plus simples et lisibles.