Sitzungsnavigation: keine Veranstaltung ausgewählt. (Veranstaltung wählen.)

SQL – JOINS (ZONG Yuzhao)




1SOL JOINS wird verwendet, um Zeilen aus zwei oder mehr Tabellen zu kombinieren.

2Nehmen wir hier "htp_token" als Tabelle A und "stts" als Tabelle B hier.

1. INNER JOIN

3zur Datensätze aus zwei Tabellen zurückgreifen, die die Verknüpfungsbedingungen erfüllen (A∩B)

4
SELECT htp_tokens.token, stts.description
FROM htp_tokens
INNER JOIN stts
ON htp_tokens.wortart = stts.pos

2. LEFT JOIN

LEFT JOIN wird verwendet, um Daten aus mehreren Tabellen zu extrahieren.

LEFT JOIN unterscheidet sich von INNER JOIN darin, dass LEFT JOIN alle Datensätze der linken Tabelle (A) zurückgibt, auch wenn in der rechten Tabelle (B) keine übereinstimmenden Datensätze vorhanden sind.

Das Schlüsselwort LEFT JOIN gibt alle Zeilen aus der linken Tabelle (A) zurück, auch wenn in der rechten Tabelle (B) keine Übereinstimmung vorhanden ist. Wenn in der rechten Tabelle keine Übereinstimmung vorhanden ist, ist das Ergebnis NULL.

In mancher Datenbanksystemen wird LEFT JOIN als LEFT OUTER JOIN geschrieben.

SELECT htp_tokens.token, stts.examples
FROM htp_tokens
LEFT JOIN stts
ON htp_tokens.wortart = stts.pos

3. RIGHT JOIN

Ähnlich wie LEFT JOIN, aber mit umgekehrtem Verhalten: RIGHT JOIN gibt alle Datensätze der rechten Tabelle zurück, auch wenn in der linken Tabelle keine übereinstimmenden Datensätze vorhanden sind.

Das Schlüsselwort RIGHT JOIN gibt alle Zeilen aus der rechten Tabelle (table2) zurück, auch wenn in der linken Tabelle (table1) keine Übereinstimmung vorhanden ist. Wenn in der linken Tabelle keine Übereinstimmung vorhanden ist, ist das Ergebnis NULL.

SELECT htp_tokens.token, stts.examples
FROM htp_tokens
RIGHT JOIN stts
ON htp_tokens.wortart = stts.pos

4. FULL JOIN

FUUL JOIN wird verwendet, um alle Datensätze aus zwei Tabellen beizubehalten, auch wenn eine der beiden Tabellen keine Übereinstimmungen aufweist. (A∪B)

Das Ergebnis von FULL JOIN umfasst die Datensätze, die die Bedingungen in beiden Tabellen erfüllen (Schnittmenge), sowie die Datensätze, die die Bedingungen nicht erfüllen (nicht-Schnittmenge). Wenn ein Datensatz in einer Tabelle vorhanden ist, aber in der anderen Tabelle keine Übereinstimmung aufweist, wird die fehlende Spalte mit NULL gefüllt.

Das Schlüsselwort FULL  JOIN gibt Zeilen zurück, solange in einer der beiden Tabellen (A oder B) eine Übereinstimmung vorhanden ist.

SELECT htp_tokens.token, htp_tokens.tokennr, stts.description, stts.examples
FROM htp_tokens
FULL JOIN stts
ON htp_tokens.wortart = stts.pos

oder (wenn das DBMS (z.B. MySQL) FULL JOIN nicht unterstützen, kann man UNION verwenden, um LEFT JOIN und RIGHT JOIN zu kombinieren und einen ähnlichen Effekt zu erzielen)

SELECT htp_tokens.token, htp_tokens.tokennr, stts.description, stts.examples
FROM htp_tokens
LEFT JOIN stts ON htp_tokens.wortart = stts.pos
UNION
SELECT htp_tokens.token, htp_tokens.tokennr, stts.description, stts.examples
FROM htp_tokens
RIGHT JOIN stts ON htp_tokens.wortart = stts.pos

5. UNION

UNION wird verwendet, um die Ergebnismengen von zwei oder mehr SELECT-Anweisungen zu kombinieren. Er kann Daten aus mehreren Tabellen auswählen und die Ergebnismengen zu einer Ergebnismenge zusammenführen. Bei der Verwendung von UNION muss jede SELECT-Anweisung die gleiche Anzahl von Spalten haben, und die entsprechenden Spalten müssen ähnliche Datentypen aufweisen.

SELECT column1, column2, ...
FROM table1
UNION
SELECT column1, column2, ...
FROM table2

UNION entfernt standardmäßig doppelte Datensätze. Wenn alle doppelten Datensätze beibehalten werden sollen, kann UNION ALL verwendet werden.

SELECT column1, column2, ...
FROM table1
UNION ALL
SELECT column1, column2, ...
FROM table2

6. CROSS JOIN

CROSS JOIN (auch als kartesisches Produkt bekannt) wird verwendet, um alle möglichen Kombinationen aus zwei Tabellen zurückzugeben. Es kombiniert jede Zeile der linken Tabelle mit jeder Zeile der rechten Tabelle und erzeugt eine Ergebnismenge, die alle Kombinationen enthält.

SELECT htp_tokens.token, htp_tokens.tokennr, stts.description, stts.kategorie
FROM htp_tokens
CROSS JOIN stts

7. SELF JOIN

SELF JOIN ist eine Verknüpfung, bei der eine Tabelle mit sich selbst verbunden wird. Es wird häufig verwendet, um Zeilen innerhalb der Tabelle zu vergleichen oder um verwandte Daten in derselben Tabelle zu finden. z. B. möchte ich in Tabelle "htp_tokens" nach token suchen, deren Wortart NN ist: 

SELECT a.token, a.tokennr, a.wortart
FROM htp_tokens a
JOIN htp_tokens b ON a.tokennr = b.tokennr
WHERE a.wortart = 'NN'

Schreibe einen Kommentar