PostgreSQL - JOINS
Hallo, angehende Datenbankenthusiasten! Heute machen wir uns auf eine aufregende Reise durch die Welt der PostgreSQL JOINs. Als Ihr freundlicher Nachbarschafts-Computerlehrer bin ich hier, um Sie Schritt für Schritt durch dieses Abenteuer zu führen. Machen Sie sich keine Sorgen, wenn Sie noch nie eine Zeile Code geschrieben haben – wir beginnen bei den ganz Basics und arbeiten uns hoch. Also, holen Sie sich Ihre virtuellen Helme und tauchen wir ein!
Was sind JOINs?
Bevor wir uns den verschiedenen Arten von JOINs zuwenden, lassen Sie uns verstehen, was ein JOIN eigentlich ist. Stellen Sie sich vor, Sie planen eine große Party (weil wer liebt nicht eine gute Datenbankparty, oder?). Sie haben zwei Listen: eine mit den Namen Ihrer Freunde und eine andere mit ihren Lieblingsgetränken. JOINs sind wie magische Partyplaner, die Ihnen helfen, diese Listen auf verschiedene Weisen zu kombinieren, um die perfekte Gästeliste mit den bevorzugten Getränken aller zu erstellen.
In Datenbankterminologie erlauben JOINs uns, Zeilen aus zwei oder mehr Tabellen basierend auf einer verwandten Spalte zwischen ihnen zu kombinieren. Lassen Sie uns nun die verschiedenen Arten von JOINs erkunden, die PostgreSQL uns bietet.
Der CROSS JOIN
Was ist ein CROSS JOIN?
Ein CROSS JOIN ist so, als lädt man jeden aus beiden Listen zur Party ein, unabhängig davon, ob man ihre Getränkepräferenz kennt oder nicht. Er kombiniert jede Zeile aus der ersten Tabelle mit jeder Zeile aus der zweiten Tabelle.
CROSS JOIN Beispiel
Lassen Sie uns zwei einfache Tabellen für unser Beispiel erstellen:
CREATE TABLE friends (
id SERIAL PRIMARY KEY,
name VARCHAR(50)
);
CREATE TABLE drinks (
id SERIAL PRIMARY KEY,
drink VARCHAR(50)
);
INSERT INTO friends (name) VALUES ('Alice'), ('Bob'), ('Charlie');
INSERT INTO drinks (drink) VALUES ('Cola'), ('Juice'), ('Water');
Nun führen wir einen CROSS JOIN durch:
SELECT f.name, d.drink
FROM friends f
CROSS JOIN drinks d;
Ergebnis:
name | drink |
---|---|
Alice | Cola |
Alice | Juice |
Alice | Water |
Bob | Cola |
Bob | Juice |
Bob | Water |
Charlie | Cola |
Charlie | Juice |
Charlie | Water |
Wie Sie sehen, wird jeder Freund mit jedem Getränk gepaart. Es ist, als würde man sagen: "Hey, jeder kann alle Getränke probieren!" Das mag nicht immer praktisch sein, aber es ist eine großartige Möglichkeit, alle möglichen Kombinationen zu erzeugen.
Der INNER JOIN
Was ist ein INNER JOIN?
Ein INNER JOIN ist selektiver. Es ist so, als würde man seine Freunde mit ihren Lieblingsgetränken abstimmen, aber nur die Freunde einschließen, die eine bekannte Getränkepräferenz haben.
INNER JOIN Beispiel
Lassen Sie uns unsere Tabellen ein wenig ändern:
CREATE TABLE friends (
id SERIAL PRIMARY KEY,
name VARCHAR(50)
);
CREATE TABLE favorite_drinks (
id SERIAL PRIMARY KEY,
friend_id INTEGER,
drink VARCHAR(50)
);
INSERT INTO friends (name) VALUES ('Alice'), ('Bob'), ('Charlie'), ('David');
INSERT INTO favorite_drinks (friend_id, drink) VALUES (1, 'Cola'), (2, 'Juice'), (3, 'Water');
Nun führen wir einen INNER JOIN durch:
SELECT f.name, fd.drink
FROM friends f
INNER JOIN favorite_drinks fd ON f.id = fd.friend_id;
Ergebnis:
name | drink |
---|---|
Alice | Cola |
Bob | Juice |
Charlie | Water |
Beachten Sie, dass David nicht im Ergebnis erscheint, weil er keine bevorzugte Getränkeangabe hat.
Der LEFT OUTER JOIN
Was ist ein LEFT OUTER JOIN?
Ein LEFT OUTER JOIN ist so, als würde man sicherstellen, dass alle Freunde auf der Gästeliste stehen, selbst wenn man ihre Getränkepräferenz nicht kennt. Diejenigen ohne bekannte Präferenz könnten ein Standardgetränk oder gar kein Getränk erhalten.
LEFT OUTER JOIN Beispiel
Wir verwenden die gleichen Tabellen wie im INNER JOIN Beispiel:
SELECT f.name, fd.drink
FROM friends f
LEFT OUTER JOIN favorite_drinks fd ON f.id = fd.friend_id;
Ergebnis:
name | drink |
---|---|
Alice | Cola |
Bob | Juice |
Charlie | Water |
David | NULL |
Sehen Sie, wie David jetzt enthalten ist, aber mit einem NULL-Getränk? Das ist die Magie des LEFT OUTER JOIN!
Der RIGHT OUTER JOIN
Was ist ein RIGHT OUTER JOIN?
Ein RIGHT OUTER JOIN ist das Gegenteil des LEFT OUTER JOIN. Es ist so, als würde man sicherstellen, dass alle Getränke auf der Karte stehen, selbst wenn niemand sie als Lieblingsgetränk ausgewählt hat.
RIGHT OUTER JOIN Beispiel
Fügen wir ein Getränk hinzu, das niemand als Lieblingsgetränk ausgewählt hat:
INSERT INTO favorite_drinks (drink) VALUES ('Lemonade');
SELECT f.name, fd.drink
FROM friends f
RIGHT OUTER JOIN favorite_drinks fd ON f.id = fd.friend_id;
Ergebnis:
name | drink |
---|---|
Alice | Cola |
Bob | Juice |
Charlie | Water |
NULL | Lemonade |
Lemonade erscheint in der Liste, auch wenn kein Freund es als Lieblingsgetränk ausgewählt hat.
Der FULL OUTER JOIN
Was ist ein FULL OUTER JOIN?
Ein FULL OUTER JOIN ist der Traum eines Partyplaners. Er enthält alle Freunde und alle Getränke, paart sie wo möglich und verwendet NULL, wo kein Match besteht.
FULL OUTER JOIN Beispiel
SELECT f.name, fd.drink
FROM friends f
FULL OUTER JOIN favorite_drinks fd ON f.id = fd.friend_id;
Ergebnis:
name | drink |
---|---|
Alice | Cola |
Bob | Juice |
Charlie | Water |
David | NULL |
NULL | Lemonade |
Das gibt uns das vollständige Bild: alle Freunde (auch David ohne Lieblingsgetränk) und alle Getränke (auch Lemonade ohne Freund, der es bevorzugt).
Fazit
Und da haben Sie es, Leute! Wir haben die Welt der PostgreSQL JOINs bereist, von dem inklusiven CROSS JOIN bis zum umfassenden FULL OUTER JOIN. Erinnern Sie sich daran, die richtige JOIN-Art auszuwählen ist wie das Auswählen der perfekten Mischung für Ihre Party – es hängt alles von den Informationen ab, die Sie benötigen, und davon, wie Sie Ihre Daten kombinieren möchten.
Üben Sie diese JOINs, probieren Sie verschiedene Szenarien aus, und bald werden Sie das Leben der Datenbankparty sein! Wer hätte gedacht, dass das Verwalten von Daten so viel Spaß machen kann, oder? Bis zum nächsten Mal, frohes Queryen!
Credits: Image by storyset