SQLShack (Deutsch)

Dieser Artikel bietet eine vollständige Übersicht mit Beispielen des SQL Outer-Joins, einschließlich des vollständigen, rechten und linken äußeren Joins, sowie der Vereinigung der linken und rechten äußeren SQL-Joins.

Es ist wichtig, den Prozess zu verstehen, um die Daten aus dem Vielfachen abzurufen Tabellen. Ein Anfänger hat möglicherweise nicht die Idee von Joins in SQL Server. In diesem Tipp geben wir einen Überblick über die SQL-Verknüpfungen, lernen SQL OUTER JOIN zusammen mit seiner Syntax, Beispielen und Anwendungsfällen.

In einem relationalen Datenbanksystem empfiehlt es sich, die Prinzipien zu befolgen der Normalisierung, bei der wir im Grunde genommen große Tabellen in kleinere Tabellen aufteilen. In einer select-Anweisung können wir die Daten mithilfe von Joins aus diesen Tabellen abrufen. Wir können die Tabellen verbinden und die erforderlichen Felder aus diesen Tabellen in der Ergebnismenge abrufen. Diese Tabellen sollten ein gemeinsames Feld haben, um miteinander in Beziehung zu treten. Möglicherweise sind Daten auf mehrere Datenbanken verteilt, und manchmal handelt es sich auch um eine sehr komplexe Struktur. Mit Joins können wir die Daten aus mehreren Tabellen und Datenbanken auf benutzerfreundliche Weise zusammenfügen und diese Daten in der Anwendung darstellen.

Wir können einen SQL JOIN mithilfe des folgenden Bilds

darstellen

In SQL Server können viele SQL-Join-Typen verwendet werden. In der folgenden Abbildung sehen Sie die SQL Joins-Kategorien

. Weitere Informationen finden Sie im nächsten Abschnitt unter

Übersicht über SQL OUTER JOIN

Wir verwenden SQL OUTER JOIN, um Zeilen zwischen Tabellen abzugleichen. Möglicherweise möchten wir auch Übereinstimmungszeilen zusammen mit nicht übereinstimmenden Zeilen aus einer oder beiden Tabellen erhalten. Wir haben die folgenden drei Arten von SQL OUTER JOINS:

  1. SQL Full Outer Join
  2. SQL Left Outer Join
  3. SQL Right Outer Join

Lassen Sie uns jeden der SQL Outer Join anhand von Beispielen untersuchen.

SQL Full Outer Join

In SQL Full Outer Join sind alle Zeilen aus beiden Tabellen enthalten . Wenn nicht übereinstimmende Zeilen vorhanden sind, werden NULL-Werte für diese angezeigt.

Wir können anhand von Beispielen effizient verstehen. Erstellen Sie eine Beispieltabelle und fügen Sie Daten ein.

Sie können auf das folgende Datenmodell beider Tabellen verweisen.

Fügen Sie Daten mit dem folgenden Skript in die Employee-Tabelle ein.

Fügen Sie Daten in die Departments-Tabelle ein

Wir können eine logische Beziehung zwischen zwei Tabellen mithilfe eines Venn-Diagramms darstellen. In einem Venn-Diagramm sind mehrere überlappende Kreise enthalten, und jeder Kreis repräsentiert eine Entität oder Tabelle. Der gemeinsame Bereich oder Überlappungsbereich im Venn-Diagramm repräsentiert die gemeinsamen Werte zwischen beiden Tabellen.

Im folgenden Screenshot haben wir beispielsweise zwei überlappende Kreise. Jeder Kreis sendet erneut eine Tabelle (Mitarbeiter und Abteilungen). Lassen Sie uns den FULL Outer Join anhand des folgenden Beispiels verstehen.

In beiden Tabellen haben wir ein gemeinsames Feld (EmpID). Daher können wir die Tabelle mit dieser Spalte verbinden. In der folgenden Abfrage haben wir die FULL OUTER JOIN zwischen Abteilungen und Employee-Tabelle in der EMPID-Spalte beider Tabellen definiert.

1
2
3

SELECT *
FROM Mitarbeiter
FULL OUTER JOIN Abteilungen ON Employee.EmpID = Departments.EmpID;

SQL Full Outer Join gibt die folgenden Zeilen in einer Ausgabe an.

  • Übereinstimmende Zeilen zwischen beiden Tabellen
  • Nicht übereinstimmende Zeilen aus beiden Tabellen (NULL-Werte) )

Führen Sie diese Abfrage aus, um die Ausgabe der Full Outer Join-Abfrage zurückzugeben. Wir erhalten die folgende Ausgabe.

Wir können auch einige Datensätze mit NULL-Werten sehen. Lassen Sie uns dies anhand eines Venn-Diagramms besser verstehen.

