Database
 sql >> Datenbank >  >> RDS >> Database

Tutorial zu SQL JOINs mit Beispielen

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.