Bei deiner Datenanalyse in SQL musst du oft mehrere Tabellen betrachten und sie verbinden, um die gewünschten Ergebnisse zu erhalten. Das Verbinden von Tabellen zur Datenanalyse ist ebenfalls eine notwendige Fähigkeit für einen Datenwissenschaftler. In diesem Lernprogramm lernst du verschiedene Arten von Joins kennen, die du in PostgreSQL durchführen kannst. Du wirst zunächst die grundlegenden Konzepte von Joins in SQL kennenlernen und dann die verschiedenen Arten von Joins und ihre Syntax in PostgreSQL. Zum Abschluss dieses Lernprogramms führst du verschiedene Arten von Join-Abfragen mit zwei Tabellen durch. Um dem Kurs folgen zu können, solltest du mit den Grundlagen von SQL vertraut sein und wissen, wie man einfache Abfragen in PostgreSQL schreibt. Wenn du nach Ressourcen suchst, um diese zu lernen, können die folgenden nützlich sein -
Bevor du dich mit den Grundlagen von SQL-Joins beschäftigst, solltest du einige Tabellen für deine Analysen erstellen. Du brauchst mindestens zwei Tabellen, die mindestens eine Spalte gemeinsam haben. Obwohl du Self-Join-Abfragen auf derselben Tabelle ausführen kannst, lassen wir diese Tatsache vorerst außer Acht.
Du kannst alle SQL-Operationen mit einem Tool namens pgAdmin durchführen, das normalerweise mit der Installation von PostgreSQL mitgeliefert wird. Öffne pgAdmin und erstelle eine Datenbank (gib ihr einen Namen deiner Wahl), um die Tabellen zu erstellen, wenn du keine bestehende Datenbank hast, mit der du fortfahren kannst. Du kannst dann die folgenden zwei Tabellen mit den angegebenen Spezifikationen erstellen -
student_name (id, name)
student_stream (id, stream)
Beachte, dass die beiden Tabellen die Spalte id gemeinsam haben. Du kannst die folgenden CREATE Anweisungen verwenden, um die Tabellen zu erstellen -
Für schüler_name -
CREATETABLE student_name
(
id smallint,
name "char"[]);Bereitgestellt von
For student_stream -
CREATETABLE student_stream
(
id smallint,
stream "char"[]);Bereitgestellt von
Fügen wir nun einige Datensätze in die Tabellen ein.
Für schüler_name -
INSERTINTO student_name(id, name)VALUES(1,'Sayak');INSERTINTO student_name(id, name)VALUES(2,'Alex');INSERTINTO student_name(id, name)VALUES(3,'Sameer');INSERTINTO student_name(id, name)VALUES(4,'Rick');Bereitgestellt von
For student_stream -
INSERTINTO student_stream(id, stream)VALUES(1,'CS');INSERTINTO student_stream(id, stream)VALUES(1,'IT');INSERTINTO student_stream(id, stream)VALUES(2,'ECE');INSERTINTO student_stream(id, stream)VALUES(9,'ECE');Bereitgestellt von
Die Einträge in der Tabelle sollten wie folgt aussehen, wenn du die obigen Abfragen ohne Änderungen ausgeführt hast -
Jetzt hast du zwei einfache Tabellen fertig. Jetzt wollen wir uns mit den Grundlagen von SQL-Joins beschäftigen.
SQL Joins - Grundlagen
Mit SQL Joins kannst du zwei oder mehr Tabellen (manchmal auch nur eine Tabelle) mit gemeinsamen Bezeichnern zusammenfassen. Nehmen wir das Beispiel der beiden Tabellen, die du oben erstellt hast - beide Tabellen haben die Spalte id gemeinsam. Du fragst dich vielleicht, warum das Join in SQL notwendig ist. Lass uns das kurz besprechen.
Aufgrund von Normalisierungsbeschränkungen kann es vorkommen, dass nicht alle erforderlichen Informationen in einer einzigen Tabelle vorhanden sind. Eine Normalisierung ist nicht nur erwünscht, sondern auch notwendig, um die Konsistenz zu wahren, Redundanzen zu reduzieren und mehrere Einfügungen und Aktualisierungsanomalien zu verhindern. Betrachte noch einmal die beiden obigen Tabellen. Angenommen, du möchtest herausfinden, in welchen Fächern Sayak eingeschrieben ist. Um die Antwort auf diese Frage zu erhalten, musst du die beiden Tabellen verbinden (es können auch Unterabfragen verwendet werden, aber das lassen wir jetzt mal außen vor) und dann entsprechend vorgehen.
Damit zwei Tabellen verbunden werden können, müssen sie etwas gemeinsam haben. Heißt das, dass beide Tabellen mindestens eine Spalte mit demselben Namen haben müssen? Oder was genau ist dieser Zustand?
Die Tabellen, die du zusammenführen möchtest, müssen nicht unbedingt eine Spalte mit demselben Namen haben, aber logisch gesehen sollten sie gleich sein, d.h. ihre Datentypen sollten übereinstimmen. Du kannst nicht zwei Tabellen verbinden, die eine Spalte mit demselben Namen, aber unterschiedlichen Datentypen haben. Schauen wir uns nun die verschiedenen Arten von SQL-Joins an.
Verschiedene Arten von SQL-Joins
In diesem Abschnitt wirst du verschiedene Arten von SQL-Joins kennenlernen.
INNER JOIN
Selbstverknüpfung
OUTER JOIN
LEFT JOIN
RIGHT JOIN
FULL JOIN
CROSS JOIN
Semi-Join und Anti-Join
PostgreSQL bietet separate Schlüsselwörter für die in Großbuchstaben genannten Arten von Joins. Schauen wir sie uns nacheinander an. Dazu wirst du die Joins zunächst visuell untersuchen und dann die entsprechenden Join-Abfragen in PostgreSQL ausführen.
INNER JOIN
Sieh dir das folgende Diagramm an, um INNER JOIN visuell zu verstehen -
Im obigen Beispiel ist die betrachtete Spalte die Spalte id. INNER JOIN ignoriert alle anderen Spalten, deren Werte nicht in beiden Tabellen gleich sind. Führen wir nun eine Abfrage in PostgreSQL aus, die INNER JOIN zwischen den beiden Tabellen - student_name und student_stream - durchführt.
Wenn du die folgende Abfrage ausführst, erhältst du das Ergebnis wie in der obigen Abbildung dargestellt -
SELECT s1.id, s1.name, s2.stream
FROM student_name AS s1
INNERJOIN student_stream AS s2
ON s1.id = s2.id;Bereitgestellt von
s1 und s2 sind die Aliasnamen für die beiden Tabellen. Du hast das Stichwort ON zusammen mit INNER JOIN verwendet. Die Abfrage kann auch mit dem Schlüsselwort USING ausgeführt werden -
SELECT s1.id, s1.name, s2.stream
FROM student_name AS s1
INNERJOIN student_stream AS s2
USING(id);Bereitgestellt von
Self Join ermöglicht es dir, dieselbe Tabelle zu verbinden. Aber wo könnte das eine gute Option sein? Angenommen, du hast eine Tabelle mit den folgenden Spalten -
Land
Kontinent
Jetzt willst du zwei Länder so einbinden, dass ihre Kontinente gleich groß sind. Die folgende Abbildung soll dir einen Eindruck von den zu erwartenden Ergebnissen geben -
OUTER JOIN
OUTER JOIN können weiter in drei Arten unterteilt werden -
LEFT JOIN oder Left Outer JOIN: Das folgende Diagramm gibt dir einen guten Überblick über LEFT JOIN in SQL -
Beachte, dass LEFT JOIN im Gegensatz zu INNER JOIN die Datensätze aus der linken Tabelle (in der Reihenfolge, die du in deiner Abfrage angibst) abruft, für die es in der rechten Tabelle keinen passenden Eintrag gab. Das wiederum sagt dir, dass Sameer und Rick in keinem der Streams eingeschrieben sind. Die entsprechende Abfrage dazu lautet -
SELECT s1.id, s1.name, s2.stream
FROM student_name AS s1
LEFTJOIN student_stream AS s2
ON s1.id = s2.id;Bereitgestellt von
RIGHT JOIN oder Right Outer JOIN : RIGHT JOIN ist genau das Gegenteil von LEFT JOIN -
RIGHT JOIN kann dir helfen, den/die Studiengang/e zu finden, für den/die sich kein Schüler eingeschrieben hat. Die Abfrage hierfür wäre -
SELECT s1.id, s1.name, s2.stream
FROM student_name AS s1
RIGHTJOIN student_stream AS s2
ON s1.id = s2.id;Bereitgestellt von
FULL JOIN oder Full Outer JOIN: Mit FULL JOIN kannst du sowohl LEFT JOIN als auch RIGHT JOIN in einer einzigen Zusammenstellung kombinieren -
Die entsprechende Abfrage würde lauten -
SELECT s1.id, s1.name, s2.stream
FROM student_name AS s1
FULLJOIN student_stream AS s2
ON s1.id = s2.id;Bereitgestellt von
Beachte, dass du alle oben genannten OUTER JOIN Abfragen mit dem Schlüsselwort USING ausführen kannst. Schauen wir uns nun CROSS JOIN an.
CROSS JOIN
CROSS JOIN ist im Wesentlichen das kartesische Produkt zwischen zwei Elementen, ausgedrückt mit SQL. Angenommen, du möchtest alle möglichen Kombinationen zwischen zwei Tabellen oder sogar in einer einzigen Tabelle haben. Hierfür brauchst du CROSS JOIN. Die folgende Abbildung stellt dieses Konzept visuell dar -
Du hast bereits zwei Tabellen, um das auszuprobieren. Um alle möglichen Kombinationen zwischen den id Spalten der Tabellen student_name und student_stream zu erhalten, kannst du die folgende Abfrage ausführen -
SELECT s1.id, s2.id
FROM student_name AS s1
CROSSJOIN student_stream AS s2;Bereitgestellt von
Und du bekommst das folgende Ergebnis -
Sehen wir uns nun die beiden anderen Join-Typen an, für die PostgreSQL keine direkten Schlüsselwörter bereitstellt.
Semi-Join und Anti-Join
Schauen wir uns die Tabellen an, die du zuvor im Tutorial erstellt hast:
Semi Join Abfragen werden in der Regel in Form von Unterabfragen ausgeführt, bei denen Zeilen aus der ersten Tabelle in Bezug auf eine Bedingung (oder eine Reihe von Bedingungen), die in der zweiten Tabelle erfüllt ist, abgefragt werden. Nehmen wir an, die linke Tabelle ist die erste Tabelle und die rechte Tabelle ist die zweite Tabelle.
Anti Join Abfragen sind das genaue Gegenteil. In Anti Join werden Zeilen aus der ersten Tabelle in Bezug auf eine Bedingung (oder eine Reihe von Bedingungen) ausgewählt, die in der zweiten Tabelle nicht erfüllt ist. Hier ist ein Diagramm, damit du das visuell verstehen kannst -
Die Abfrage für die Realisierung der Semi Join würde lauten -
select id, name
from student_name
where id IN(select id from student_stream where stream
IN('CS','IT','ECE'));Bereitgestellt von
Ähnlich wäre die Abfrage, die Anti Join realisiert, in diesem Fall -
select id, name
from student_name
where id NOTIN(select id from student_stream where stream
IN('CS','IT','ECE'));Bereitgestellt von
Beachte die Verwendung von NOT in der obigen Abfrage.
Die nächste Stufe der SQL-Join-Kunst
Das ist alles für dieses Tutorial. Du hast in diesem Tutorial verschiedene Arten von SQL-Joins kennengelernt und dich auch mit der PostgreSQL-Syntax vertraut gemacht. Wenn du einige anspruchsvolle SQL-Join-Übungen machen willst, solltest du den DataCamp-Kurs Joining Data in SQL besuchen. Tatsächlich wurden die Materialien aus dem Kurs als Referenzen für dieses Tutorial verwendet.
Lass mich deine Fragen im Comments Abschnitt wissen.
Mach dich mit Python-Datenstrukturen vertraut: Lerne mehr über Datentypen und primitive sowie nicht-primitive Datenstrukturen wie Strings, Listen, Stapel usw.
Gewinne Vertrauen in die OLS-Regression, indem du ihre theoretischen Grundlagen beherrschst. Erforsche, wie du einfache Implementierungen in Excel, R und Python durchführst.
Erforsche Pythons match-case: eine Anleitung zu seiner Syntax, Anwendungen in Data Science und ML sowie eine vergleichende Analyse mit dem traditionellen switch-case.
Bei deiner Datenanalyse in SQL musst du oft mehrere Tabellen betrachten und sie verbinden, um die gewünschten Ergebnisse zu erhalten. Das Verbinden von Tabellen zur Datenanalyse ist ebenfalls eine notwendige Fähigkeit für einen Datenwissenschaftler. In diesem Lernprogramm lernst du verschiedene Arten von Joins kennen, die du in PostgreSQL durchführen kannst. Du wirst zunächst die grundlegenden Konzepte von Joins in SQL kennenlernen und dann die verschiedenen Arten von Joins und ihre Syntax in PostgreSQL. Zum Abschluss dieses Lernprogramms führst du verschiedene Arten von Join-Abfragen mit zwei Tabellen durch. Um dem Kurs folgen zu können, solltest du mit den Grundlagen von SQL vertraut sein und wissen, wie man einfache Abfragen in PostgreSQL schreibt. Wenn du nach Ressourcen suchst, um diese zu lernen, können die folgenden nützlich sein -
Fangen wir an.
Einrichten der Datenbankumgebung in PostgreSQL
Bevor du dich mit den Grundlagen von SQL-Joins beschäftigst, solltest du einige Tabellen für deine Analysen erstellen. Du brauchst mindestens zwei Tabellen, die mindestens eine Spalte gemeinsam haben. Obwohl du Self-Join-Abfragen auf derselben Tabelle ausführen kannst, lassen wir diese Tatsache vorerst außer Acht.
Du kannst alle SQL-Operationen mit einem Tool namens
pgAdmindurchführen, das normalerweise mit der Installation von PostgreSQL mitgeliefert wird. ÖffnepgAdminund erstelle eine Datenbank (gib ihr einen Namen deiner Wahl), um die Tabellen zu erstellen, wenn du keine bestehende Datenbank hast, mit der du fortfahren kannst. Du kannst dann die folgenden zwei Tabellen mit den angegebenen Spezifikationen erstellen -Beachte, dass die beiden Tabellen die Spalte
idgemeinsam haben. Du kannst die folgendenCREATEAnweisungen verwenden, um die Tabellen zu erstellen -Fügen wir nun einige Datensätze in die Tabellen ein.
Die Einträge in der Tabelle sollten wie folgt aussehen, wenn du die obigen Abfragen ohne Änderungen ausgeführt hast -
Jetzt hast du zwei einfache Tabellen fertig. Jetzt wollen wir uns mit den Grundlagen von SQL-Joins beschäftigen.
SQL Joins - Grundlagen
Mit SQL Joins kannst du zwei oder mehr Tabellen (manchmal auch nur eine Tabelle) mit gemeinsamen Bezeichnern zusammenfassen. Nehmen wir das Beispiel der beiden Tabellen, die du oben erstellt hast - beide Tabellen haben die Spalte
idgemeinsam. Du fragst dich vielleicht, warum das Join in SQL notwendig ist. Lass uns das kurz besprechen.Aufgrund von Normalisierungsbeschränkungen kann es vorkommen, dass nicht alle erforderlichen Informationen in einer einzigen Tabelle vorhanden sind. Eine Normalisierung ist nicht nur erwünscht, sondern auch notwendig, um die Konsistenz zu wahren, Redundanzen zu reduzieren und mehrere Einfügungen und Aktualisierungsanomalien zu verhindern. Betrachte noch einmal die beiden obigen Tabellen. Angenommen, du möchtest herausfinden, in welchen Fächern
Sayakeingeschrieben ist. Um die Antwort auf diese Frage zu erhalten, musst du die beiden Tabellen verbinden (es können auch Unterabfragen verwendet werden, aber das lassen wir jetzt mal außen vor) und dann entsprechend vorgehen.Damit zwei Tabellen verbunden werden können, müssen sie etwas gemeinsam haben. Heißt das, dass beide Tabellen mindestens eine Spalte mit demselben Namen haben müssen? Oder was genau ist dieser Zustand?
Die Tabellen, die du zusammenführen möchtest, müssen nicht unbedingt eine Spalte mit demselben Namen haben, aber logisch gesehen sollten sie gleich sein, d.h. ihre Datentypen sollten übereinstimmen. Du kannst nicht zwei Tabellen verbinden, die eine Spalte mit demselben Namen, aber unterschiedlichen Datentypen haben. Schauen wir uns nun die verschiedenen Arten von SQL-Joins an.
Verschiedene Arten von SQL-Joins
In diesem Abschnitt wirst du verschiedene Arten von SQL-Joins kennenlernen.
PostgreSQL bietet separate Schlüsselwörter für die in Großbuchstaben genannten Arten von Joins. Schauen wir sie uns nacheinander an. Dazu wirst du die Joins zunächst visuell untersuchen und dann die entsprechenden Join-Abfragen in PostgreSQL ausführen.
INNER JOIN
Sieh dir das folgende Diagramm an, um
INNER JOINvisuell zu verstehen -Im obigen Beispiel ist die betrachtete Spalte die Spalte
id.INNER JOINignoriert alle anderen Spalten, deren Werte nicht in beiden Tabellen gleich sind. Führen wir nun eine Abfrage in PostgreSQL aus, dieINNER JOINzwischen den beiden Tabellen - student_name und student_stream - durchführt.Wenn du die folgende Abfrage ausführst, erhältst du das Ergebnis wie in der obigen Abbildung dargestellt -
s1unds2sind die Aliasnamen für die beiden Tabellen. Du hast das StichwortONzusammen mitINNER JOINverwendet. Die Abfrage kann auch mit dem SchlüsselwortUSINGausgeführt werden -Self Join ermöglicht es dir, dieselbe Tabelle zu verbinden. Aber wo könnte das eine gute Option sein? Angenommen, du hast eine Tabelle mit den folgenden Spalten -
Jetzt willst du zwei Länder so einbinden, dass ihre Kontinente gleich groß sind. Die folgende Abbildung soll dir einen Eindruck von den zu erwartenden Ergebnissen geben -
OUTER JOIN
OUTER JOINkönnen weiter in drei Arten unterteilt werden -LEFT JOIN oder Left Outer JOIN: Das folgende Diagramm gibt dir einen guten Überblick über
LEFT JOINin SQL -Beachte, dass
LEFT JOINim Gegensatz zuINNER JOINdie Datensätze aus der linken Tabelle (in der Reihenfolge, die du in deiner Abfrage angibst) abruft, für die es in der rechten Tabelle keinen passenden Eintrag gab. Das wiederum sagt dir, dassSameerundRickin keinem der Streams eingeschrieben sind. Die entsprechende Abfrage dazu lautet -RIGHT JOIN oder Right Outer JOIN :
RIGHT JOINist genau das Gegenteil vonLEFT JOIN-RIGHT JOINkann dir helfen, den/die Studiengang/e zu finden, für den/die sich kein Schüler eingeschrieben hat. Die Abfrage hierfür wäre -FULL JOIN oder Full Outer JOIN: Mit
FULL JOINkannst du sowohlLEFT JOINals auchRIGHT JOINin einer einzigen Zusammenstellung kombinieren -Die entsprechende Abfrage würde lauten -
Beachte, dass du alle oben genannten
OUTER JOINAbfragen mit dem SchlüsselwortUSINGausführen kannst. Schauen wir uns nunCROSS JOINan.CROSS JOIN
CROSS JOINist im Wesentlichen das kartesische Produkt zwischen zwei Elementen, ausgedrückt mit SQL. Angenommen, du möchtest alle möglichen Kombinationen zwischen zwei Tabellen oder sogar in einer einzigen Tabelle haben. Hierfür brauchst duCROSS JOIN. Die folgende Abbildung stellt dieses Konzept visuell dar -Du hast bereits zwei Tabellen, um das auszuprobieren. Um alle möglichen Kombinationen zwischen den
idSpalten der Tabellenstudent_nameundstudent_streamzu erhalten, kannst du die folgende Abfrage ausführen -Und du bekommst das folgende Ergebnis -
Sehen wir uns nun die beiden anderen Join-Typen an, für die PostgreSQL keine direkten Schlüsselwörter bereitstellt.
Semi-Join und Anti-Join
Schauen wir uns die Tabellen an, die du zuvor im Tutorial erstellt hast:
Semi JoinAbfragen werden in der Regel in Form von Unterabfragen ausgeführt, bei denen Zeilen aus der ersten Tabelle in Bezug auf eine Bedingung (oder eine Reihe von Bedingungen), die in der zweiten Tabelle erfüllt ist, abgefragt werden. Nehmen wir an, die linke Tabelle ist die erste Tabelle und die rechte Tabelle ist die zweite Tabelle.Anti JoinAbfragen sind das genaue Gegenteil. InAnti Joinwerden Zeilen aus der ersten Tabelle in Bezug auf eine Bedingung (oder eine Reihe von Bedingungen) ausgewählt, die in der zweiten Tabelle nicht erfüllt ist. Hier ist ein Diagramm, damit du das visuell verstehen kannst -Die Abfrage für die Realisierung der
Semi Joinwürde lauten -Ähnlich wäre die Abfrage, die
Anti Joinrealisiert, in diesem Fall -Beachte die Verwendung von
NOTin der obigen Abfrage.Die nächste Stufe der SQL-Join-Kunst
Das ist alles für dieses Tutorial. Du hast in diesem Tutorial verschiedene Arten von SQL-Joins kennengelernt und dich auch mit der PostgreSQL-Syntax vertraut gemacht. Wenn du einige anspruchsvolle SQL-Join-Übungen machen willst, solltest du den DataCamp-Kurs Joining Data in SQL besuchen. Tatsächlich wurden die Materialien aus dem Kurs als Referenzen für dieses Tutorial verwendet.
Lass mich deine Fragen im
CommentsAbschnitt wissen.