PostgreSQL - JOINS

Ciao, appassionati di database in erba! Oggi ci imbarcheremo in un viaggio emozionante attraverso il mondo dei JOIN di PostgreSQL. Come il tuo insegnante di computer di quartiere, sono qui per guidarti in questa avventura, passo dopo passo. Non preoccuparti se non hai mai scritto una riga di codice prima - inizieremo dalle basi e poi ci muoveremo verso l'alto. Allora, indossa il tuo casco virtuale e tuffiamoci!

PostgreSQL - Joins

Cos'è un JOIN?

Prima di immergerci nei diversi tipi di JOIN, capiremo cos'è esattamente un JOIN. Immagina di stanno pianificando una grande festa (perché chi non ama una buona festa di database, vero?). Hai due liste: una con i nomi dei tuoi amici e un'altra con le loro bevande preferite. I JOIN sono come i planner di feste magici che ti aiutano a combinare queste liste in vari modi per creare la lista perfetta degli ospiti con le bevande preferite di ciascuno.

In termini di database, i JOIN ci permettono di combinare righe da due o più tabelle basate su una colonna correlata tra di loro. Ora, esploriamo i diversi tipi di JOIN offerti da PostgreSQL.

Il CROSS JOIN

Cos'è un CROSS JOIN?

Un CROSS JOIN è come invitare tutti le persone in entrambe le tue liste alla festa, indipendentemente dal fatto che tu conosca la loro preferenza di bevanda o meno. Combina ogni riga dalla prima tabella con ogni riga dalla seconda tabella.

Esempio di CROSS JOIN

Creiamo due tabelle semplici per il nostro esempio:

CREATE TABLE amici (
id SERIAL PRIMARY KEY,
nome VARCHAR(50)
);

CREATE TABLE bevande (
id SERIAL PRIMARY KEY,
bevanda VARCHAR(50)
);

INSERT INTO amici (nome) VALUES ('Alice'), ('Bob'), ('Charlie');
INSERT INTO bevande (bevanda) VALUES ('Cola'), ('Succo'), ('Acqua');

Ora, eseguiamo un CROSS JOIN:

SELECT a.nome, b.bevanda
FROM amici a
CROSS JOIN bevande b;

Risultato:

nome bevanda
Alice Cola
Alice Succo
Alice Acqua
Bob Cola
Bob Succo
Bob Acqua
Charlie Cola
Charlie Succo
Charlie Acqua

Come puoi vedere, ogni amico è accoppiato con ogni bevanda. È come dire, "Ehi, tutti possono provare tutte le bevande!" Questo potrebbe non essere sempre pratico, ma è un ottimo modo per generare tutte le combinazioni possibili.

L'INNER JOIN

Cos'è un INNER JOIN?

Un INNER JOIN è più selettivo. È come abbinare i tuoi amici alle loro bevande preferite, ma includendo solo quegli amici che hanno una preferenza di bevanda conosciuta.

Esempio di INNER JOIN

Modifichiamo un po' le nostre tabelle:

CREATE TABLE amici (
id SERIAL PRIMARY KEY,
nome VARCHAR(50)
);

CREATE TABLE bevande_preferite (
id SERIAL PRIMARY KEY,
amico_id INTEGER,
bevanda VARCHAR(50)
);

INSERT INTO amici (nome) VALUES ('Alice'), ('Bob'), ('Charlie'), ('David');
INSERT INTO bevande_preferite (amico_id, bevanda) VALUES (1, 'Cola'), (2, 'Succo'), (3, 'Acqua');

Ora, eseguiamo un INNER JOIN:

SELECT a.nome, bp.bevanda
FROM amici a
INNER JOIN bevande_preferite bp ON a.id = bp.amico_id;

Risultato:

nome bevanda
Alice Cola
Bob Succo
Charlie Acqua

Notare che David non compare nel risultato perché non ha una bevanda preferita elencata.

Il LEFT OUTER JOIN

Cos'è un LEFT OUTER JOIN?

Un LEFT OUTER JOIN è come assicurarsi che tutti i tuoi amici siano sulla lista degli ospiti, anche se non conosci la loro preferenza di bevanda. coloro che non hanno una preferenza conosciuta potrebbero ottenere una bevanda predefinita o nessuna bevanda.

Esempio di LEFT OUTER JOIN

Utilizzando le stesse tabelle dell'esempio di INNER JOIN:

SELECT a.nome, bp.bevanda
FROM amici a
LEFT OUTER JOIN bevande_preferite bp ON a.id = bp.amico_id;

Risultato:

nome bevanda
Alice Cola
Bob Succo
Charlie Acqua
David NULL

Vedi come David è ora incluso, ma con una bevanda NULL? Questa è la magia del LEFT OUTER JOIN!

Il RIGHT OUTER JOIN

Cos'è un RIGHT OUTER JOIN?

Un RIGHT OUTER JOIN è l'opposto del LEFT OUTER JOIN. È come assicurarsi che tutte le bevande siano nel menu, anche se nessuno le ha scelte come preferite.

Esempio di RIGHT OUTER JOIN

Aggiungiamo una bevanda che nessuno ha scelto come preferita:

INSERT INTO bevande_preferite (bevanda) VALUES ('Limonata');

SELECT a.nome, bp.bevanda
FROM amici a
RIGHT OUTER JOIN bevande_preferite bp ON a.id = bp.amico_id;

Risultato:

nome bevanda
Alice Cola
Bob Succo
Charlie Acqua
NULL Limonata

La Limonata compare nell'elenco anche se nessun amico l'ha scelta come bevanda preferita.

Il FULL OUTER JOIN

Cos'è un FULL OUTER JOIN?

Un FULL OUTER JOIN è il sogno del planner di feste. Include tutti gli amici e tutte le bevande, abbinandoli dove possibile e utilizzando NULL dove non c'è corrispondenza.

Esempio di FULL OUTER JOIN

SELECT a.nome, bp.bevanda
FROM amici a
FULL OUTER JOIN bevande_preferite bp ON a.id = bp.amico_id;

Risultato:

nome bevanda
Alice Cola
Bob Succo
Charlie Acqua
David NULL
NULL Limonata

Questo ci dà la visione completa: tutti gli amici (anche David senza una bevanda preferita) e tutte le bevande (anche la Limonata senza un amico che la preferisce).

Conclusione

Eccoci, ragazzi! Abbiamo intrapreso un viaggio attraverso il mondo dei JOIN di PostgreSQL, dal CROSS JOIN inclusivo a FULL OUTER JOIN completo. Ricorda, scegliere il giusto JOIN è come挑选 il mix perfetto per la tua festa - dipende da quale informazione hai bisogno e come vuoi combinare i tuoi dati.

Pratica questi JOIN, gioca con diversi scenari e presto diventerai la vita della festa del database! Chi avrebbe pensato che gestire i dati potesse essere così divertente, vero? Fino alla prossima volta, happy querying!

Credits: Image by storyset