Cosa è CTE in PostgreSQL?

Cosa è CTE in PostgreSQL?

CTE in PostgreSQL sta per l'espressione della tabella comune. È un modo per tenere temporaneamente i risultati di una query PostgreSQL. A volte, scriviamo query estremamente complesse che sono molto difficili da interpretare. In tali casi, l'uso di CTE rende le nostre domande più semplici e più leggibili. Con l'aiuto di questo articolo, intendiamo insegnarti l'uso di CTE in PostgreSQL in Windows 10.

Esempio: usando CTE in PostgreSQL:

Useremo CTE in PostgreSQL in Windows 10 nell'esempio seguente:

Passaggio n. 1: Creazione di tabelle postgresql:

Prima di tutto, creeremo due tabelle PostgreSQL per utilizzare CTE in seguito per estrarre i risultati desiderati da queste tabelle. In questa illustrazione, desideriamo lavorare con una relazione tra medici e pazienti. Pertanto, creeremo una tabella denominata "medico" e l'altra chiamata "paziente".

Per la creazione della tabella "Doctor", eseguiremo la seguente query PostgreSQL:

# Crea Doctor Table (Doc_id Serial Key, Doc_name Varchar (255) non null);

Questa query creerà la tabella "dottore" con due attributi, i.e. Doc_id e Doc_name. Puoi anche vedere l'intero processo di creazione della tabella dall'immagine mostrata di seguito:

Ora, per la creazione della tabella "paziente", eseguiremo la seguente query PostgreSQL:

# Crea un paziente tabella (chiave seriale PAT_ID, pat_name varchar (255) non null, pat_temp int non null, doc_id int non null);

Questa query creerà la tabella "paziente" con quattro attributi, i.e. Pat_id, pat_name, pat_temperature (questo rappresenta la temperatura corporea del paziente) e doc_id (questo è lo stesso doc_id che abbiamo dichiarato nella tabella "dottore". Qui, viene utilizzato come chiave estera per specificare quali medici trattano ogni paziente). Puoi anche vedere l'intero processo di creazione della tabella dall'immagine mostrata di seguito:

Passaggio n. 2: registra l'inserimento nelle tabelle PostgreSQL:

Dopo aver creato queste tabelle, dobbiamo inserire una quantità sufficiente di record per utilizzare questi record per dimostrare l'uso di CTE in PostgreSQL più avanti. Per inserire i record nella tabella "Doctor", eseguiremo la seguente query PostgreSQL:

# Insert in Doctor Values ​​(1, 'Sarah'), (2, 'affan'), (3, 'irtiza'), (4, 'Hina'), (5, 'Naila');

Questa query inserirà semplicemente i record di cinque diversi medici nella tabella "medico" come mostrato nell'immagine seguente:

Ora, per aver inserito i record nella tabella "paziente", eseguiremo la seguente query PostgreSQL:

# Inserisci nei valori del paziente (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);

Questa query inserirà i record di 10 diversi pazienti nella tabella "paziente" come mostrato nell'immagine seguente:

Nota: Potresti chiederti perché abbiamo mantenuto il numero di registrazioni della tabella "paziente" più di quella "dottore". Bene, un singolo medico può occuparsi di più pazienti alla volta. Tuttavia, questo è solo per la dimostrazione. Puoi mantenere uguali il numero di record di queste due tabelle se lo desideri.

Passaggio n. 3: visualizzare i record appena inseriti nelle tabelle PostgreSQL:

Prima di procedere ulteriormente, visualizzeremo rapidamente i record inseriti nelle nostre due tabelle PostgreSQL. Per la tabella "Doctor", eseguiremo la seguente query PostgreSQL:

# Seleziona * dal medico;

Puoi vedere tutti i record della tabella "Doctor" dall'immagine mostrata di seguito:

Ora, per la tabella "paziente", eseguiremo la seguente query PostgreSQL:

# Seleziona * dal paziente;

Puoi vedere tutti i record della tabella "paziente" dall'immagine mostrata di seguito:

