Hva er CTE i PostgreSQL?

Hva er CTE i PostgreSQL?

CTE i PostgreSQL står for vanlig tabelluttrykk. Det er en måte å midlertidig holde resultatene av en PostgreSQL -spørring. Noen ganger skriver vi ekstremt komplekse spørsmål som er veldig vanskelige å tolke. I slike tilfeller får bruken av CTE. Ved hjelp av denne artikkelen har vi tenkt å lære deg bruken av CTE i PostgreSQL i Windows 10.

Eksempel: Bruke CTE i PostgreSQL:

Vi bruker CTE i PostgreSQL i Windows 10 i følgende eksempel:

Trinn 1: PostgreSQL Tables Creation:

Først av alt vil vi lage to PostgreSQL -tabeller for å bruke CTE senere for å trekke ut de ønskede resultatene fra disse tabellene. I denne illustrasjonen ønsker vi å jobbe med en sammenheng mellom leger og pasienter. Derfor vil vi lage en tabell som heter “Doctor” og den andre som heter “pasient”.

For å lage "Doctor" -tabellen, kjører vi følgende PostgreSQL -spørring:

# Opprett tabelllege (doc_id seriell primærnøkkel, doc_name varchar (255) ikke null);

Denne spørringen vil opprette “Doctor” -tabellen med to attributter, i.e. Doc_id og doc_name. Du kan også se hele tabellopprettingsprosessen fra bildet vist nedenfor:

Nå, for å lage "pasient" -tabellen, kjører vi følgende PostgreSQL -spørring:

# Opprett tabellpasient (Pat_id Serial Primary Key, Pat_name varchar (255) ikke null, pat_temp int ikke null, doc_id int ikke null);

Denne spørringen vil lage "pasient" -tabellen med fire attributter, i.e. Pat_id, Pat_name, Pat_temperature (dette representerer kroppstemperaturen til pasienten), og doc_id (dette er den samme doc_id som vi har erklært i "lege" -tabellen. Her blir det brukt som en fremmed nøkkel for å spesifisere hvilke leger som behandlet hver pasient). Du kan også se hele tabellopprettingsprosessen fra bildet vist nedenfor:

Trinn 2: Registrer innsetting i PostgreSQL -tabeller:

Etter å ha opprettet disse tabellene, må vi sette inn en tilstrekkelig mengde poster i dem til å bruke disse postene for å demonstrere bruken av CTE i PostgreSQL senere. For å sette inn poster i "Doctor" -tabellen, kjører vi følgende PostgreSQL -spørring:

# Sett inn legeverdier (1, 'Sarah'), (2, 'Affan'), (3, 'Irtiza'), (4, 'Hina'), (5, 'Naila');

Denne spørringen vil ganske enkelt sette inn postene til fem forskjellige leger i "lege" -tabellen som vist på bildet nedenfor:

Nå, for å sette inn poster i "pasient" -tabellen, kjører vi følgende PostgreSQL -spørring:

# Sett inn pasientverdier (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);

Denne spørringen vil sette inn postene til 10 forskjellige pasienter i "pasient" -tabellen som vist på bildet nedenfor:

Merk: Du lurer kanskje på hvorfor vi førte antall registreringer av "pasient" -bordet mer enn "legen". Vel, en enkelt lege kan ivareta flere pasienter om gangen. Dette er imidlertid bare for demonstrasjon. Du kan føre antall poster over disse to tabellene like hvis du ønsker det.

Trinn 3: Se de nylig innsatte postene i PostgreSQL -tabeller:

Før vi fortsetter videre, vil vi raskt se postene som er satt inn i våre to PostgreSQL -tabeller. For "Doctor" -tabellen kjører vi følgende PostgreSQL -spørring:

# Velg * fra lege;

Du kan se alle postene til "lege" -tabellen fra bildet som er vist nedenfor:

Nå, for "pasient" -tabellen, kjører vi følgende PostgreSQL -spørring:

# Velg * fra pasient;

Du kan se alle postene til "pasient" -tabellen fra bildet vist nedenfor:

Trinn 4: Bruk CTE til å vise alle postene til en PostgreSQL -tabell:

Dette trinnet vil demonstrere relativt enkel bruk av CTE i PostgreSQL. Vi ønsker å lagre alle postene til et av tabellene våre i et felles tabelluttrykk og deretter bare vise det på konsollen. Spørringen som vi skal utføre for dette formålet er sitert nedenfor:

# Med cte_patient som (velg pat_id, pat_name, pat_temp, doc_id fra pasient) velg * fra cte_patient;

Nå vil vi forklare deg hele spørringen mens vi diskuterer alle komponentene. Navnet for vanlig tabelluttrykk blir alltid gitt av "med" nøkkelordet og fortsatte med "som" nøkkelordet. Det betyr at navnet på vår CTE i dette tilfellet er “CTE_PATIENITIENT”. Etter "som" nøkkelordet, spesifiserer vi hele spørringen hvis resultater vi ønsker å bli lagret i vårt vanlige tabelluttrykk. I dette eksemplet ønsker vi ganske enkelt å velge alle postene som består av alle attributtene til "pasient" -tabellen og deretter lagre dem i vår CTE. Etter det brukte vi "Select" -uttalelsen for å vise innholdet i denne CTE på konsollen vår. Denne spørringen vil ta alle de ti postene fra vår "pasient" -tabell, lagre dem midlertidig i CTE_PATIENITIP, og deretter vise innholdet i CTE_PATIENIPIENT på konsollen som vist på bildet nedenfor:

Trinn 5: Bruk CTE med "Where" -klausulen i PostgreSQL:

Nå vil vi gå til en relativt kompleks bruk av CTE i PostgreSQL, I.e. Vi vil bruke CTE med "hvor" -klausulen i PostgreSql. I dette modifiserte eksemplet tar vi sikte på å sjekke temperaturen til alle pasientene og deretter vise navnene og ID -ene til bare de pasientene som har feber. Spørringen som vil tjene dette formålet er som følger:

# Med cte_patient som (velg pat_id, pat_name, (case når pat_temp 100 så 'feber' slutt) temperatur fra pasient) velg pat_id, pat_name, temperatur fra cte_patient hvor temperatur = 'feber' ordre etter pat_name;

I denne spørringen har vi brukt "saken" -uttalelsen om temperaturvariabelen. Hovedbetingelsen for denne uttalelsen er at hvis pasientens temperatur er mindre enn eller lik 100, vil den bli betraktet som normal, mens hvis den er mer enn 100, vil pasienten ha feber. Etter det brukte vi ganske enkelt "Select" -uttalelsen for å vise PAT_ID, PAT_NAME og temperaturen til alle disse pasientene fra vårt vanlige tabelluttrykk som har feber. I tillegg har vi også bestilt resultatene våre alfabetisk i henhold til pasientens navn, som vist på bildet nedenfor:

På samme måte, hvis du ønsker å vise navn og IDer til alle disse pasientene på konsollen hvis kroppstemperatur er normal, må du endre ovennevnte spørring litt som følger:

# Med cte_patient som (velg pat_id, pat_name, (case når pat_temp 100 så 'feber' slutt) temperatur fra pasient) velg pat_id, pat_name, temperatur fra cte_patient der temperatur = 'normal' rekkefølge etter pat_name;

Alle pasientene fra vår "pasient" -tabell hvis kroppstemperatur er normal er vist på bildet nedenfor:

Konklusjon:

Denne guiden snakket om bruken av CTE i PostgreSQL i Windows 10. For å utdype denne bruken, skapte vi først et enkelt eksempel og introduserte deretter en viss kompleksitet i den slik at leserne bedre kan forstå hvordan CTE fungerer med PostgreSQL -tabeller. Når du har gått gjennom dette omfattende eksemplet, vil du kunne lære den grunnleggende syntaksen til CTE -er i PostgreSQL sammen med noen andre tekniske detaljer, og etterpå vil du kunne bruke CTE -ene effektivt for å få spørsmålene dine til å se enklere og lesbare.