SQLite - JOINS: Die Kunst der Verknüpfung von Tabellen meistern

Hallo da draußen, zukünftige Datenbankmeister! Heute tauchen wir in eines der aufregendsten (und manchmal abschreckendsten) Aspekte von SQLite ein: JOINS. Machen Sie sich keine Sorgen, wenn Sie neu hier sind; bis zum Ende dieses Tutorials werden Sie Tabellen wie ein Profi verknüpfen können!

SQLite - JOINS

Einführung in JOINS

Bevor wir ins tiefe Wasser springen, lassen Sie uns darüber sprechen, warum wir JOINS benötigen. Stellen Sie sich vor, Sie organisieren eine riesige Geburtstagsfeier (wer liebt nicht eine gute Party, oder?). Sie haben eine Liste mit Gästenamen und eine andere mit ihren Lieblingskuchen Geschmacksrichtungen. Wär es nicht großartig, wenn Sie diese Listen kombinieren könnten, um sicherzustellen, dass jeder seinen bevorzugten Kuchen bekommt? Genau das machen JOINS in Datenbanken – sie helfen uns, Informationen aus verschiedenen Tabellen auf.sinvolle Weise zu kombinieren.

Nun, lassen Sie uns die drei Hauptarten von JOINS in SQLite erkunden:

  1. CROSS JOIN
  2. INNER JOIN
  3. OUTER JOIN

Der CROSS JOIN: Der Party-Mixer

Was ist ein CROSS JOIN?

Ein CROSS JOIN ist wie die Einladung aller Gäste, sich untereinander zu mischen auf Ihrer Party. Es kombiniert jede Zeile aus einer Tabelle mit jeder Zeile aus einer anderen Tabelle. Es ist das Datenbankäquivalent von "Hey, alle, lernt alle kennen!"

CROSS JOIN Syntax

SELECT * FROM tabelle1 CROSS JOIN tabelle2;

CROSS JOIN Beispiel

Lassen Sie uns zwei einfache Tabellen für unsere Partyplanung erstellen:

CREATE TABLE gäste (
gast_id INTEGER PRIMARY KEY,
gast_name TEXT
);

CREATE TABLE kuchen (
kuchen_id INTEGER PRIMARY KEY,
kuchen_geschmack TEXT
);

INSERT INTO gäste (gast_name) VALUES ('Alice'), ('Bob'), ('Charlie');
INSERT INTO kuchen (kuchen_geschmack) VALUES ('Schokolade'), ('Vanille'), ('Erdbeere');

Nun verwenden wir einen CROSS JOIN:

SELECT gäste.gast_name, kuchen.kuchen_geschmack
FROM gäste CROSS JOIN kuchen;

Diese Abfrage wird folgendes erzeugen:

gast_name kuchen_geschmack
Alice Schokolade
Alice Vanille
Alice Erdbeere
Bob Schokolade
Bob Vanille
Bob Erdbeere
Charlie Schokolade
Charlie Vanille
Charlie Erdbeere

Wie Sie sehen können, wird jeder Gast mit jedem Kuchengeschmack gepaart. Es ist, als würde man jedem eine Geschmacksprobe aller Kuchen geben!

Wann man CROSS JOIN verwendet

CROSS JOINs werden in der realen Welt selten verwendet, da sie sehr große Ergebnismengen erzeugen können. Sie sind jedoch großartig zum Generieren von Kombinationen oder zum Erstellen von Testdaten.

Der INNER JOIN: Das perfekte Match

Was ist ein INNER JOIN?

Ein INNER JOIN ist wie das Paaren von Tanzpartnern, die beide denselben Tanz kennen. Es kombiniert Zeilen aus zwei Tabellen basierend auf einer verwandten Spalte zwischen ihnen.

INNER JOIN Syntax

SELECT * FROM tabelle1 INNER JOIN tabelle2 ON tabelle1.spalte = tabelle2.spalte;

INNER JOIN Beispiel

Lassen Sie uns unsere Partyplanungsszene ändern. Jetzt haben wir Gäste und ihre Kuchenpräferenzen:

CREATE TABLE gäste (
gast_id INTEGER PRIMARY KEY,
gast_name TEXT,
bevorzugter_kuchen_id INTEGER
);