Passaggio n. 4: utilizzare CTE per visualizzare tutti i record di una tabella PostgreSQL:

Questo passaggio dimostrerà un utilizzo relativamente semplice di CTE in Postgresql. Vogliamo archiviare tutti i record di una delle nostre tabelle in un'espressione della tabella comune e quindi mostrarla sulla console. Di seguito è citata la domanda che stiamo per eseguire per questo scopo:

# Con cte_patient AS (Seleziona pat_id, pat_name, pat_temp, doc_id dal paziente) Seleziona * da cte_patient;

Ora, ti spiegheremo tutta questa domanda mentre discutiamo di tutti i suoi componenti. Il nome dell'espressione della tabella comune è sempre preceduto dalla parola chiave "with" e proceduto dalla parola chiave "as". Significa che il nome per il nostro CTE in questo caso particolare è "cte_patient". Dopo la parola chiave "come", specifichiamo l'intera query i cui risultati desideriamo essere archiviati nella nostra espressione della tabella comune. In questo esempio, vogliamo semplicemente scegliere tutti i record che comprendono tutti gli attributi della tabella "paziente" e quindi archiviarli nel nostro CTE. Successivamente, abbiamo usato l'istruzione "Seleziona" per visualizzare il contenuto di questo CTE sulla nostra console. Questa query prenderà tutti i dieci record dalla nostra tabella "paziente", li memorizzerà temporaneamente in cte_patient, quindi visualizzerà il contenuto di cte_patient sulla console come mostrato nell'immagine seguente:

Passaggio n. 5: utilizzare CTE con la clausola "dove" in PostgreSQL:

Ora passeremo a un utilizzo relativamente complesso di CTE in Postgresql, i.e. Useremo CTE con la clausola "dove" in PostgreSQL. In questo esempio modificato, miriamo a verificare la temperatura di tutti i pazienti e quindi visualizzare i nomi e gli ID di solo quei pazienti che hanno la febbre. La domanda che servirà a questo scopo è la seguente:

# Con cte_patient AS (seleziona pat_id, pat_name, (caso quando pat_temp 100 quindi temperatura 'febbre') dal paziente) selezionare pat_id, pat_name, temperatura da cte_patient dove temperatura = 'febbre' ordine di pat_name;

In questa domanda, abbiamo utilizzato l'istruzione "caso" sulla variabile di temperatura. La condizione principale per questa affermazione è che se la temperatura del paziente è inferiore o uguale a 100, sarà considerata normale, mentre se è più di 100, il paziente avrà la febbre. Successivamente, abbiamo semplicemente usato l'istruzione "Seleziona" per visualizzare Pat_id, Pat_name e temperatura di tutti quei pazienti della nostra espressione di tabella comune che hanno la febbre. Inoltre, abbiamo anche ordinato i nostri risultati in ordine alfabetico secondo il nome del paziente, come mostrato nell'immagine seguente:

Allo stesso modo, se si desidera visualizzare i nomi e gli ID di tutti quei pazienti sulla console la cui temperatura corporea è normale, è necessario modificare leggermente la query sopra menzionata come segue:

# Con cte_patient AS (seleziona pat_id, pat_name, (caso quando pat_temp 100 quindi temperatura 'febbre') dal paziente) selezionare pat_id, pat_name, temperatura da cte_patient dove temperatura = 'normale' Ordine di pat_name;

Tutti i pazienti della nostra tabella "paziente" la cui temperatura corporea è normale sono mostrati nell'immagine sottostante:

Conclusione:

Questa guida ha parlato dell'uso di CTE in PostgreSQL in Windows 10. Per approfondire questo utilizzo, abbiamo prima creato un semplice esempio e quindi introdotto un po 'di complessità in modo che i lettori possano capire meglio come funziona CTE con le tabelle PostgreSQL. Una volta attraversato a fondo questo esempio completo, sarai in grado di apprendere la sintassi di base dei CTE in PostgreSQL insieme ad alcuni altri dettagli tecnici e, successivamente, sarai in grado di utilizzare i CTE per rendere le tue domande più semplici e leggibili.