PostgreSQL Unisci i tipi con esempi: Interno, Esterno, Sinistra, Destra
Cosa sono i Join? PostgreSQL?
PostgreSQL Entra a far parte vengono utilizzati per recuperare dati da più di una tabella. Con i Join è possibile combinare le istruzioni SELECT e JOIN in un'unica istruzione. All'istruzione viene aggiunta una condizione JOIN e vengono restituite tutte le righe che soddisfano le condizioni. I valori di tabelle diverse vengono combinati in base a colonne comuni. La colonna comune è principalmente una chiave primaria nella prima tabella e una chiave esterna nella seconda tabella.
PostgreSQL Unisciti ai tipi
Sono disponibili due tipi di join PostgreSQL:
- giunzioni interne
- Unioni esterne
PostgreSQL unione interna
Sono disponibili 3 tipi di inner join PostgreSQL:
- Partecipazione theta
- Unione naturale
- Aderisci all'EQUI
Theta Partecipa
Un theta join consente di unire due tabelle in base alla condizione rappresentata da theta. I join theta possono funzionare con tutti gli operatori di confronto. Nella maggior parte dei casi, il theta join viene definito inner join.
Il theta join è il tipo più semplice di JOIN. Restituirà tutte le righe delle tabelle in cui la condizione JOIN è soddisfatta.
Sintassi:
SELECT columns FROM table-1 INNER JOIN table-2 ON table-1.column = table-2.column;
Consideriamo le seguenti tabelle del database Demo:
Libro:
Prezzo:
Vogliamo vedere il nome di ogni libro e il prezzo corrispondente. Possiamo eseguire il seguente comando:
SELECT Book.name, Price.price FROM Book INNER JOIN Price ON Book.id = Price.id;
Verrà restituito quanto segue:
Solo 3 righe soddisfacevano la condizione di unione.
EQUI Partecipa
L'unione EQUI ci fornisce un modo per unire due tabelle in base alla relazione chiave primaria/chiave esterna. Per esempio:
SELECT * FROM Book JOIN Price ON Book.id = Price.id;
Verrà restituito quanto segue:
I record sono stati restituiti da entrambe le tabelle in base alle colonne comuni, ovvero la colonna id.
unione naturale
Questo tipo di join ci fornisce un altro modo di scrivere un join EQUI. Possiamo migliorare il nostro esempio precedente aggiungendo la parola chiave NATURAL come mostrato di seguito:
SELECT * FROM Book NATURAL JOIN Price;
Verrà restituito quanto segue:
È stata restituita solo una colonna ID. Il NATURAL JOIN ha potuto notare che la colonna id è comune nelle due tabelle. Ne è stato restituito solo uno.
Join esterno di Postgres
Sono disponibili 3 tipi di Outer Join PostgreSQL:
- Join esterno sinistro
- Giunto esterno destro
- Join esterno completo
Postgres Left Outer Join
Il LEFT OUTER JOIN restituirà tutte le righe nella tabella sul lato sinistro e solo le righe nella tabella sul lato destro in cui la condizione di join è stata soddisfatta.
Sintassi:
SELECT columns FROM table-1 LEFT OUTER JOIN table-2 ON table-1.column = table-2.column;
Dobbiamo vedere il nome di ogni libro e il prezzo corrispondente. Possiamo eseguire il seguente comando:
SELECT Book.name, Price.price FROM Book LEFT JOIN Price ON Book.id = Price.id;
Questo restituisce quanto segue:
Sono state restituite tutte e 4 le righe della tabella Book. Solo 3 righe della tabella dei prezzi soddisfano la condizione di unione. Quindi sono stati restituiti. L'ultimo libro non ha un valore di prezzo corrispondente.
Postgres Right Outer Join
Il RIGHT OUTER JOIN restituisce tutte le righe nella tabella sul lato destro e le righe nella tabella sul lato sinistro in cui la condizione di join è stata soddisfatta.
Sintassi:
SELECT columns FROM table-1 RIGHT OUTER JOIN table-2 ON table-1.column = table-2.column;
Per esempio:
SELECT Book.name, Price.price FROM Book RIGHT JOIN Price ON Book.id = Price.id;
Questo restituisce quanto segue:
Sono state restituite tutte le righe nella tabella Prezzo. Sono state restituite solo le righe nella tabella Book che soddisfacevano la condizione di unione. Il 3rd la riga non ha alcun valore per il nome poiché non è stata trovata alcuna corrispondenza.
Partecipazione esterna completa PostgreSQL
Questo tipo di JOIN restituirà tutte le righe nella tabella sul lato sinistro e tutte le righe nella tabella sul lato destro con valori null dove la condizione di join non è soddisfatta.
Sintassi:
SELECT columns FROM table-1 FULL OUTER JOIN table-2 ON table-1.column = table-2.column;
Per esempio:
SELECT Book.name, Price.price FROM Book FULL OUTER JOIN Price ON Book.id = Price.id;
Questo restituisce quanto segue:
Sono state restituite tutte le righe di tutte le tabelle, con valori null dove non è stata trovata alcuna corrispondenza.
Utilizzando pgAdmin
Le attività di cui sopra possono essere eseguite in pgAdmin come segue:
pgAdmin Partecipazione interna
Come utilizzare Theta Partecipa PostgreSQL utilizzando pgAdmin
Di seguito sono riportati i passaggi per utilizzare Theta Join in Postgres utilizzando pgAdmin:
Passaggio 1) Accedi al tuo account pgAdmin
Apri pgAdmin e accedi utilizzando le tue credenziali
Passaggio 2) Creare un database demo
- Dalla barra di navigazione a sinistra, fare clic su Database.
- Fare clic su Demo.
Passaggio 3) Digitare la query
Digita la query seguente nell'editor di query:
SELECT Book.name, Price.price FROM Book INNER JOIN Price ON Book.id = Price.id;
Passaggio 4) Eseguire la query
Fare clic sul pulsante Esegui
Dovrebbe restituire quanto segue:
EQUI Partecipa
Passo 1) Accedi al tuo account pgAdmin.
Passo 2)
- Dalla barra di navigazione a sinistra, fare clic su Database.
- Fare clic su Demo.
Passo 3) Digita la query nell'editor di query:
SELECT * FROM Book JOIN Price ON Book.id = Price.id;
Passo 4) Fare clic sul pulsante Esegui.
Dovrebbe restituire quanto segue:
unione naturale
Passo 1) Accedi al tuo account pgAdmin.
Passo 2)
- Dalla barra di navigazione a sinistra, fare clic su Database.
- Fare clic su Demo.
Passo 3) Digita la query nell'editor di query:
SELECT * FROM Book NATURAL JOIN Price;
Passo 4) Fare clic sul pulsante Esegui.
Dovrebbe restituire quanto segue:
pgAdmin Join interno semplice
Passo 1) Accedi al tuo account pgAdmin.
Passo 2)
- Dalla barra di navigazione a sinistra, fare clic su Database.
- Fare clic su Demo.
Passo 3) Digita la query nell'editor di query:
SELECT Book.name, Price.price FROM Book INNER JOIN Price ON Book.id = Price.id;
Passo 4) Fare clic sul pulsante Esegui.
Dovrebbe restituire quanto segue:
pgAdmin Join esterno
Join esterno sinistro
Passo 1) Accedi al tuo account pgAdmin.
Passo 2)
- Dalla barra di navigazione a sinistra, fare clic su Database.
- Fare clic su Demo.
Passo 3) Digita la query nell'editor di query:
SELECT Book.name, Price.price FROM Book LEFT JOIN Price ON Book.id = Price.id;
Passo 4) Fare clic sul pulsante Esegui.
Dovrebbe restituire quanto segue:
Giunto esterno destro
Passo 1) Accedi al tuo account pgAdmin.
Passo 2)
- Dalla barra di navigazione a sinistra, fare clic su Database.
- Fare clic su Demo.
Passo 3) Digita la query nell'editor di query:
SELECT Book.name, Price.price FROM Book RIGHT JOIN Price ON Book.id = Price.id;
Passo 4) Fare clic sul pulsante Esegui.
Dovrebbe restituire quanto segue:
Join esterno completo
Passo 1) Accedi al tuo account pgAdmin.
Passo 2)
- Dalla barra di navigazione a sinistra, fare clic su Database.
- Fare clic su Demo.
Passo 3) Digita la query nell'editor di query:
SELECT Book.name, Price.price FROM Book FULL OUTER JOIN Price ON Book.id = Price.id;
Passo 4) Fare clic sul pulsante Esegui.
Dovrebbe restituire quanto segue:
Sommario
- In PostgreSQL, utilizziamo JOIN quando dobbiamo recuperare valori da più di una tabella.
- L'INNER JOIN è il tipo più elementare di JOIN. Restituisce tutti i record in cui è stata soddisfatta la condizione JOIN specificata.
- Il LEFT OUTER JOIN restituisce tutte le righe nella tabella di sinistra e solo le righe nell'altra tabella in cui la condizione di join è stata soddisfatta.
- Il RIGHT OUTER JOIN restituisce tutte le righe nella tabella di destra e solo le righe nell'altra tabella in cui la condizione di join è stata soddisfatta.
- Questo tipo di JOIN restituisce tutte le righe nella tabella di sinistra e tutte le righe nella tabella di destra con valori null in cui la condizione di join non è soddisfatta.
Scarica il database utilizzato in questo tutorial