SQL JOIN und verschiedene Arten von JOINs

Was ist ein SQL JOIN und was sind die verschiedenen Typen?

Lösung

Was ist SQL JOIN?

SQL JOIN" ist eine Methode zum Abrufen von Daten aus zwei oder mehr Datenbanktabellen.

Was sind die verschiedenen SQL JOINs?

Es gibt insgesamt fünf JOINs. 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
  1. 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 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).

  1. 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 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`.
  1. NATÜRLICHER JOIN :

Sie basiert auf den beiden Bedingungen :

  1. Der JOIN wird für alle Spalten mit dem gleichen Namen auf Gleichheit durchgeführt.
  2. Entfernt doppelte Spalten aus dem Ergebnis.

Dies scheint eher theoretischer Natur zu sein und wird daher (wahrscheinlich) von den meisten DBMS nicht einmal die Mühe, dies zu unterstützen.

  1. 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).

  1. SELF JOIN :

Es handelt sich nicht um eine andere Form von JOIN, sondern um einen JOIN (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 von JOINs geben. Sie sind

  1. Äqui JOIN

  2. Theta JOIN

  3. Equi 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.

  1. Theta JOIN :

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. Denn INNER JOIN, OUTER JOIN usw. sind alle verbunden mit den Tabellen und ihren Daten, während EQUI JOIN und THETA 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ür NATURAL JOIN erwähnt habe. Wir müssen jedoch nicht nur auf NATURAL JOIN allein beschränken. INNER JOINs, OUTER JOINs usw. könnten auch ein EQUI JOIN sein.

Kommentare (3)

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.

  1. 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.

  2. 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.

  3. 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

SELECT  *
FROM Table1 A 
 INNER JOIN Table2 B ON A. =B.;

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 
Kommentare (2)