SQL JOIN und verschiedene Arten von JOINs
Was ist ein SQL JOIN
und was sind die verschiedenen Typen?
236
3
Was ist ein SQL JOIN
und was sind die verschiedenen Typen?
Eine Illustration von [W3schools] (https://www.w3schools.com/sql/sql_join.asp):
Was ist
SQL JOIN
?SQL JOIN" ist eine Methode zum Abrufen von Daten aus zwei oder mehr Datenbanktabellen.
Was sind die verschiedenen
SQL JOIN
s?Es gibt insgesamt fünf
JOIN
s. Sie sind:JOIN oder INNER JOIN :
Bei dieser Art von
JOIN
werden alle Datensätze, die der Bedingung in beiden Tabellen entsprechen, erhalten, und Datensätze in beiden Tabellen, die nicht übereinstimmen, werden nicht gemeldet.Mit anderen Worten: Der
INNER JOIN
basiert auf der einzigen Tatsache, dass: NUR die übereinstimmenden Einträge in BEIDEN Tabellen SOLLTEN aufgelistet werden.Beachten Sie, dass ein
JOIN
ohne andereJOIN
-Schlüsselwörter (wieINNER
,OUTER
,LEFT
, usw.) einINNER JOIN
ist. Mit anderen Worten,JOIN
ist ein syntaktischer Zucker fürINNER JOIN
(siehe: https://stackoverflow.com/questions/565620/difference-between-join-and-inner-join).OUTER JOIN :
OUTER JOIN" ruft ab
Entweder, die übereinstimmenden Zeilen aus einer Tabelle und alle Zeilen in der anderen Tabelle oder, alle Zeilen in allen Tabellen (es spielt keine Rolle, ob es eine Übereinstimmung gibt oder nicht).
Es gibt drei Arten von Outer Join :
2.1 LEFT OUTER JOIN oder LEFT JOIN
Diese Verknüpfung gibt alle Zeilen der linken Tabelle in Verbindung mit den passenden Zeilen der rechten Tabelle. Wenn es in der rechten Tabelle keine übereinstimmenden Spalten gibt, werden "NULL"-Werte zurückgegeben.
2.2 RIGHT OUTER JOIN oder RIGHT JOIN
Dieser
JOIN
gibt alle Zeilen der rechten Tabelle in Verbindung mit den passenden Zeilen der linken Tabelle. Wenn es keine übereinstimmenden Spalten in der linken Tabelle gibt, werden "NULL"-Werte zurückgegeben.2.3 FULL OUTER JOIN oder FULL JOIN
Dieser
JOIN
kombiniertLEFT OUTER JOIN
undRIGHT OUTER JOIN
. Er gibt Zeilen aus beiden Tabellen zurück, wenn die Bedingungen erfüllt sind, und gibt den Wert "NULL" zurück, wenn es keine Übereinstimmung gibt.Mit anderen Worten,
OUTER JOIN
basiert auf der Tatsache, dass: NUR die übereinstimmenden Einträge in EINER der Tabellen (RECHTS oder LINKS) oder BEIDEN Tabellen (VOLL) SOLLTEN aufgelistet werden.NATÜRLICHER JOIN :
Sie basiert auf den beiden Bedingungen :
JOIN
wird für alle Spalten mit dem gleichen Namen auf Gleichheit durchgeführt.Dies scheint eher theoretischer Natur zu sein und wird daher (wahrscheinlich) von den meisten DBMS nicht einmal die Mühe, dies zu unterstützen.
CROSS JOIN :
Es handelt sich um das kartesische Produkt der beiden beteiligten Tabellen. Das Ergebnis eines
CROSS JOIN
macht in den meisten Fällen keinen Sinn in den meisten Fällen keinen Sinn. Außerdem brauchen wir es überhaupt nicht (oder am wenigsten, um genau zu sein).SELF JOIN :
Es handelt sich nicht um eine andere Form von
JOIN
, sondern um einenJOIN
(INNER
,OUTER
, etc) einer Tabelle zu sich selbst.JOINs basierend auf Operatoren
Je nach dem Operator, der für eine
JOIN
-Klausel verwendet wird, kann es zwei Arten vonJOIN
s geben. Sie sindÄqui JOIN
Theta JOIN
Equi JOIN :
Unabhängig vom Typ des
JOIN
(INNER
,OUTER
, usw.), wenn wir NUR den Gleichheitsoperator (=) verwenden, dann sagen wir, dass derJOIN
einEQUI JOIN
ist.Theta JOIN :
Dies ist dasselbe wie
EQUI JOIN
, aber es erlaubt alle anderen Operatoren wie >, = usw.Viele betrachten sowohl
EQUI JOIN
als auch ThetaJOIN
als ähnlich zuINNER
,OUTER
Definition:
JOINS sind eine Möglichkeit, Daten abzufragen, die aus mehreren Tabellen gleichzeitig kombiniert werden.
Arten von JOINS:
In Bezug auf RDBMS gibt es 5 Arten von Joins:
Equi-Join: Kombiniert gemeinsame Datensätze aus zwei Tabellen auf der Grundlage einer Gleichheitsbedingung. Technisch gesehen erfolgt der Join durch die Verwendung des Gleichheitsoperators (=), um die Werte des Primärschlüssels einer Tabelle und die Werte des Fremdschlüssels einer anderen Tabelle zu vergleichen, so dass die Ergebnismenge gemeinsame (übereinstimmende) Datensätze aus beiden Tabellen enthält. Zur Implementierung siehe INNER-JOIN.
Natural-Join: Es handelt sich um eine erweiterte Version von Equi-Join, bei der SELECT Operation die doppelte Spalte auslässt. Für die Implementierung siehe INNER-JOIN
Non-Equi-Join: Es handelt sich um die Umkehrung des Equi-Join, bei dem die Verknüpfungsbedingung anders als der Gleichheitsoperator (=) verwendet wird, z. B. !=, =, >, < oder BETWEEN usw. Zur Implementierung siehe INNER-JOIN.
Self-Join:: Ein angepasstes Join-Verhalten, bei dem eine Tabelle mit sich selbst kombiniert wird; dies ist typischerweise für die Abfrage von selbstreferenzierenden Tabellen (oder Unary relationship entity) erforderlich. Für die Implementierung siehe INNER-JOINs.
Kartesisches Produkt: Es kombiniert alle Datensätze beider Tabellen ohne jegliche Bedingung. Technisch gesehen, gibt es die Ergebnismenge einer Abfrage ohne WHERE-Klausel zurück.
Gemäß SQL-Konzept und Weiterentwicklung gibt es 3 Arten von Joins und alle RDBMS-Joins können mit diesen Arten von Joins erreicht werden.
INNER-JOIN: Er führt (oder kombiniert) übereinstimmende Zeilen aus zwei Tabellen zusammen. Der Abgleich erfolgt auf der Grundlage gemeinsamer Spalten der Tabellen und ihrer Vergleichsoperation. Wenn die Bedingung auf Gleichheit basiert, wird: EQUI-JOIN durchgeführt, sonst Non-EQUI-Join.
OUTER-JOIN: Führt übereinstimmende Zeilen aus zwei Tabellen und nicht übereinstimmende Zeilen mit NULL-Werten zusammen (oder kombiniert sie). Allerdings kann die Auswahl der nicht übereinstimmenden Zeilen angepasst werden, z.B. durch die Auswahl der nicht übereinstimmenden Zeilen aus der ersten Tabelle oder der zweiten Tabelle nach Untertypen: LEFT OUTER JOIN und RIGHT OUTER JOIN.
2.1. LEFT OUTER JOIN (auch bekannt als LEFT-JOIN): Gibt übereinstimmende Zeilen aus zwei Tabellen und nicht übereinstimmende Zeilen nur aus der LINKEN Tabelle (d. h. der ersten Tabelle) zurück.
2.2. RIGHT Outer JOIN (auch bekannt als RIGHT-JOIN): Liefert übereinstimmende Zeilen aus zwei Tabellen und nicht übereinstimmende Zeilen nur aus der RECHTEN Tabelle.
2.3. FULL OUTER JOIN (auch bekannt als OUTER JOIN): Gibt übereinstimmende und nicht übereinstimmende Zeilen aus beiden Tabellen zurück.
CROSS-JOIN: Bei dieser Verknüpfung wird nicht zusammengeführt/kombiniert, sondern ein kartesisches Produkt erstellt.
![Bildbeschreibung hier eingeben][1] Hinweis: Self-JOIN kann je nach Anforderung entweder durch INNER-JOIN, OUTER-JOIN oder CROSS-JOIN erreicht werden, aber die Tabelle muss mit sich selbst verbunden werden.
[Für weitere Informationen:][2]
Beispiele:
1.1: INNER-JOIN: Implementierung des Equi-Join
1.2: INNER-JOIN: Natural-JOIN-Implementierung
1.3: INNER-JOIN mit NON-Equi-join-Implementierung