CREATE TABLE kuchen (
kuchen_id INTEGER PRIMARY KEY,
kuchen_geschmack TEXT
);

INSERT INTO gäste (gast_name, bevorzugter_kuchen_id) VALUES
('Alice', 1), ('Bob', 2), ('Charlie', 3), ('David', 1);
INSERT INTO kuchen (kuchen_geschmack) VALUES
('Schokolade'), ('Vanille'), ('Erdbeere');

Nun verwenden wir einen INNER JOIN, um Gäste mit ihren bevorzugten Kuchen zu verknüpfen:

SELECT gäste.gast_name, kuchen.kuchen_geschmack
FROM gäste INNER JOIN kuchen ON gäste.bevorzugter_kuchen_id = kuchen.kuchen_id;

Diese Abfrage wird folgendes erzeugen:

gast_name kuchen_geschmack
Alice Schokolade
Bob Vanille
Charlie Erdbeere
David Schokolade

Perfekt! Jeder Gast wird mit seinem bevorzugten Kuchengeschmack gepaart.

Wann man INNER JOIN verwendet

INNER JOINs sind die am häufigsten verwendete Art von JOIN. Verwenden Sie sie, wenn Sie Daten abrufen möchten, die übereinstimmende Werte in beiden Tabellen haben.

Der OUTER JOIN: Niemanden zurücklassen

Was ist ein OUTER JOIN?

Ein OUTER JOIN ist wie sicherzustellen, dass niemand auf der Party sich alleingelassen fühlt. Es gibt alle Zeilen aus einer oder beiden Tabellen zurück, selbst wenn es keine Übereinstimmung in der anderen Tabelle gibt.

Es gibt drei Arten von OUTER JOINs:

  1. LEFT OUTER JOIN
  2. RIGHT OUTER JOIN (nicht in SQLite unterstützt)
  3. FULL OUTER JOIN (nicht direkt in SQLite unterstützt)

Wir werden uns auf den LEFT OUTER JOIN konzentrieren, da er am häufigsten in SQLite verwendet wird.

LEFT OUTER JOIN Syntax

SELECT * FROM tabelle1 LEFT OUTER JOIN tabelle2 ON tabelle1.spalte = tabelle2.spalte;

LEFT OUTER JOIN Beispiel

Lassen Sie uns einen Gast hinzufügen, der keine Kuchenpräferenz hat:

INSERT INTO gäste (gast_name, bevorzugter_kuchen_id) VALUES ('Eve', NULL);

Nun verwenden wir einen LEFT OUTER JOIN:

SELECT gäste.gast_name, kuchen.kuchen_geschmack
FROM gäste LEFT OUTER JOIN kuchen ON gäste.bevorzugter_kuchen_id = kuchen.kuchen_id;

Diese Abfrage wird folgendes erzeugen:

gast_name kuchen_geschmack
Alice Schokolade
Bob Vanille
Charlie Erdbeere
David Schokolade
Eve NULL

Wie Sie sehen, wird Eve in das Ergebnis aufgenommen, obwohl sie keine bevorzugte Kuchen hat. Das ist die Magie des LEFT OUTER JOIN!

Wann man OUTER JOIN verwendet

Verwenden Sie OUTER JOINs, wenn Sie alle Einträge aus einer Tabelle inkludieren möchten, unabhängig davon, ob sie übereinstimmende Einträge in der anderen Tabelle haben.

Schlussfolgerung

Und da haben Sie es, Leute! Sie haben gerade Ihre ersten Schritte in die wunderbare Welt der SQLite JOINS unternommen. Denken Sie daran, Übung macht den Meister, also fürchten Sie sich nicht, mit diesen Abfragen zu experimentieren.

Hier ist eine kurze Referenztabelle der JOINS, die wir besprochen haben:

JOIN-Typ Verwendungszweck
CROSS JOIN Jede Zeile mit jeder anderen Zeile kombinieren
INNER JOIN Zeilen basierend auf einer Bedingung verknüpfen
LEFT JOIN Alle Zeilen der linken Tabelle, verknüpfen falls möglich

Weitermachen mit dem Verknüpfen von Tabellen, und bald werden Sie der Star der Datenbankparty sein! Frohes Abfragen!

Credits: Image by storyset