Загрузка...

SQL DRL, Join

#Vorlesung #Datenmanagement und #Datenbanken an der #Technischen #Hochschule #Mannheim

SQL DRL, Join

In diesem Kapitel geht es um die Data Retrieval Language (DRL) und insbesondere darum, wie man Daten aus mehreren Tabellen durch sogenannte Joins abfragen kann. Relationale Datenbanksysteme legen Informationen aus Gründen der Redundanzvermeidung und besseren Strukturierung auf verschiedene Tabellen ab. Um diese logisch zusammenhängenden, aber physisch getrennten Daten zu verbinden, werden Fremdschlüssel eingesetzt. Sobald eine Abfrage Daten aus mehreren Tabellen benötigt, kommt ein Join zum Einsatz, der Datensätze mit passenden Werten wieder zusammenführt.

Der INNER Join ist die gebräuchlichste Join-Variante. Er verbindet zwei Tabellen über eine festgelegte Bedingung – meist eine ID und einen Fremdschlüssel – und gibt nur diejenigen Datensätze zurück, bei denen es auf beiden Seiten einen Treffer gibt. Ein Beispiel ist die Verbindung der Tabelle „rechnungen“ mit „kreditkarten“ über die Spalte „kartennummer“. Nur wenn eine Rechnung eine Kartenzahlung enthält und es einen passenden Eintrag in der Kreditkartentabelle gibt, erscheint der Datensatz im Ergebnis. So werden Redundanzen vermieden und Daten konsistent gehalten.

Beim INNER Join erscheinen nur diejenigen Datensätze, für die es in beiden Tabellen eine Übereinstimmung gibt. Enthält eine Rechnung keine Kartennummer oder eine Kreditkarte ist keiner Rechnung zugeordnet, werden diese Einträge ausgeschlossen. Ist ein Spaltenname in beiden Tabellen vorhanden, muss man bei der Spaltenauswahl den Tabellennamen angeben, etwa rechnungen.kartennummer oder kreditkarten.kartennummer, um Mehrdeutigkeiten zu vermeiden.

Neben dem INNER Join gibt es den LEFT OUTER Join. Hier werden alle Datensätze der linken Tabelle (zum Beispiel „rechnungen“) angezeigt, auch wenn es keine passende Zuordnung in der rechten Tabelle („kreditkarten“) gibt. Die fehlenden Werte aus der rechten Tabelle werden dann mit NULL aufgefüllt. Analog funktioniert der RIGHT OUTER Join, der alle Einträge der rechten Tabelle und die passenden der linken anzeigt. Gibt es keinen Treffer in der linken Tabelle, werden die fehlenden Werte dort mit NULL aufgefüllt.

Ein FULL OUTER Join gibt alle Datensätze aus beiden Tabellen zurück, unabhängig davon, ob es eine Zuordnung gibt oder nicht. Dabei werden fehlende Werte jeweils mit NULL ergänzt. MariaDB unterstützt diesen Join-Typ allerdings nicht direkt. Man erreicht das gleiche Ergebnis, indem man die Ergebnisse eines LEFT OUTER Joins und eines RIGHT OUTER Joins per UNION kombiniert. Will man nur die Datensätze sehen, die in der einen oder anderen Tabelle, aber nicht in beiden vorkommen („exclusion“), filtert man das kombinierte Ergebnis mit einer WHERE-Klausel.

Eine weitere Join-Variante ist der CROSS Join, der das sogenannte kartesische Produkt erzeugt: Jede Zeile der ersten Tabelle wird mit jeder Zeile der zweiten Tabelle kombiniert. Das Ergebnis enthält alle möglichen Paarungen, was sehr große Ergebnismengen erzeugen kann und deshalb mit Bedacht eingesetzt werden sollte.

Zusammenfassend bieten Joins in SQL die Möglichkeit, logisch verknüpfte Daten über mehrere Tabellen hinweg flexibel und effizient abzufragen. Sie sind essenziell, um die Vorteile der Normalisierung voll zu nutzen und komplexe Datenstrukturen praxisnah auszuwerten.

Видео SQL DRL, Join канала Informatik-Grundlagen mit Frank Dopatka
Страницу в закладки Мои закладки
Все заметки Новая заметка Страницу в заметки

На информационно-развлекательном портале SALDA.WS применяются cookie-файлы. Нажимая кнопку Принять, вы подтверждаете свое согласие на их использование.

Об использовании CookiesПринять