In einem re­la­tio­na­len Da­ten­bank­ma­nage­ment­sys­tem können Da­ten­sät­ze in un­ter­schied­li­chen Tabellen mit­ein­an­der ver­gli­chen werden. So ist es möglich, Ver­bin­dun­gen her­zu­stel­len und über­ein­stim­men­de Werte aus zwei Tabellen zu ex­tra­hie­ren. Diese Aufgabe wird in MariaDB durch JOIN über­nom­men. Die Anweisung wird in Kom­bi­na­ti­on mit SELECT an­ge­wen­det und kann in ver­schie­de­ne Ka­te­go­rien un­ter­teilt werden, von denen wir Ihnen hier INNER JOIN, LEFT OUTER JOIN und RIGHT OUTER JOIN näher vor­stel­len.

Syntax und Funk­ti­ons­wei­se

Damit Sie einen Überblick über die un­ter­schied­li­chen JOIN-An­wei­sun­gen in MariaDB gewinnen können, zeigen wir Ihnen zunächst die grund­sätz­li­che Syntax der Anweisung. Diese sieht für INNER JOIN so aus:

SELECT spalte(n)
FROM tabelle_1
INNER JOIN tabelle_2
ON tabelle_1.spalte = tabelle_2.spalte;
sql

Mit SELECT wählen Sie dabei die Spalte (oder die Spalten) aus, die be­rück­sich­tigt werden sollen. Statt des Platz­hal­ters „tabelle_1“ hin­ter­le­gen Sie Ihre erste Tabelle und statt „tabelle_2“ die zweite Tabelle, die mit der ersten verbunden werden soll. Durch INNER JOIN werden alle Zeilen der ersten Tabelle mit allen Zeilen der zweiten Tabelle ver­gli­chen. Er­geb­nis­se, die über­ein­stim­men (also in beiden Tabellen vorhanden sind), werden dann gemeinsam in einer Er­geb­nis­ta­bel­le aus­ge­ge­ben. Einträge, die nicht über­ein­stim­men, werden hingegen auch nicht be­rück­sich­tigt.

Managed Database Services
Da­ten­ban­ken – Auf´s We­sent­li­che kon­zen­trie­ren
  • IONOS Cloud-Partner: Die Experten für Ihren Datenbank-Betrieb
  • Flexibel: Maß­ge­schnei­der­te Datenbank-Lösungen ganz auf Ihre Be­dürf­nis­se
  • Re­chen­zen­tren in Deutsch­land: Ihre Daten sind sicher

Beispiel für INNER JOIN in MariaDB

Um zu ver­an­schau­li­chen, wie INNER JOIN in MariaDB funk­tio­niert, wählen wir ein einfaches Beispiel. Dafür gehen wir von einer Datenbank aus, in der sich zwei Tabellen befinden. Die erste Tabelle nennt sich „Kun­den­lis­te“ und die zweite „Be­stel­lun­gen“. „Kun­den­lis­te“ erstellen wir mit MariaDB CREATE TABLE. Sie enthält die Spalten „Kun­den­num­mer“, Nachname“, „Vorname“, „Stadt“ und „Er­stel­lungs­da­tum“. Der Code sieht aus wie folgt:

CREATE TABLE Kundenliste (
	Kundennummer INT PRIMARY KEY,
	Nachname VARCHAR(50),
	Vorname VARCHAR(50),
	Stadt VARCHAR(50),
	Erstellungsdatum DATE
);
sql

Diese Tabelle füllen wir nun mit einigen Werten. Dafür nutzen wir INSERT INTO:

INSERT INTO Kundenliste VALUES
(1, 'Schmidt', 'Martina', 'Berlin', '2022-07-19'),
(2, 'Schulz', 'Bernd', 'Hamburg', '2023-03-03'),
(3, 'Meyer', 'Peter', 'Hamburg', '2023-07-09'),
(4, 'Schneider', 'Sarah', 'Dortmund', '2023-12-10'),
(5, 'Bauer', 'Lisa', 'Berlin', '2024-01-17');
sql

Im Anschluss erstellen wir die Tabelle „Be­stel­lun­gen“. Diese enthält die Spalten „Be­stell­num­mer“, „Ar­ti­kel­num­mer“, „Kun­den­na­me“ und „Be­stell­da­tum“. Der Code sieht so aus:

CREATE TABLE Bestellungen (
	Bestellnummer INT AUTO_INCREMENT PRIMARY KEY,
	Artikelnummer INT,
	Kundenname VARCHAR(50),
	Bestelldatum DATE
);
sql

Auch diese Tabelle füllen wir mit Bei­spiel­wer­ten:

INSERT INTO Bestellungen VALUES
(101, 247, 'Müller', '2024-02-20'),
(102, 332, 'Meyer', '2024-03-03'),
(103, 247, 'Hallmann', '2024-03-09'),
(104, 191, 'Schulz', '2024-03-17'),
(105, 499, 'Brandt', '2024-03-17');
sql

Nun nutzen wir INNER JOIN für MariaDB, um jene Kunden und Kundinnen aus­zu­fil­tern, die in der Kun­den­lis­te auf­tau­chen und eine Be­stel­lung auf­ge­ge­ben haben, die in der Tabelle „Be­stel­lun­gen“ auf­ge­lis­tet wird. Der ent­spre­chen­de Code sieht so aus:

SELECT Kundenliste.Kundennummer, Kundenliste.Nachname, Bestellungen.Bestellnummer, Bestellungen.Artikelnummer
FROM Kundenliste
INNER JOIN Bestellungen
ON Kundenliste.Nachname = Bestellungen.Kundenname;
sql

Hier legen wir den Fokus auf den Nachnamen in der Kun­den­lis­te und den Kun­den­na­men in den Be­stel­lun­gen. Stimmen diese Werte überein, werden sie über­nom­men. Da die Kunden Meyer und Schulz in beiden Tabellen auf­tau­chen, würde die ent­spre­chen­de Ausgabe so aussehen:

Kun­den­num­mer Kun­den­na­me Be­stell­num­mer Ar­ti­kel­num­mer
3 Meyer 102 332
2 Schulz 104 191

LEFT OUTER JOIN

LEFT OUTER JOIN in MariaDB funk­tio­niert nach einem ähnlichen Prinzip und verwendet auch eine fast iden­ti­sche Syntax. Im Gegensatz zu INNER JOIN werden in diesem Fall al­ler­dings alle Da­ten­sät­ze aus der ersten oder linken Tabelle (in unserem Beispiel „Kun­den­lis­te“) aus­ge­ge­ben und nur die passenden Da­ten­sät­ze aus der zweiten oder rechten Tabelle („Be­stel­lun­gen“). Gibt es keine Ent­spre­chung in der zweiten Tabelle, wird der ent­spre­chen­de Wert mit NULL angegeben. Für unser Beispiel von oben sieht der Befehl so aus:

SELECT Kundenliste.Nachname, Bestellungen.Artikelnummer
FROM Kundenliste
LEFT OUTER JOIN Bestellungen
ON Kundenliste.Nachname = Bestellungen.Kundenname;
sql

Dadurch erhalten wir das folgende Ergebnis:

Kun­den­na­me Ar­ti­kel­num­mer
Schmidt NULL
Schulz 191
Meyer 332
Schneider NULL
Bauer NULL

RIGHT OUTER JOIN

Genau an­ders­her­um funk­tio­niert RIGHT OUTER JOIN in MariaDB. Dieses Mal werden die Daten der zweiten oder rechten Tabelle mit über­ein­stim­men­den Werten der ersten oder linken Tabelle verknüpft. Gibt es keine Über­ein­stim­mung, bleibt der Wert NULL. Dies ist der Code:

SELECT Kundenliste.Nachname, Bestellungen.Artikelnummer
FROM Kundenliste
RIGHT OUTER JOIN Bestellungen
ON Kundenliste.Nachname = Bestellungen.Kundenname;
sql

So sieht die Ausgabe aus:

Kun­den­na­me Ar­ti­kel­num­mer
NULL 247
Meyer 332
NULL 247
Schulz 191
NULL 499
Tipp

In unserem Digital Guide erhalten Sie viele nützliche An­lei­tun­gen und Er­klä­run­gen zum Thema MariaDB. Sie finden hier zum Beispiel einen Vergleich von MariaDB und MySQL und alles zur In­stal­la­ti­on von MariaDB. Außerdem erfahren Sie, wie Sie Ihr Root-Passwort bei MariaDB zu­rück­set­zen.

Zum Hauptmenü