Cosa sono i join PostgreSQL?
I JOIN PostgreSQL vengono utilizzati per recuperare i dati da più di una tabella. Con JOIN, è possibile combinare le istruzioni SELECT e JOIN in una singola istruzione. Una condizione JOIN viene aggiunta all'istruzione 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 della seconda tabella.
In questo tutorial su PostgreSQL imparerai:
- Cosa sono i join PostgreSQL?
- Tipi di join
- Inner Joins
- Theta Join
- EQUI Join
- Natural Join
- Outer Joins
- UNISCI ESTERNO SINISTRO
- GIUSTO ESTERNO UNISCI
- Join esterno completo
- Utilizzando pgAdmin
- Inner Joins
- Theta Join
- EQUI Join
- Natural Join
- INNER JOIN (join semplice)
- Outer Joins
- UNISCI ESTERNO SINISTRO
- GIUSTO ESTERNO UNISCI
- Join esterno completo
Tipi di join
Esistono due tipi di JOIN in PostgreSQL:
- Inner Joins
- Outer Join
Inner Joins
Esistono 3 tipi di inner join:
- Theta si unisce
- Unione naturale
- EQUI si unisce
Theta Join
Un join theta 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 join theta viene indicato come inner join.
Il join theta è il tipo più elementare di JOIN. Restituirà tutte le righe dalle tabelle in cui la condizione JOIN è soddisfatta.
Sintassi:
SELECT columnsFROM table-1INNER JOIN table-2ON table-1.column = table-2.column;
Considera 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.priceFROM BookINNER JOIN PriceON Book.id = Price.id;
Ciò restituirà quanto segue:
Solo 3 righe hanno soddisfatto la condizione di join.
EQUI Join
Il join EQUI ci fornisce un modo per unire due tabelle in base alla relazione chiave primaria / chiave esterna. Per esempio:
SELECT *FROM BookJOIN Price ON Book.id = Price.id;
Ciò restituirà quanto segue:
I record sono stati restituiti da entrambe le tabelle in base alle colonne comuni, ovvero la colonna id.
Natural Join
Questo tipo di join ci fornisce un altro modo per scrivere un join EQUI. Possiamo migliorare il nostro esempio precedente aggiungendo la parola chiave NATURAL come mostrato di seguito:
SELECT *FROM BookNATURAL JOIN Price;
Ciò restituirà quanto segue:
È stata restituita una sola colonna id. NATURAL JOIN è stato in grado di notare che la colonna id è comune nelle due tabelle. Solo uno è stato restituito.
Outer Joins
Esistono tre tipi di join esterni in PostgreSQL:
- Join esterno sinistro.
- Right Outer Join.
- Join esterno completo
UNISCI ESTERNO SINISTRO
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 columnsFROM table-1LEFT OUTER JOIN table-2ON 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.priceFROM BookLEFT JOIN PriceON Book.id = Price.id;
Ciò restituisce quanto segue:
Tutte le 4 righe nella tabella Book sono state restituite. Solo 3 righe della tabella Price hanno soddisfatto la condizione di join. Quindi sono stati restituiti. L'ultimo libro non ha un valore di prezzo corrispondente.
GIUSTO ESTERNO UNISCI
RIGHT OUTER JOIN restituisce tutte le righe della tabella sul lato destro e le righe della tabella sul lato sinistro in cui la condizione di join è stata soddisfatta.
Sintassi:
SELECT columnsFROM table-1RIGHT OUTER JOIN table-2ON table-1.column = table-2.column;
Per esempio:
SELECT Book.name, Price.priceFROM BookRIGHT JOIN PriceON Book.id = Price.id;
Ciò restituisce quanto segue:
Tutte le righe nella tabella Price sono state restituite. Sono state restituite solo le righe nella tabella Book che hanno soddisfatto la condizione di join. La terza riga non ha alcun valore per nome poiché non è stata trovata alcuna corrispondenza.
Join esterno completo
Questo tipo di JOIN restituirà tutte le righe nella tabella sul lato sinistro e tutte le righe nella tabella sul lato destro con valori nulli in cui la condizione di join non è soddisfatta.
Sintassi:
SELECT columnsFROM table-1FULL OUTER JOIN table-2ON table-1.column = table-2.column;
Per esempio:
SELECT Book.name, Price.priceFROM BookFULL OUTER JOIN PriceON Book.id = Price.id;
Ciò restituisce quanto segue:
Sono state restituite tutte le righe di tutte le tabelle, con valori nulli in cui non è stata trovata alcuna corrispondenza.
Utilizzando pgAdmin
Le attività di cui sopra possono essere eseguite in pgAdmin come segue:
Inner Joins
Theta Join
Passaggio 1) Accedi al tuo account pgAdmin.
Passo 2)
- Dalla barra di navigazione a sinistra, fare clic su Database.
- Fare clic su Demo.
Passaggio 3) Digita la query nell'editor di query:
SELECT Book.name, Price.priceFROM BookINNER JOIN PriceON Book.id = Price.id;
Passaggio 4) Fare clic sul pulsante Esegui.
Dovrebbe restituire quanto segue:
EQUI Join
Passaggio 1) Accedi al tuo account pgAdmin.
Passo 2)
- Dalla barra di navigazione a sinistra, fare clic su Database.
- Fare clic su Demo.
Passaggio 3) Digita la query nell'editor di query:
SELECT *FROM BookJOIN Price ON Book.id = Price.id;
Passaggio 4) Fare clic sul pulsante Esegui.
Dovrebbe restituire quanto segue:
Natural Join
Passaggio 1) Accedi al tuo account pgAdmin.
Passo 2)
- Dalla barra di navigazione a sinistra, fare clic su Database.
- Fare clic su Demo.
Passaggio 3) Digita la query nell'editor di query:
SELECT *FROM BookNATURAL JOIN Price;
Passaggio 4) Fare clic sul pulsante Esegui.
Dovrebbe restituire quanto segue:
INNER JOIN (join semplice)
Passaggio 1) Accedi al tuo account pgAdmin.
Passo 2)
- Dalla barra di navigazione a sinistra, fare clic su Database.
- Fare clic su Demo.
Passaggio 3) Digita la query nell'editor di query:
SELECT Book.name, Price.priceFROM BookINNER JOIN PriceON Book.id = Price.id;
Passaggio 4) Fare clic sul pulsante Esegui.
Dovrebbe restituire quanto segue:
Outer Joins
UNISCI ESTERNO SINISTRO
Passaggio 1) Accedi al tuo account pgAdmin.
Passo 2)
- Dalla barra di navigazione a sinistra, fare clic su Database.
- Fare clic su Demo.
Passaggio 3) Digita la query nell'editor di query:
SELECT Book.name, Price.priceFROM BookLEFT JOIN PriceON Book.id = Price.id;
Passaggio 4) Fare clic sul pulsante Esegui.
Dovrebbe restituire quanto segue:
GIUSTO ESTERNO UNISCI
Passaggio 1) Accedi al tuo account pgAdmin.
Passo 2)
- Dalla barra di navigazione a sinistra, fare clic su Database.
- Fare clic su Demo.
Passaggio 3) Digita la query nell'editor di query:
SELECT Book.name, Price.priceFROM BookRIGHT JOIN PriceON Book.id = Price.id;
Passaggio 4) Fare clic sul pulsante Esegui.
Dovrebbe restituire quanto segue:
Join esterno completo
Passaggio 1) Accedi al tuo account pgAdmin.
Passo 2)
- Dalla barra di navigazione a sinistra, fare clic su Database.
- Fare clic su Demo.
Passaggio 3) Digita la query nell'editor di query:
SELECT Book.name, Price.priceFROM BookFULL OUTER JOIN PriceON Book.id = Price.id;
Passaggio 4) Fare clic sul pulsante Esegui.
Dovrebbe restituire quanto segue:
Sommario:
- In PostgreSQL, usiamo JOIN quando abbiamo bisogno di 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.
- 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.
- 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 nulli in cui la condizione di join non è soddisfatta.
Scarica il database utilizzato in questo tutorial