Im folgenden Screenshot sehen Sie die folgenden Informationen:

  • EmpID 1, 2,3,4,5 , 6,10 ist sowohl in der Mitarbeiter- als auch in der Abteilungstabelle vorhanden. In der Ausgabe der Full Outer Join-Abfrage erhalten wir alle diese Zeilen mit Daten aus beiden Tabellen.
  • EmpID 7, 8, 9 ist in der Employee-Tabelle vorhanden, jedoch nicht in der Departments-Tabelle. Die Abteilungsübersicht enthält keine übereinstimmenden Zeilen. deshalb; Wir erhalten NULL-Werte für diese Datensätze.

Nun führen wir zu Demozwecken einen weiteren Datensatz in die Abteilungs-Tabellen ein . In diese Abfrage fügen wir EmpID 11 ein, die in der Employee-Tabelle nicht vorhanden ist.

Führen Sie die SQL Full Outer Join-Abfrage erneut aus. In der folgenden Abbildung erhalten Sie eine zusätzliche Zeile mit NULL-Werten. Wir haben keine übereinstimmende Zeile für EmpID 11 in der Mitarbeitertabelle.Aus diesem Grund erhalten wir in der Ausgabe NULL-Werte dafür.

Zusammenfassend können wir den SQL Full Outer Join mithilfe des folgenden Venn-Diagramms darstellen. Wir erhalten, was in dem hervorgehobenen Bereich in der Ausgabe von Full Outer Join dargestellt ist.

SQL FULL OUTER JOIN- und WHERE-Klausel

Wir können eine WHERE-Klausel mit einem SQL FULL OUTER JOIN hinzufügen, um Zeilen ohne übereinstimmende Daten zwischen den beiden Join-Tabellen abzurufen.

In der folgenden Abfrage fügen wir eine where-Klausel hinzu Nur Datensätze mit NULL-Werten anzeigen.

1
2
3
4
5

SELECT *
FROM Employee
FULL OUTER JOIN Abteilungen ON Employee.EmpID = Departments.EmpID
WHERE Employee.EmpID ist NULL
ODER Departments.EmpID ist NULL;

Führen Sie diesen Befehl aus und zeigen Sie die Ausgabe an. Es werden nur Zeilen zurückgegeben, die weder in der Mitarbeiter- noch in der Abteilungstabelle übereinstimmen.

SQL LEFT OUTER JOIN

In einem SQL Left Outer Join erhalten wir folgende Zeilen in unserer Ausgabe.

  • Gibt die Ausgabe der übereinstimmenden Zeile zwischen beiden Tabellen an.
  • Wenn keine Datensätze übereinstimmen In der linken Tabelle werden auch die Datensätze mit NULL-Werten angezeigt.

Führen Sie den folgenden Code aus, um die Ausgabe von SQL LEFT OUTER JOIN zurückzugeben.

1
2
3

SELECT *
FROM Employee
LEFT OUTER JOIN Abteilungen ON Employee.EmpID = Departments.EmpID

In der folgenden Abbildung sehen Sie, dass wir NULL-Werte für EmpID 7,8 und 9 haben. Diese EmpID ist auf der rechten Seite nicht vorhanden Abteilungstabelle.

Wir müssen die Position der Tabellenplatzierung in der Join-Anweisung notieren. Derzeit haben wir eine Mitarbeitertabelle auf der linken Seite und eine Abteilungstabelle auf der rechten Seite.

Lassen Sie uns die Abfrage neu schreiben und die Position der Tabellen in der Abfrage vertauschen. In dieser Abfrage befindet sich die Abteilungstabelle an der linken Position. Daher sollte der linke äußere Join die Werte für diese Tabelle überprüfen und im Falle einer Nichtübereinstimmung einen NULL-Wert zurückgeben.

Im folgenden Screenshot können Sie dies tun Sehen Sie, dass nur ein NULL-Wert für EmpID 11 vorliegt. Dies liegt daran, dass EmpID 11 in der Employee-Tabelle nicht verfügbar ist.

As Als Zusammenfassung können wir SQL Left Outer Join mithilfe des folgenden Venn-Diagramms darstellen. Wir erhalten den hervorgehobenen Bereich in der Ausgabe von SQL Left Outer Join.

SQL Right OUTER JOIN

In SQL Right Outer Join erhalten wir die folgenden Zeilen in unserer Ausgabe.

  • Gibt die Ausgabe der übereinstimmenden Zeile zwischen den beiden Tabellen an.
  • Wenn keine Datensätze übereinstimmen In der rechten Tabelle werden auch die Datensätze mit NULL-Werten angezeigt.

Führen Sie die folgende Abfrage aus, um die Ausgabe von Right Outer Join

1
2
3

