Was ist ein SQL JOIN
und was sind die verschiedenen Typen?
SQL JOIN
?SQL JOIN" ist eine Methode zum Abrufen von Daten aus zwei oder mehr Datenbanktabellen.
SQL JOIN
s?Es gibt insgesamt fünf JOIN
s. Sie sind:
1. JOIN or INNER JOIN
2. OUTER JOIN
2.1 LEFT OUTER JOIN or LEFT JOIN
2.2 RIGHT OUTER JOIN or RIGHT JOIN
2.3 FULL OUTER JOIN or FULL JOIN
3. NATURAL JOIN
4. CROSS JOIN
5. SELF 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 andere JOIN
-Schlüsselwörter (wie INNER
, OUTER
, LEFT
, usw.) ein INNER JOIN
ist. Mit anderen Worten, JOIN
ist
ein syntaktischer Zucker für INNER JOIN
(siehe: https://stackoverflow.com/questions/565620/difference-between-join-and-inner-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
kombiniert LEFT OUTER JOIN
und RIGHT 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.
Note that `OUTER JOIN` is a loosened form of `INNER 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.
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).
Es handelt sich nicht um eine andere Form von JOIN
, sondern um einen JOIN
(INNER
, OUTER
, etc) einer Tabelle zu sich selbst.
Je nach dem Operator, der für eine JOIN
-Klausel verwendet wird, kann es zwei Arten von JOIN
s geben. Sie sind
Äqui JOIN
Theta JOIN
Unabhängig vom Typ des JOIN
(INNER
, OUTER
, usw.), wenn wir NUR den Gleichheitsoperator (=) verwenden, dann sagen wir, dass
der JOIN
ein EQUI JOIN
ist.
Dies ist dasselbe wie EQUI JOIN
, aber es erlaubt alle anderen Operatoren wie >, <, >= usw.
Viele betrachten sowohl EQUI JOIN
als auch Theta JOIN
als ähnlich zu INNER
, OUTER
usw.
JOIN
. Aber ich glaube fest daran, dass dies ein Fehler ist und die Ideen vage. DennINNER JOIN
,OUTER JOIN
usw. sind alle verbunden mit den Tabellen und ihren Daten, währendEQUI JOIN
undTHETA JOIN
nur mit den Operatoren verbunden sind, die wir in ersteren verwenden.Auch hier gibt es viele, die den
NATURAL JOIN
als eine Art "eigentümlichen"EQUI JOIN
. In der Tat ist es wahr, wegen der ersten Bedingung, die ich fürNATURAL JOIN
erwähnt habe. Wir müssen jedoch nicht nur aufNATURAL JOIN
allein beschränken.INNER JOIN
s,OUTER JOIN
s usw. könnten auch einEQUI JOIN
sein.
Definition:
JOINS sind eine Möglichkeit, Daten abzufragen, die aus mehreren Tabellen gleichzeitig kombiniert werden.
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.
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.
1.1: INNER-JOIN: Implementierung des Equi-Join
SELECT *
FROM Table1 A
INNER JOIN Table2 B ON A.<Primary-Key> =B.<Foreign-Key>;
1.2: INNER-JOIN: Natural-JOIN-Implementierung
Select A.*, B.Col1, B.Col2 --But no B.ForeignKeyColumn in Select
FROM Table1 A
INNER JOIN Table2 B On A.Pk = B.Fk;
1.3: INNER-JOIN mit NON-Equi-join-Implementierung
Select *
FROM Table1 A INNER JOIN Table2 B On A.Pk <= B.Fk;
1.4: INNER-JOIN mit SELF-JOIN
Select *
FROM Table1 A1 INNER JOIN Table1 A2 On A1.Pk = A2.Fk;
2.1: OUTER JOIN (vollständige äußere Verknüpfung)
Select *
FROM Table1 A FULL OUTER JOIN Table2 B On A.Pk = B.Fk;
2.2: LEFT JOIN
Select *
FROM Table1 A LEFT OUTER JOIN Table2 B On A.Pk = B.Fk;
2.3: RIGHT JOIN
Select *
FROM Table1 A RIGHT OUTER JOIN Table2 B On A.Pk = B.Fk;
3.1: CROSS JOIN
Select *
FROM TableA CROSS JOIN TableB;
3.2: CROSS JOIN-Self JOIN
Select *
FROM Table1 A1 CROSS JOIN Table1 A2;
//OR//
Select *
FROM Table1 A1,Table1 A2;