In diesem Artikel werfen wir einen genauen Blick auf SQL Server JOINs. Wir werden alle unterstützten SQL Server JOIN-Typen mit Syntax, visuellen Illustrationen und Beispielen überprüfen.
Wie wir alle wissen, sind Tabellendaten der Kern jeder SQL-Datenbank. Um es effektiv zu nutzen, müssen Datenbankadministratoren regelmäßig Datensätze aus mehreren Tabellen basierend auf bestimmten Bedingungen extrahieren. Und genau dafür sind SQL JOINs da.
JOIN ist eine SQL-Klausel zum Abrufen von die Daten aus zwei oder mehr Tabellen basierend auf logischen Beziehungen zwischen den Tabellen. Verknüpfungen geben an, wie SQL Server Daten aus einer Tabelle verwenden soll, um die Zeilen in einer anderen Tabelle auszuwählen.
Verschiedene Arten von JOINs in SQL
SQL Server unterstützt verschiedene Arten von JOINs, einschließlich INNER JOIN , SELBST BEITRETEN , CROSS JOIN und OUTER JOIN . Tatsächlich definiert jeder Join-Typ die Art und Weise, wie zwei Tabellen in einer Abfrage verknüpft sind. OUTER JOINS wiederum können in LEFT OUTER JOINS unterteilt werden , RIGHT OUTER JOINS und FULL OUTER JOINS .
Um besser zu demonstrieren, wie die JOINs funktionieren, werden wir zwei Tabellen erstellen.
CREATE TABLE AdventureWorks2019.dbo.users (
auid INT IDENTITY
,username VARCHAR(50) NOT NULL
,password VARCHAR(50) NOT NULL
,createdate DATETIME NOT NULL
,isActive TINYINT NOT NULL
);
CREATE TABLE AdventureWorks2019.dbo.userprofile (
apid INT NOT NULL
,auid INT NOT NULL
,firstname VARCHAR(50) NOT NULL
,lastname VARCHAR(50) NOT NULL
,email VARCHAR(100) NOT NULL
,phone VARCHAR(45) NOT NULL
);
Als nächstes müssen wir die Daten in die erstellten Tabellen einfügen.
USE AdventureWorks2019
GO
Insert into dbo.users
(auid, username,password, createdate, isActive)
values
(1,'admin','pswrd123', GETDATE(), 1);
Insert into dbo.userprofile
(apid, auid, firstname, lastname, email, phone)
values
(1,1,'Jack', 'Wolf', '[email protected]','600075764216');
Insert into dbo.users
(auid,username,password, createdate, isActive)
values
(2, 'admin1','pass506', GETDATE(), 1);
Insert into dbo.userprofile
(apid, auid, firstname, lastname, email, phone)
values
(2, 3, 'Tom', 'Collins', '[email protected]','878511311054');
Insert into dbo.users
(auid, username,password, createdate, isActive)
values
(4,'fox12','[email protected]', GETDATE(), 1);
Insert into userprofile
(apid, auid, firstname, lastname, email, phone)
values
(4,5,'Bill', 'Fonskin', '[email protected]','450985764216');
Insert into dbo.users
(auid,username,password, createdate, isActive)
values
(6, 'lexus1267','98hnfRT6', GETDATE(), 1);
Insert into dbo.userprofile
(apid, auid, firstname, lastname, email, phone)
values
(7, 7, 'John', 'Hopkins', '[email protected]','878511311054');
SQL INNER JOIN
Die INNER JOIN-Anweisung gibt Datensätze zurück, die übereinstimmende Werte in beiden Tabellen haben.
Die Syntax der SQL INNER JOIN-Klausel lautet wie folgt:
SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;
SQL OUTER JOINs
Im Gegensatz zu INNER JOIN-Klauseln geben OUTER JOINs nicht nur übereinstimmende Datensätze zurück, sondern auch nicht übereinstimmende. Falls es nicht übereinstimmende Zeilen in einer verknüpften Tabelle gibt, werden die NULL-Werte für sie angezeigt.
Es gibt die folgenden zwei Arten von OUTER JOIN in SQL Server:SQL LEFT JOIN und SQL RIGHT JOIN. Sehen wir uns jeden von ihnen genauer an.
SQL-LINKSVERKNÜPFUNG
SQL LEFT JOIN gibt alle Datensätze aus der linken Tabelle (Tabelle A) und die übereinstimmenden Datensätze aus der rechten Tabelle (Tabelle B) zurück. Das Ergebnis ist 0 Datensätze von der rechten Seite, wenn es keine Übereinstimmung gibt.
Die Syntax der SQL LEFT JOIN-Klausel lautet wie folgt:
SELECT column_name(s)
FROM tableA
LEFT JOIN tableB
ON tableA.column_name = tableB.column_name;
SQL-RIGHT JOIN
Das Schlüsselwort RIGHT JOIN gibt alle Datensätze aus der rechten Tabelle (Tabelle2) und die übereinstimmenden Datensätze aus der linken Tabelle (Tabelle1) zurück. Das Ergebnis ist 0 Datensätze von der linken Seite, wenn es keine Übereinstimmung gibt.
Die Syntax der SQL RIGHT JOIN-Klausel lautet wie folgt:
SELECT column_name(s)
FROM tableA
RIGHT JOIN tableB
ON tableA.column_name = tableB.column_name;
SQL FULL OUTER JOIN
Der FULL OUTER JOIN gibt alle Datensätze zurück, wenn es eine Übereinstimmung in den linken (Tabelle A) oder rechten (Tabelle B) Tabellendatensätzen gibt.
Die Syntax der SQL FULL OUTER JOIN-Klausel lautet wie folgt:
SELECT column_name(s)
FROM tableA
FULL OUTER JOIN tableB
ON tableA.column_name = tableB.column_name
WHERE condition;
SQL CROSS JOIN
SQL CROSS JOIN, auch bekannt als kartesischer JOIN, ruft alle Kombinationen von Zeilen aus jeder Tabelle ab. Bei dieser Art von JOIN wird die Ergebnismenge zurückgegeben, indem jede Zeile der Tabelle A mit allen Zeilen der Tabelle B multipliziert wird, wenn keine zusätzliche Bedingung eingeführt wird.
Um CROSS JOINs besser zu verstehen, werfen wir einen Blick auf das Venn-Diagramm unten.
Die Syntax des SQL CROSS JOIN lautet wie folgt:
SELECT *
FROM tableA
CROSS JOIN tableB;
SQL Self JOIN
Ein Self-Join ist ein regulärer JOIN, aber die Tabelle ist mit sich selbst verbunden. Das bedeutet, dass jede Zeile der Tabelle mit sich selbst und mit jeder anderen Zeile der Tabelle kombiniert wird.
Die Syntax des SQL Self JOIN lautet wie folgt:
SELECT column_name(s)
FROM table1 T1, table1 T2
WHERE condition;
Schlussfolgerung
Das Wissen und die Erfahrung in der Verwendung von SQL JOIN-Klauseln sind wesentliche Fähigkeiten eines jeden DBA oder Analysten. Mit seiner herausragenden Code Completion-Funktionalität ist dbForge Studio für SQL Server kann Ihnen Zeit und Mühe beim Schreiben selbst der komplexesten JOIN-Klauseln ersparen. Sie müssen nicht Hunderte von Spaltennamen oder Aliasnamen berücksichtigen, dbForge Studio for SQL fordert eine vollständige SQL-JOIN-Klausel auf. Die umfangreiche Funktionalität des Tools macht das Entwerfen komplexer SQL-Abfragen und das Verwalten von JOIN-Bedingungen schnell, einfach und bequem.