SELECT *
FROM Employee
RIGHT OUTER JOIN Abteilungen ON Employee.EmpID = Departments.EmpID

In der folgenden Abbildung sehen Sie, dass alle übereinstimmenden Zeilen zusammen mit einer Zeile mit NULL-Werten angezeigt werden. Die Nullwertzeile hat EmpID 11, da sie in der Employee-Tabelle nicht vorhanden ist. Sie können auch feststellen, dass sich die Position der Abteilungstabelle in Join an der richtigen Position befindet. Aus diesem Grund erhalten wir keine Werte aus der Employee-Tabelle (linke Position), die nicht mit der Department-Tabelle (rechte Seite) übereinstimmen.

Wie bereits erwähnt, ist die Tabellenposition in der JOIN-Anweisung wichtig. Wenn wir die Tabellenpositionen ändern, erhalten wir unterschiedliche Ausgaben. In der folgenden Abfrage haben wir die Abteilungstabelle (links) und die Mitarbeitertabelle (rechts).

1
2
3
4

SELECT *
VON Abteilungen
RECHTS AUSSEN MITARBEITER Mitarbeiter auf Abteilungen.EmpID = Mitarbeiter.EmpID

Sie können den Unterschied in der rechten äußeren Verknüpfung feststellen, nachdem Sie die Tabellenpositionen in der obigen Abfrage ausgetauscht haben.

Zusammenfassend können wir den SQL Right Outer Join mithilfe des folgenden Venn-Diagramms darstellen. In der Ausgabe von SQL Right Outer Join wird ein hervorgehobener Bereich angezeigt.

Die Vereinigung zwischen SQL Left Outer Join und SQL Right Outer Join

In den vorherigen Beispielen haben wir den SQL Left Outer Join und den SQL Right Outer Join anhand verschiedener Beispiele untersucht. Wir können das Ergebnis von SQL Left Outer Join und SQL Right Outer Join vereinen. Es gibt die Ausgabe von SQL Full Outer Join aus.

Führen Sie die folgende Abfrage als Alternative zu SQL Full Outer Join aus.

1
2
3
4
5
6
7

SELECT *
FROM Employee
LEFT OUTER JOIN Abteilungen EIN Employee.EmpID = Departments.EmpID
UNION ALL
SELECT *
FROM Employee
RIGHT OUTER JOIN Abteilungen ON Employee.EmpID = Departments.EmpID

In der folgenden Ausgabe erhalten wir alle Übereinstimmende Datensätze, nicht übereinstimmende Datensätze aus der linken Tabelle und nicht übereinstimmende Datensätze aus der rechten Tabelle. Es ähnelt einer Ausgabe von SQL Full Outer Join.

Schlussfolgerung

In diesem Artikel Wir haben den SQL Outer Join und seine Typen zusammen mit Beispielen untersucht. Ich hoffe, Sie fanden diesen Artikel hilfreich. Fühlen Sie sich frei, Feedback in den Kommentaren unten zu geben.

  • Autor
  • Letzte Beiträge
Als MCSA-zertifizierter und Microsoft-zertifizierter Trainer in Gurgaon, Indien, mit 13 Jahren Erfahrung, arbeitet Rajendra für eine Vielzahl großer Unternehmen, die sich auf Strategien und Implementierung zur Leistungsoptimierung, Überwachung, Hochverfügbarkeit sowie Notfallwiederherstellung konzentrieren. Er ist Autor von Hunderten maßgeblicher Artikel zu SQL Server, Azure, MySQL, Linux, Power BI, Leistungsoptimierung, AWS / Amazon RDS, Git und verwandten Technologien, die bisher von über 10 Millionen Lesern angesehen wurden.
Mit seiner 50-teiligen Serie zu SQL Server Always On Availability Groups ist er der Schöpfer einer der größten kostenlosen Online-Artikelsammlungen zu einem einzigen Thema. Aufgrund seines Beitrags zur SQL Server-Community wurde er mit verschiedenen Preisen ausgezeichnet, darunter der renommierte „Beste Autor des Jahres“ in den Jahren 2020 und 2021 bei SQLShack.
Raj ist immer an neuen Herausforderungen interessiert, wenn Sie also Beratung benötigen Hilfe zu jedem Thema, das in seinen Schriften behandelt wird, kann unter [email protected] erreicht werden.
Alle Beiträge von Rajendra Gupta anzeigen

Neueste Beiträge von Rajendra Gupta (alle anzeigen)
  • Sitzungszeitlimits in SQL Server Immer verfügbar Gruppen – 8. Februar 2021
  • Durchführen kleinerer und größerer Versionsaktualisierungen für AWS RDS SQL Server – 29. Januar 2021
  • Bereitstellen von AWS RDS PostgreSQL-Instanzen – 27. Januar 2021

Write a Comment

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.